Подтвердить что ты не робот

Django + uWSGI через NGINX на Ubuntu 11.10

Я пытаюсь развернуть проект django. Я пробовал много учебников, но мне не повезло. Я использую новый чистый Ubuntu 11.10. Я выполнил

apt-get install nginx
apt-get install uwsgi
service nginx start

Я создал папку /deploy/project1 и поместил туда manage.py и другие файлы.

Мой текущий /deploy/project1/project1/wsgi.py содержит:

import os

os.environ.setdefault("DJANGO_SETTINGS_MODULE", "project1.settings")

from django.core.wsgi import get_wsgi_application
application = get_wsgi_application()

Итак, не могли бы вы рассказать мне, как правильно разместить мое приложение django для domain.com?

Я также установил Django через pip и easy_install

Что следует добавить в /etc/nginx/sites-enabled/default.

4b9b3361

Ответ 1

Предполагая, что вы установили все требования, и вы используете пакеты aptitude, вам не нужен wsgi.py. Вся конфигурация находится в файле uwsgi ini/xml/yaml. (возьмите формат, который вы предпочитаете).

Вот минимальный пример для файла example.com для nginx (/etc/nginx/sites-available/examplecom для 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;
    }
}

Создайте символическую ссылку на /etc/nginx/sites -enabled

sudo ln -s /etc/nginx/sites-available/examplecom /etc/nginx/sites-enabled/examplecom

или

sudo /usr/sbin/nxensite examplecom

Вы закончили с NGINX.

Перейдите в /etc/uwsgi/apps-available и создайте свой 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

Направьте свой ini в /etc/uwsgi/apps -enabled/projectname.ini

sudo ln -s /etc/uwsgi/apps-available/projectname.ini /etc/uwsgi/apps-enabled/projectname.ini

Для получения дополнительной информации см. любой из этих файлов в вашей системе:

/etc/uwsgi/apps-available/README
/etc/uwsgi/apps-enabled/README
/usr/share/doc/uwsgi/README.Debian.gz
/etc/default/uwsgi

Вы закончили. Теперь вы можете перезапустить nginx и uwsgi

sudo service nginx restart
sudo service uwsgi restart

Ура!

Ответ 2

Не забывайте, что пакет Debian, Ubuntu и его производных uwsgi не требует установки его плагина Python - uwsgi-plugin-python, потому что uWSGI не обязательно использует только Python (есть плагины для Lua, Erlang и других языков). Однако для Django требуется плагин Python. Установите его:

sudo apt install uwsgi-plugin-python

В отличие от установки PIP, вы должны явно указать плагин uwsgi, используемый в конфигурации приложения, добавив к нему строку plugins = python (если вы используете Python), например:

[uwsgi]
plugins = python
uwsgi-socket = /var/sockets/django.sock
chmod-socket = 660
chdir = /home/v/django
module = project.wsgi

Если вы этого не сделаете, не будет доступных параметров Python. И Debian's/Ubuntu uWSGI будет просто спокоен об этом!