Procédures post-installation et de mise à jour
Après l’installation, ou après une mise à jour, il peut y avoir des opérations supplémentaires à effectuer.
Migrations
Les migrations sont les opérations structurelles sur la base de données. Elles doivent être effectuées après l’installation.
Elles doivent aussi être réalisées lorsque des nouvelles migrations apparaissent. Cela peut venir :
de migrations de django
de migrations d’autre dépendances (django-modeltranslations par exemple)
de migrations internes.
Les migrations doivent être appliqués en mettant à jour vers
1.0.0
0.1.0
La commande pour appliquer les migrations est
python src/manage.py migrate
Note
Les migrations sont appliquées automatiquement avec l’image docker.
Super-utilisateur
Une fois l’installation terminée, vous pouvez créer un super-utilisateur avec la commande :
python src/manage.py createsuperuser
et remplir les informations demandées.
Les fichiers statiques
En production, les fichiers statiques ne sont pas servis par django. Vous devez :
Créer un réportoire pour les fichiers statiques
Mettre le paramètre
STATIC_ROOT
au chemin du répertoire nouvellement créé.Créer un alias pour l’url “/static/” vers le répertoire en question (voir la configuration apache pour exemple).
Exécuter la commande django pour copier les fichiers statiques
La commande est
python src/manage.py collectstatic
Traductions
Vous pouvez compiler les fichiers de traduction avec cette commande :
python src/manage.py compilemessages
Exemple de configuration apache
Lors de la configuration d’apache, il ne faut pas oublier de créer un alias pour le répertoire des fichiers statiques et des médias. Un exemple peut être trouvé ci-dessous :
<IfModule mod_ssl.c>
<VirtualHost *:80>
ServerName example.org
Redirect / https://example.org
LogLevel warn
CustomLog /var/log/apache2/example.access.log combined
ErrorLog /var/log/apache2/example.error.log
</VirtualHost>
<VirtualHost *:443>
ServerName example.org
CustomLog /var/log/apache2/example.access.log combined
ErrorLog /var/log/apache2/example.error.log
SSLEngine on
SSLCertificateFile /etc/letsencrypt/live/example.org/fullchain.pem
SSLCertificateKeyFile /etc/letsencrypt/live/example.org/privkey.pem
#Include /etc/letsencrypt/options-ssl-apache.conf
<Directory /var/www/django-voting-app/src>
Order allow,deny
Allow from all
</Directory>
Alias /static/ /var/www/django-voting-app/src/staticfiles/
Alias /media/ /var/www/django-voting-app/src/media/
WSGIScriptAlias / /var/www/django-voting-app/src/django_voting_app/wsgi.py
WSGIProcessGroup www-data
WSGIDaemonProcess www-data processes=2 threads=16 maximum-requests=1000 display-name=example
WSGIPassAuthorization On
</VirtualHost>
</IfModule>
Modification du fichier wsgi pour les virtualenvs
Si vous utilisez un virtualenv, il faut légèrement modifier le wsgi.py
. Le fichier se trouve dans src/django_voting_app
.
On suppose ici que le répertoire du virtualenv se trouve au /var/www/django-voting-app/.venv
import os
import sys
VIRTUALENV_LOC = '/var/www/django-voting-app/.venv'
activate_env=os.path.join(VIRTUALENV_LOC, 'bin/activate_this.py')
exec(compile(open(activate_env, "rb").read(), activate_env, 'exec'), {'__file__':activate_env})
sys.path.append('/var/www/django-voting-app/src')
sys.path.append('/var/www/django-voting-app/src/django_voting_app')
from django.core.wsgi import get_wsgi_application
os.environ.setdefault("DJANGO_SETTINGS_MODULE", "django_voting_app.settings")
application = get_wsgi_application()