Розгортаємо на Freebsd+nginx+uwsgi+Flask

У virtual environment виконуємо команду

1
$ pip install uwsgi

Створюємо файл конфігурації для uwsgi, uwsgi_projectname.ini

1
2
3
4
5
6
7
8
9
10
[uwsgi]
chdir=/path/to/project
wsgi-file=run.py
callable=app
env=/path/to/project/venv
socket=127.0.0.1:6783
processes=4
threads=2
master=True
chmod-socket=666

Конфігурація для nginx, nginx_projectname.conf - сервер має співпадати з параметром сокет вище

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
upstream projectname {
server 127.0.0.1:6783;
}

server {
listen 80;
server_name _;
charset utf-8;

root /path/to/project;

location / {
try_files $uri @proxy_to_app;
}

location @proxy_to_app {
uwsgi_pass projectname;
include /usr/local/etc/nginx/uwsgi_params;
}
}

Активуємо конфігурацію

1
2
3
$ ln -s /path/to/your/project/nginx_projectname.conf /etc/nginx/sites-enabled/
$ nginx -t
$ nginx -s reload

Запускаємо сервер

1
$ uwsgi --ini uwsgi_projectname.ini

+Supervisor

Конфіг файл, supervisor_projectname.conf

1
2
3
4
5
6
7
8
9
[program:projectname]
command=/path/to/project/venv/bin/uwsgi --ini uwsgi_projectname.ini
directory=/path/to/project
user=username
autostart=true
autorestart=true
redirect_stderr=true
stdout_logfile=/var/log/projectname.supervisor.stdout
stopsignal=QUIT

Щоб файл зберігався в поточній папці, робимо на нього посилання

1
2
3
4
$ ln -s /path/to/project/supervisor_projectname.conf /usr/local/etc/supervisor/
$ supervisorctl
> reread
> update

Ресурси