GNU/Linux >> Linux Esercitazione >  >> Ubuntu

Come installare Django con PostgreSQL e Nginx su Ubuntu 16.04

Django è un framework web open source gratuito basato su Python. È un framework Web Python di alto livello con un modello di architettura MVT (Model-View-Template). Django è gestito dalla Django Software Foundation (DSF). Il framework web Django è veloce, aiuta gli sviluppatori a creare rapidamente applicazioni (RAD).

In questo tutorial, ti mostrerò come installare il framework web Django e configurarlo per utilizzare un database PostgreSQL per lo sviluppo. Eseguiremo Nginx come proxy inverso per il framework Web Django per motivi di velocità e sicurezza. Django verrà eseguito sotto il server HTTP WSGI Python "Gunicorn", gestiremo e controlleremo "Gunicorn" con "Supervisor" come sistema di controllo del processo.

Prerequisito

  • Ubuntu 16.04
  • privilegi radice

Passaggio 1:installa Django, Virtualenv e Gunicorn

Userò python3 come versione predefinita di Python per il sistema. Installeremo python3 e pip3 su Ubuntu 16.04. Pip3 è un sistema di gestione dei pacchetti per installare e gestire i pacchetti software scritti in python.

Collegati al tuo server come utente root sul terminale o tramite SSH (come faccio qui) e aggiorna il repository di Ubuntu:

ssh [email protected]
sudo apt-get update

Installa python3 e pip3 con questo comando apt:

sudo apt-get install python3-pip python3-dev

Crea un nuovo collegamento simbolico per il comando pip3 per poterlo utilizzare come "pip" anziché "pip3" e aggiornalo:

ln -s /usr/bin/pip3 /usr/bin/pip
pip install --upgrade pip

Quindi, installa i pacchetti Python richiesti con il comando pip. Installerò Django, Virtualenv e Gunicorn qui:

pip install django virtualenv gunicorn

Passaggio 2:installazione e configurazione di PostgreSQL

Useremo PostgreSQL come database per il nostro progetto Django. Installa PostgreSQL con questo comando apt.

sudo apt-get install postgresql postgresql-contrib libpq-dev

Al termine dell'installazione, installa il nuovo pacchetto python chiamato 'psycopg2' con pip. È l'adattatore del database python-postgreSQL.

pip install psycopg2

Ora accedi all'utente postgres e apri la shell PostgreSQL con il comando psql:

su - postgres
psql

Imposta una nuova password per l'utente postgres con il comando seguente:

\password postgres
Enter new password:

Quindi, crea un nuovo database e un nuovo utente/ruolo per il progetto django in PostgreSQL. Creerò nuovi database denominati 'django_db' con utente/ruolo 'python_dev'. Digita il comando seguente nella shell di PostgreSQL.

CREATE USER python_dev WITH PASSWORD 'aqwe123';
CREATE DATABASE django_db OWNER python_dev;

Vedi l'elenco e il ruolo del database:

\list

Fase 3:avvia un nuovo progetto Django

Avvia il primo progetto Django con il nome 'hello_django'. Non useremo i privilegi di root per il progetto, userò un normale utente Linux "natsume" per il progetto. Sentiti libero di utilizzare un nome utente diverso che descriva il tuo progetto.

Crea un nuovo utente

Crea un nuovo utente Linux con il comando seguente:

useradd -m -s /bin/bash natsume
passwd natsume

-m =Crea automaticamente la home directory.
-s =Definisce la shell predefinita per l'utente.

Crea nuovo Virtualenv e installa Django

Accedi all'utente natsume:

su - natsume

Crea un nuovo ambiente virtuale nella directory 'myproject' per il nostro progetto Django con python3 come versione python predefinita.

mkdir myproject
virtualenv --python=python3 myproject/

Vai alla directory 'myproject' e attiva virtualenv.

cd myproject/
source bin/activate

Quindi, installa Django, gunicorn e psycopg2 con il comando pip in quell'ambiente.

pip install django gunicorn psycopg2

Inizia un nuovo progetto con PostgreSQL

Avvia il progetto Django 'hello_django' con il comando django-admin di seguito:

django-admin startproject hello_django

Creerà una nuova directory 'hello_django', andrà in quella directory e modificherà il file di configurazione 'setting.py' con vim.

cd hello_django/
vim hello_django/settings.py

Modificare le impostazioni del database alla riga 76 con la configurazione seguente:

        'ENGINE': 'django.db.backends.postgresql_psycopg2',
        'NAME': 'django_db',
        'USER': 'python_dev',
        'PASSWORD': 'aqwe123',
        'HOST': 'localhost',
        'PORT': '',

Alla fine del file, configura l'url statico aggiungendo la riga di configurazione STATIC_ROOT di seguito:

STATIC_ROOT = os.path.join(BASE_DIR, 'static/')

Salva ed esci.

Quindi, migra il database nel nostro database postgreSQL e crea un nuovo utente amministratore. Quindi raccogli tutti i file statici nella directory statica che viene creata automaticamente quando eseguiamo il comando.

python manage.py migrate
python manage.py createsuperuser
python manage.py collectstatic

Assicurati che non ci siano errori ed esegui un test del server del progetto django con il comando runserver.

python manage.py runserver 0.0.0.0:8080

Apri il tuo browser web e visita l'indirizzo IP del server sulla porta 8080, nel mio caso http://192.168.1.115:8080. Vedrai la pagina predefinita di Django.

Premi Ctrl + c per uscire.

Fase 4:configura il progetto Django con Gunicorn

Gunicorn o Green Unicorn è un server HTTP WSGI Python derivato dal progetto Ruby Unicorn. Supporta vari framework web ed è facile da configurare.

Vai alla directory 'myproject' e attiva l'ambiente virtuale per la directory home dell'utente natsume.

cd ~/myproject/
source bin/activate

Crea un nuovo file 'gunicorn_start' all'interno della directory bin con vim:

vim bin/gunicorn_start

Incolla la configurazione di seguito:

#!/bin/bash

# Project Name
NAME="hello_django"                       

# Django Project Directory
DJANGODIR=/home/natsume/myproject/hello_django          

# Run gunicorn on the socket file
SOCKFILE=/home/natsume/myproject/hello_django/run/gunicorn.sock

# Gunicorn running as user and group
USER=natsume
GROUP=natsume

# Workers
NUM_WORKERS=3

#Module Setting
#replace hello_django with your project name
DJANGO_SETTINGS_MODULE=hello_django.settings
DJANGO_WSGI_MODULE=hello_django.wsgi

echo "Starting $NAME as `whoami`"

# Activate the virtual environment
cd $DJANGODIR
source ../bin/activate
export DJANGO_SETTINGS_MODULE=$DJANGO_SETTINGS_MODULE
export PYTHONPATH=$DJANGODIR:$PYTHONPATH

# Create the run directory if it doesn't exist
RUNDIR=$(dirname $SOCKFILE)
test -d $RUNDIR || mkdir -p $RUNDIR

# Start your Django Unicorn
# Programs meant to be run under supervisor should not daemonize themselves (do not use --daemon)
exec ../bin/gunicorn ${DJANGO_WSGI_MODULE}:application \
--name $NAME \
--workers $NUM_WORKERS \
--user=$USER --group=$GROUP \
--bind=unix:$SOCKFILE \
--log-level=debug \
--log-file=-

Salva ed esci.

Rendi il file eseguibile con il comando chmod.

chmod u+x bin/gunicorn_start

Fase 5 - Installa e configura Supervisor

Supervisor è un sistema di controllo di processo per i sistemi operativi Linux. Ti consente di configurare, monitorare e controllare una serie di processi su Linux. Supervisor è basato su python, possiamo installarlo dal repository python pypi con il comando pip o installarlo dal repository ubuntu con apt.

Installerò il supervisore con questo comando apt:

sudo apt-get install supervisor

Supervisor ha un file di configurazione predefinito nella directory '/ect/supervisor/'. Vai in quella directory e crea una nuova configurazione per il nostro progetto Django in modo che possiamo controllarlo con il supervisore.

cd /etc/supervisor/conf.d/
vim hello-django.conf

Incolla la configurazione del supervisore di seguito:

[program:hello_django]
command = sh /home/natsume/myproject/bin/gunicorn_start
user = natsume
stdout_logfile = /home/natsume/myproject/logs/gunicorn_supervisor.log
redirect_stderr = true
environment=LANG=en_US.UTF-8,LC_ALL=en_US.UTF-8

Salva ed esci.

Quindi, accedi all'utente natsume e crea alcune directory necessarie per il file socket gunicorn e il file di registro del supervisore.

su - natsume

# Directory for gunicorn sock file
mkdir -p myproject/hello_django/run/

# Directory and file for supervisor log files
mkdir -p myproject/logs/
touch myproject/logs/gunicorn_supervisor.log

Torna all'utente root con "exit" e avvia Supervisor:

exit
systemctl start supervisor

Controlla lo stato e il registro del processo:

supervisorctl
tail -f hello_django

Fase 6 - Installa e configura Nginx per il progetto Django

In questo passaggio, installeremo Nginx e lo configureremo come proxy inverso per il nostro progetto Django.

Installa Nginx dal repository di Ubuntu:

sudo apt-get install nginx

Vai alla directory di configurazione dell'host virtuale Nginx e crea un file di host virtuale hello_django:

cd /etc/nginx/sites-available/
vim hello_django

Incolla la configurazione di seguito:

# Django running with Gunicorn Sock file
upstream hello_django_project {
    server unix:/home/natsume/myproject/hello_django/run/gunicorn.sock fail_timeout=0;
}

server {

    listen   80;
    server_name www.django-nginx.com;

    client_max_body_size 4G;

    access_log /home/natsume/myproject/logs/nginx-access.log;
    error_log /home/natsume/myproject/logs/nginx-error.log;

    location /static/ {
        alias   /home/natsume/myproject/hello_django/static/;
    }

    location /media/ {
        alias   /home/natsume/myproject/hello_django/media/;
    }

    location / {
        proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
        proxy_set_header Host $http_host;
        proxy_redirect off;

    # Try to serve static files from nginx, no point in making an
    # *application* server like Unicorn/Rainbows! serve static files.
    if (!-f $request_filename) {
        proxy_pass http://hello_django_project;
        break;
        }
   

# Error pages
    error_page 500 502 503 504 /500.html;
    location = /500.html {
        root /home/natsume/myproject/hello_django/static/;
        }
    }
}

Salva ed esci.

Attiva l'host virtuale e testa la configurazione di Nginx.

ln -s /etc/nginx/sites-available/hello_django /etc/nginx/sites-enabled/
nginx -t

Assicurati che non ci siano errori, quindi riavvia Nginx:

systemctl restart nginx

Passaggio 7 - Test di Django

Nel passaggio 5, abbiamo creato un host virtuale per il nostro progetto Django con il nome di dominio 'www.django-nginx.com'. Apri il tuo browser e visita il nome di dominio che hai scelto per il tuo progetto.

www.django-nginx.com/admin/

E verrai reindirizzato alla dashboard dell'amministratore di Django.

Verifica che tutti i servizi che abbiamo configurato siano in esecuzione con il comando seguente:

netstat -pl

Vedrai il file pid, port e sock utilizzato da tutti i servizi.

L'installazione e la configurazione di Django con PostgreSQL e Nginx su Ubuntu 16.04 è andata a buon fine.

  • https://www.djangoproject.com/
  • https://www.nginx.com/
  • http://gunicorn.org/
  • http://supervisord.org/

Ubuntu
  1. Come installare Mattermost con PostgreSQL e Nginx su Ubuntu 16.04

  2. Come installare MediaWiki con Nginx su Ubuntu 16.04

  3. Come installare Magento 2 con Nginx e Letsencrypt su Ubuntu 18.04

  4. Come installare Postgresql e phpPgAdmin su Ubuntu 15.04

  5. Come installare Nginx con PHP5 e MySQL su Ubuntu 11.10

Come installare Redmine 3.2 con Nginx su Ubuntu 16.04

Come installare OSClass con Nginx su Ubuntu 20.04

Come installare Nginx con ModSecurity su Ubuntu 15.04

Come installare Nextcloud 13 su Ubuntu 16.04 con Nginx

Come installare e configurare PostgreSQL su Ubuntu

Come installare e configurare Nginx in Ubuntu 20.04 e Ubuntu 21.04