Я приведу пример настройки в командной строке. Все эти параметры можно разместить в конфигурационных файлах самого разного формата и даже в базах данных. uWSGI фантастически всеядна.
Конечно, это пример, вам следует указать свои пути и выбрать значения параметров, подходящие для вашей системы.
env -i LANG=C TZ='Europe/Moscow' /usr/sbin/uwsgi \
--log-format '%(addr) - %(user) [%(ltime)] [%(micros)] %(host) "%(method) %(uri) %(proto)" %(status) %(size) "%(referer)" "%(uagent)"' \
--env 'DJANGO_SETTINGS_MODULE=root_settings' \
--env "DJANGO_VDS_ROOT=$BASE" \
--pythonpath "$BASE/site" \
--chdir "/tmp" \
--module 'django.core.handlers.wsgi:WSGIHandler()' \
--socket '127.0.0.1:18009' \
--stats '127.0.0.1:18019' \
--harakiri 5 \
--vacuum \
--processes 2 \
--log-reopen \
--cgi "$BASE/site" \
--master \
--pidfile "$PIDFILE" \
--daemonize "$LOGFILE"
Немного пояснений.
Во-первых мы запускаем uWSGI через env -i
, что позволяет
вынести из переменных окружения всё ненужное.
Далее идёт параметры.
Мы задали
virtualenv
считаю чрезмерным; тут
достаточно просто указать путь)--chdir
— имеет смысл сменить рабочий каталог на какой-нибудь
нейтральный это даёт массу мелких преимуществ от безопасности до
возможности размонтирования файловых систем, не останавливая процесс,telnet
или netcat
),harakiri
означает, что если процесс не отвечает заданное
количество секунд, то он перезапускается автоматически,vacuum
чистит всё при завершении процесса (удаляет PID-файлы и прочее),log-reopen
— переоткрывать файлы, если они проротейтилисьcgi
— путь к CGI-скриптамКак настроить nginx для связи с uWSGI, я писал раньше.