Ce tutoriel explique comment configurer Django sur Debian 8 (jessie). Je vais montrer comment utiliser à la fois Python 2 et 3 ainsi que Nginx et PostgreSQL.
Tout ce qui est fait dans ce tutoriel est fait en tant que root.
Installer des packages
Pour commencer, nous devons installer certains packages.
Pour Python 2:
apt-get install python-pip python-dev virtualenv nginx postgresql postgresql-contrib libpq-dev sudo gcc
Pour Python 3:
apt-get install python3-pip python3-dev virtualenv nginx postgresql postgresql-contrib libpq-dev sudo gcc
Configuration des bases de données
Tout d'abord, nous nous connectons à l'utilisateur postgres.
sudo -u postgres -s
Ensuite, nous créons une nouvelle base de données. Le nom de la base de données peut être celui que vous voulez qu'il soit ( dbnameest utilisé ici), mais vous devez être cohérent avec le reste de la configuration.
createdb dbname
Créez un utilisateur pour la nouvelle base de données. Encore une fois, cela peut être ce que vous désirez, mais je l'ai utilisé dbuser. Cela vous demandera également de définir un mot de passe.
createuser -P dbuser
L'utilisateur doit maintenant avoir accès à la base de données. Assurez-vous simplement d'utiliser le nom de base de données et le nom d'utilisateur corrects.
psql
postgres=# GRANT ALL PRIVILEGES ON DATABASE dbname TO dbuser;
postgres=# \q
Quittez pour rooter.
exit
Activez et démarrez PostgreSQL:
systemctl enable postgresql
systemctl start postgresql
Configurer l'environnement virtuel
Au lieu d'utiliser simplement les fichiers python globaux, nous utiliserons un environnement virtuel. Nous commençons par créer un répertoire pour tout contenir.
mkdir -p /opt/project
Nous créons maintenant l'environnement. Ceci est différent pour les utilisateurs de python 2 et 3.
Pour Python 2:
virtualenv . -p python
Pour Python 3:
virtualenv . -p python3
Entrez dans l'environnement virtuel.
source bin/activate
Installez Django, gunicorn et psycopg2.
pip install django
pip install gunicorn
pip install psycopg2
Si vous avez besoin d'une version spécifique de Django, modifiez la commande d'installation pour qu'elle corresponde au format ci-dessous. Cet exemple installe 1.7.8.
pip install django==1.7.8
Nous en avons maintenant terminé avec pour l'instant, afin que nous puissions désactiver notre environnement virtuel.
deactivate
Téléchargement et configuration du projet
C'est le moment où nous téléchargeons notre projet sur le serveur, et nous nous assurons que tous ses paramètres sont corrects. Vous pouvez utiliser n'importe quelle méthode pour ce faire. FTP, SFTP, git, etc. sont toutes des façons de procéder. Si vous utilisez git pour suivre le code du projet, vous pouvez simplement le cloner sur le serveur. Cette commande git clone le projet sur le serveur et le place dans /opt/project/project/.
git clone http://example.com:project.git
Ouvrez le settings.pyfichier dans n'importe quel navigateur de texte.
Tout d'abord, le mode débogage doit être désactivé. Recherchez la DEBUG = Trueligne et changez Truepour False. Après cela, assurez-vous que vous avez ALLOWED_HOSTSdéfini une valeur.
ALLOWED_HOSTS = ['*']
Recherchez le DATABASESdictionnaire, et il devrait ressembler à ceci:
DATABASES = {
'default': {
'ENGINE': 'django.db.backends.postgresql_psycopg2',
'NAME': 'dbname',
'USER': 'dbuser',
'PASSWORD': 'password you set',
'HOST': 'localhost',
'PORT': ''
}
}
La dernière étape consiste à définir une racine statique. Placez ce qui suit directement ci-dessous STATIC_URL.
STATIC_ROOT = '/opt/project/static/'
Quittez le fichier et créez le répertoire racine statique.
mkdir -p /opt/project/static
Migrez maintenant la base de données, créez un super utilisateur et collectez tous les fichiers statiques.
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 est le serveur WSGI que nous utiliserons. Puisque Debian 8 est livré avec systemd, nous profiterons de systemd pour démarrer et arrêter le serveur.
Créez le fichier /etc/systemd/system/django.serviceet ajoutez le contenu suivant.
[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
Activez et démarrez le service que nous avons créé.
systemctl enable django.service
systemctl start django.service
Nginx
Vous avez peut-être remarqué que nous avons lié le serveur gunicorn à 127.0.0.1. Nous avons maintenant besoin d'un moyen d'y accéder depuis l'extérieur du serveur. C'est là qu'intervient Nginx.
Créez le nouveau fichier /etc/nginx/sites-available/djangoet ajoutez ce qui suit. La domain.example.compièce peut être réglée selon vos besoins.
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;
}
}
Créez un lien symbolique pour activer ce site.
ln -s /etc/nginx/sites-available/django /etc/nginx/sites-enabled/django
Activez et démarrez Nginx.
systemctl enable nginx
systemctl start nginx
Conclusion
Félicitations, vous avez maintenant un site Django fonctionnel sur votre VPS Debian.