J'écrirai la méthode de paramétrage pour afficher correctement le fichier statique (css et image) du projet Django dans l'environnement EC2 (Amazon Linux2) + Apache pour rappel.
La méthode d'affichage des fichiers statiques diffère entre le serveur de développement Django et le serveur Web tel qu'Apache. Tout d'abord, réécrivez le contenu de settings.py comme suit.
settings.py
STATIC_URL = '/static/'
STATIC_ROOT = os.path.join(BASE_DIR, 'static') #Pour la production
# STATICFILES_DIRS = [os.path.join(BASE_DIR, "static")] #Pour le developpement
Après cela, exécutez la commande suivante pour agréger les fichiers statiques sous chaque application dans le dossier statique directement sous le projet.
$ python3 manage.py collectstatic
Ensuite, créez un fichier de configuration Apache sous /etc/httpd/conf.d/. Ici, il est créé avec le nom "myproject.conf".
Exécutez la commande suivante pour modifier le fichier de paramètres.
sudo vi /etc/httpd/conf.d/myproject.conf
myproject.conf
LoadModule wsgi_module /usr/local/lib64/python3.7/site-packages/mod_wsgi/server/mod_wsgi-py37.cpython-37m-x86_64-linux-gnu.so
ServerName <Lister l'adresse IP publique d'EC2>
WSGIScriptAlias / /home/ec2-user/myproject/myproject/wsgi.py
WSGIPythonPath /home/ec2-user/myproject:/usr/bin/python3
<Directory /home/ec2-user/myproject/myproject>
<Files wsgi.py>
Require all granted
</Files>
</Directory>
Alias /static/ /home/ec2-user/myproject/static/
<Directory /home/ec2-user/myproject/static>
Require all granted
</Directory>
Les lignes 1 à 12 servent à associer Apache à mod_wsgi. La 14e ligne et les suivantes sont la description pour autoriser les dossiers statiques.
Enfin, redémarrez Apache.
sudo service httpd restart
Le fichier statique doit maintenant être affiché correctement.
Recommended Posts