ocean - gunicorn django
Django+uWSGI a través de NGINX en Ubuntu 11.10 (2)
Estoy intentando implementar un proyecto django. Intenté muchos tutoriales, pero no tuve suerte. Uso un nuevo Ubuntu 11.10 limpio. He realizado
apt-get install nginx
apt-get install uwsgi
service nginx start
/deploy/project1
carpeta /deploy/project1
y coloqué allí manage.py
y otros archivos.
Mi actual /deploy/project1/project1/wsgi.py
contiene:
import os
os.environ.setdefault("DJANGO_SETTINGS_MODULE", "project1.settings")
from django.core.wsgi import get_wsgi_application
application = get_wsgi_application()
Entonces, ¿podría decirme cómo implementar mi aplicación django para domain.com
correctamente?
También instalé Django vía pip y easy_install
¿Qué debería agregar en /etc/nginx/sites-enabled/default
?
No olvide que el paquete uwsgi
Debian, Ubuntu y sus derivados no requiere la instalación de su complemento Python - uwsgi-plugin-python
, porque uWSGI no necesariamente usa solo Python (hay complementos para Lua, Erlang y otros lenguajes). Sin embargo, Django requiere el complemento Python. Instalarlo:
sudo apt install uwsgi-plugin-python
A diferencia de la instalación de PIP, debe mencionar explícitamente el complemento uwsgi utilizado en la configuración de la aplicación al agregarle una línea plugins = python
(si usa Python), así:
[uwsgi]
plugins = python
uwsgi-socket = /var/sockets/django.sock
chmod-socket = 660
chdir = /home/v/django
module = project.wsgi
A menos que haga esto, no habrá opciones específicas de Python disponibles. ¡Y el uWSGI de Debian / Ubuntu será silencioso al respecto!
Suponiendo que ha instalado todos los requisitos y está utilizando los paquetes aptitude, entonces no necesita el wsgi.py. Toda la configuración está en el archivo uwsgi ini / xml / yaml. (tome el formato que prefiera).
Aquí hay un ejemplo mínimo para el archivo example.com
para nginx (/ etc / nginx / sites-available / examplecom para 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;
}
}
Crear un enlace simbólico a / etc / nginx / sites-enabled
sudo ln -s /etc/nginx/sites-available/examplecom /etc/nginx/sites-enabled/examplecom
o
sudo /usr/sbin/nxensite examplecom
Ya terminaste con NGINX.
Vaya a /etc/uwsgi/apps-available
y cree su archivo 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
Apunte su ini a /etc/uwsgi/apps- habilitado / nombredelproyecto.ini
sudo ln -s /etc/uwsgi/apps-available/projectname.ini /etc/uwsgi/apps-enabled/projectname.ini
Para obtener más información, consulte cualquiera de estos archivos en su sistema:
/etc/uwsgi/apps-available/README
/etc/uwsgi/apps-enabled/README
/usr/share/doc/uwsgi/README.Debian.gz
/etc/default/uwsgi
Estás listo. Ahora puede reiniciar nginx y uwsgi
sudo service nginx restart
sudo service uwsgi restart
¡Aclamaciones!