@zkweb

Как автоматически запустить Django на Nginx + Uwsgi?

Здравствуйте!

Как после перезагрузки сервера автоматически запустить сайт на Django?

Такой командой сайт полностью работает в связке Nginx + Uwsgi

uwsgi --ini project_app.ini

после перезагрузки ОС сайт не запускается.

Как правильно сделать. Читал много инфы, но так и поднялся у меня сайт ) можно пример
  • Вопрос задан
  • 646 просмотров
Пригласить эксперта
Ответы на вопрос 1
@BorisBurkov
На Debian 8 я делал так:

Nginx после перезагрузки всает сам по дефолту. Вот его конфиги: /etc/nginx/sites-available/mysite.conf и его симлинк /etc/nginx/sites-enabled/mysite.conf:

upstream django {
    server unix:///tmp/mysite.sock;
}

server {
    listen  80;
    server_name mysite.me www.mysite.me;
    charset utf-8;

    client_max_body_size 75M;

    location /media {
        alias /srv/mysite/mysite/media;
    }

    location /static {
        alias /srv/mysite/static;
    }

    location / {
        uwsgi_pass django;
        include /etc/nginx/uwsgi_params;
    }
}


Эта конфигурация nginx раздает статику и медиа непосредственно из /media и /static и разговаривает с апстримовским django через unix-domain сокет /tmp/mysite.sock.

Теперь uwsgi. Он запускается при ребуте из rc.local в режиме emperor из-под пользователя www-data:
В `rc.local` просто добавляю строку:

/usr/bin/uwsgi --emperor /etc/uwsgi/apps-enabled/mysite.conf --uid www-data --gid www-data


В `/etc/uwsgi/sites-available` (и гиперлинк на него в `/etc/uwsgi/sites-enabled`) файлик mysite.ini:

[uwsgi]
chdir = /srv/mysite
module = mysite.wsgi:application

plugin = python
# http = 0.0.0.0:8000 - use this to test uwsgi directly without nginx frontend
socket = /tmp/mysite.sock
chmod-socket = 664
vacuum = true

master = true
need-app = true
processes = 10
harakiri  = 20
max-requests = 5000
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы