Django + uWSGI via NGINX sur Ubuntu 11.10
J'essaie de déployer un projet django. J'ai essayé beaucoup de tutoriels, mais pas eu de chance. J'utilise un nouveau propre Ubuntu 11.10. J'ai joué
apt-get install nginx
apt-get install uwsgi
service nginx start
J'ai créé le dossier /deploy/project1
et y ai mis manage.py
et d'autres fichiers.
Mon courant /deploy/project1/project1/wsgi.py
contient:
import os
os.environ.setdefault("DJANGO_SETTINGS_MODULE", "project1.settings")
from django.core.wsgi import get_wsgi_application
application = get_wsgi_application()
Alors, pourriez-vous me dire comment déployer correctement mon application django pour domain.com
?
J'ai également installé Django via pip et easy_install
Que dois-je ajouter dans /etc/nginx/sites-enabled/default
.
2 réponses
En supposant que vous avez installé toutes les exigences et que vous utilisez les paquets aptitude, vous n'avez pas besoin de wsgi.py. toute la configuration est dans le fichier uWSGI ini / xml / yaml. (prendre le format que vous préférez).
Voici un exemple minimal pour example.com
fichier nginx(/etc/nginx/sites-available/examplecom pour ubuntu 11.10)
server {
listen 80;
server_name example.com;
access_log /var/log/nginx/projectname.log;
location /media {
alias /vagrant/test/projectname/media/;
}
location /static {
alias /vagrant/test/projectname/static/;
}
location / {
uwsgi_pass unix:///run/uwsgi/projectname/socket;
include uwsgi_params;
}
}
Créer un lien symbolique vers /etc/nginx/sites-enabled
sudo ln -s /etc/nginx/sites-available/examplecom /etc/nginx/sites-enabled/examplecom
Ou
sudo /usr/sbin/nxensite examplecom
Vous avez terminé avec NGINX.
Aller à {[8] } et créez votre fichier ini
sudo vim /etc/uwsgi/apps-available/projectname.ini
[uwsgi]
virtualenv=/home/vagrant/.virtualenvs/projectenv
thread=3
master=1
env = DJANGO_SETTINGS_MODULE=projectname.settings
module = django.core.handlers.wsgi:WSGIHandler()
chdir = /path/to/my/django/project
socket = /run/uwsgi/projectname/socket
logto = /var/log/uwsgi/projectname.log
Pointez votre ini sur/etc/uwsgi/apps-enabled / projectname.ini
sudo ln -s /etc/uwsgi/apps-available/projectname.ini /etc/uwsgi/apps-enabled/projectname.ini
Pour plus d'informations, voir un de ces fichiers sur votre système:
/etc/uwsgi/apps-available/README
/etc/uwsgi/apps-enabled/README
/usr/share/doc/uwsgi/README.Debian.gz
/etc/default/uwsgi
Vous avez terminé. Vous pouvez maintenant redémarrer nginx & uwsgi
sudo service nginx restart
sudo service uwsgi restart
Cheers!
N'oubliez pas que le paquet uwsgi
de Debian, Ubuntu et ses dérivés ne nécessite pas l'installation de son plugin Python - uwsgi-plugin-python
, car uWSGI n'utilise pas nécessairement uniquement Python (il existe des plugins pour Lua, Erlang et d'autres langages). Cependant, Django nécessite un plugin Python. Installez-le:
sudo apt install uwsgi-plugin-python
Contrairement à l'installation de PIP, vous devez mentionner explicitement le plugin uWSGI utilisé dans la configuration de l'application en y ajoutant une ligne plugins = python
(Si vous utilisez Python), comme ce:
[uwsgi]
plugins = python
uwsgi-socket = /var/sockets/django.sock
chmod-socket = 660
chdir = /home/v/django
module = project.wsgi
Sauf si vous faites cela, il n'y aura pas d'options spécifiques à Python disponibles. Et uWSGI de Debian / Ubuntu sera juste calme à ce sujet!