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.

23
demandé sur f1nn 2012-05-04 21:57:40

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!

36
répondu ScotchAndSoda 2012-10-21 11:13:33

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!

9
répondu TranslucentCloud 2017-08-30 08:53:43