Налаштування nginix+uwsgi в Debian

Встановлюємо Python 3

apt-get install python3-dev python3-setuptools

Встановлюєм pip

apt-get install python3-pip
python3 -m pip install --upgrade pip

Якщо проблема з оновленням

apt-get remove python-pip
wget https://bootstrap.pypa.io/get-pip.py
python3 get-pip.py

Зберігаємо список модулів Python з старого сервера в файл "requirements.txt" і встановлюємо модулі на новий сервер.

pip3 freeze > requirements.txt
pip3 install -r requirements.txt

Встановлюємо uwsgi

apt-get install uwsgi
apt-get install uwsgi-plugin-python3

Приклад налаштування конфігурації nginix для VestaCP

server {
    listen      55.555.55.555:80;
    server_name itshnyk.pp.ua www.itshnyk.pp.ua;
    root        /home/luzhnyak/web/itshnyk.pp.ua/public_html;
    index       index.php index.html index.htm;
    access_log  /var/log/nginx/domains/itshnyk.pp.ua.log combined;
    access_log  /var/log/nginx/domains/itshnyk.pp.ua.bytes bytes;
    error_log   /var/log/nginx/domains/itshnyk.pp.ua.error.log error;
 
    location / {
 
        location ~* ^.+\.(jpeg|jpg|png|gif|bmp|ico|svg|css|js)$ {
            expires     max;
        }
 
        location ~ [^/]\.php(/|$) {
            fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
            if (!-f $document_root$fastcgi_script_name) {
                return  404;
            }

            fastcgi_pass    127.0.0.1:9005;
            fastcgi_index   index.php;
            include         /etc/nginx/fastcgi_params;
        }
    }
 
    error_page  403 /error/404.html;
    error_page  404 /error/404.html;
    error_page  500 502 503 504 /error/50x.html;
 
    location /error/ {
        alias   /home/luzhnyak/web/itshnyk.pp.ua/document_errors/;
    }
 
    location ~* "/\.(htaccess|htpasswd)$" {
        deny    all;
        return  404;
    }
 
    location /vstats/ {
        alias   /home/luzhnyak/web/itshnyk.pp.ua/stats/;
        include /home/luzhnyak/conf/web/itshnyk.pp.ua.auth*;
    }
 
    include     /etc/nginx/conf.d/phpmyadmin.inc*;
    include     /etc/nginx/conf.d/phppgadmin.inc*;
    include     /etc/nginx/conf.d/webmail.inc*;
 
    include     /home/luzhnyak/conf/web/nginx.itshnyk.pp.ua.conf*;
}

Приклад налаштування uwsgi    

[uwsgi]
plugins = python3
#http-modifier1 = 9
#gid = www-data
#uid = www-data
socket=127.0.0.1:8097
#pidfile=/var/run/uwsgi
chdir=/home/luzhnyak/web/itshnyk.pp.ua/app
#module=flask.wsgi
wsgi-file=/home/luzhnyak/web/itshnyk.pp.ua/app/main.py
callable=app
#pythonpath=/usr/local/lib/python3.5/site-packages/
#no-site=True
touch-reload=/home/luzhnyak/web/itshnyk.pp.ua/app/main.py
#master = true
processes = 4
threads = 10
#enable-threads = True
#log-syslog = uwsgi-ligo
stats = 127.0.0.1:9197
daemonize=/var/log/nginx/domains/itshnyk.pp.ua.error.log
buffer-size=32768

Установка і настройка supervisord

Установка, як зазвичай:

apt-get install supervisor

Тепер створюємо конфігураційний файл:

nano /etc/supervisor/conf.d/site.conf

з наступним змістом (обов'язково переіменовуємо [program: itshnyk]):

[program:itshnyk]
directory=/home/luzhnyak/web/itshnyk.pp.ua/app/
command=uwsgi --ini /home/luzhnyak/web/itshnyk.pp.ua/itshnyk_uwsgi.ini
user=root
autostart=true
autorestart=true
stdout_logfile = /var/log/nginx/domains/itshnyk.pp.ua.log
stderr_logfile = /var/log/nginx/domains/itshnyk.pp.ua.error.log
redirect_stderr=true
stopsignal=INT