Questo tutorial spiega come configurare Django su Debian 8 (jessie). Mostrerò come usare sia Python 2 e 3 sia Nginx e PostgreSQL.
Tutto ciò che viene fatto in questo tutorial è fatto come root.
Installa i pacchetti
Per iniziare, dobbiamo installare alcuni pacchetti.
Per Python 2:
apt-get install python-pip python-dev virtualenv nginx postgresql postgresql-contrib libpq-dev sudo gcc
Per Python 3:
apt-get install python3-pip python3-dev virtualenv nginx postgresql postgresql-contrib libpq-dev sudo gcc
Database di installazione
Innanzitutto, accediamo all'utente postgres
.
sudo -u postgres -s
Successivamente, creiamo un nuovo database. Il nome del database può essere quello che vuoi che sia ( dbname
viene utilizzato qui), ma devi essere coerente con il resto dell'installazione.
createdb dbname
Crea un utente per il nuovo database. Ancora una volta, questo può essere quello che desideri, ma l'ho usato dbuser
. Questo ti chiederà anche di impostare una password.
createuser -P dbuser
L'utente deve ora avere accesso al database. Assicurati di utilizzare il nome database e il nome utente corretti.
psql
postgres=# GRANT ALL PRIVILEGES ON DATABASE dbname TO dbuser;
postgres=# \q
Esci da root.
exit
Abilita e avvia PostgreSQL:
systemctl enable postgresql
systemctl start postgresql
Imposta l'ambiente virtuale
Invece di usare solo i file globali di Python, useremo un ambiente virtuale. Iniziamo creando una directory per contenere tutto.
mkdir -p /opt/project
Ora creiamo l'ambiente. Questo è diverso per gli utenti di Python 2 e 3.
Per Python 2:
virtualenv . -p python
Per Python 3:
virtualenv . -p python3
Entra nell'ambiente virtuale.
source bin/activate
Installa Django, gunicorn e psycopg2.
pip install django
pip install gunicorn
pip install psycopg2
Se hai bisogno di una versione specifica di Django, modifica il comando di installazione in modo che corrisponda al formato seguente. Questo esempio installa 1.7.8.
pip install django==1.7.8
Ora abbiamo finito con quello per ora, quindi possiamo disattivare il nostro ambiente virtuale.
deactivate
Caricamento e configurazione del progetto
Questo è il momento in cui cariciamo il nostro progetto sul server e ci assicuriamo che tutte le sue impostazioni siano corrette. Puoi usare qualsiasi metodo per farlo. FTP, SFTP, git, ecc. Sono tutti modi per farlo. Se stai usando git per tracciare il codice del progetto, puoi semplicemente clonarlo sul server. Questo comando git clonerà il progetto sul server e lo inserirà /opt/project/project/
.
git clone http://example.com:project.git
Apri il settings.py
file in qualsiasi browser di testo.
Per prima cosa, la modalità di debug deve essere disattivata. Cerca la DEBUG = True
linea e cambia True
in False
. Successivamente, assicurati di aver ALLOWED_HOSTS
impostato un valore.
ALLOWED_HOSTS = ['*']
Cerca il DATABASES
dizionario e dovrebbe apparire così:
DATABASES = {
'default': {
'ENGINE': 'django.db.backends.postgresql_psycopg2',
'NAME': 'dbname',
'USER': 'dbuser',
'PASSWORD': 'password you set',
'HOST': 'localhost',
'PORT': ''
}
}
L'ultimo passo qui è impostare una radice statica. Posiziona quanto segue direttamente sotto STATIC_URL
.
STATIC_ROOT = '/opt/project/static/'
Esci dal file e crea la directory root statica.
mkdir -p /opt/project/static
Ora migra il database, crea un super utente e raccogli tutti i file statici.
cd /opt/project/project
../bin/python manage.py makemigrations
../bin/python manage.py migrate
../bin/python manage.py createsuperuser
../bin/python manage.py collectstatic
Gunicorn è il server WSGI che useremo. Poiché Debian 8 viene fornito con systemd, trarremo vantaggio da systemd per avviare e arrestare il server.
Crea il file /etc/systemd/system/django.service
e aggiungi il seguente contenuto.
[Unit]
Description=Django with Gunicorn
After=network.target
[Service]
User=root
Group=root
WorkingDirectory=/opt/project
ExecStart=/opt/project/bin/gunicorn --workers 3 --bind 127.0.0.1:8000 project.wsgi
[Install]
WantedBy=multi-user.target
Abilita e avvia il servizio che abbiamo creato.
systemctl enable django.service
systemctl start django.service
nginx
Potresti aver notato che abbiamo associato il server Gunicorn 127.0.0.1
. Ora abbiamo bisogno di un modo per accedervi dall'esterno del server. È qui che entra in gioco Nginx.
Crea il nuovo file /etc/nginx/sites-available/django
e aggiungi quanto segue. La domain.example.com
parte può essere impostata come desiderato.
server {
listen 80;
server_name domain.example.com;
access_log off;
location /static/ {
alias /opt/project/static/;
}
location / {
proxy_pass http://127.0.0.1:8000;
}
}
Crea un link simbolico per abilitare questo sito.
ln -s /etc/nginx/sites-available/django /etc/nginx/sites-enabled/django
Abilita e avvia Nginx.
systemctl enable nginx
systemctl start nginx
Conclusione
Congratulazioni, ora hai un sito Django funzionante sul tuo VPS Debian.