Хабр Курсы для всех
РЕКЛАМА
Практикум, Хекслет, SkyPro, авторские курсы — собрали всех и попросили скидки. Осталось выбрать!
envplus add имя_нужного_окружения(ну естественно я заблаговременно подготовил несколько тематических окружений по разным нуждам и систематически обновляю в них пакеты)chdir = /path/to/your/projectsocket = %(chdir)/mysite.socksocket = %d%c.uwsgi.sock — %d полный путь до папки в которой лежит конфиг, %c имя директории проекта.module = %c.wsgi[uwsgi]
uid = server
gid = server
chmod-socket = 664
chown-socket = server:server
;тут типа настроено так что виртуальное окружение имеет такое-же имя как и имя проекта
venv = /server/.virtualenvs/%c
pp = %d
master
processes = %k
cheaper = 4
protocol = uwsgi
autoload
no-orphans
memory-report
die-on-term
harakiri = 60
harakiri-verbose
reload-mercy = %k
worker-reload-mercy = %k
max-requests = 5000
buffer-size = 65535
post-buffering = 1048576
reload-on-rss = 300
touch-reload = %p
vacuum
enable-threads
single-interpreter
lazy-apps
; читаем .env файлы которые совместимы с foreman/honcho например как для хероку, всякие настройки в переменных окружения.
for-readline = .env
env = %(_)
end-for
[stats]
stats = %d%c.uwsgi.stats.sock
stats = :1717
[cache]
cache = 1000
cache-blocksize = 65536
[development]
print = Hello I'm the %x config for %c django project %X!
ini = :uwsgi
ini = :staticfiles
procname-master = [uWSGI Master for %c app Dev]
procname = [uWSGI Worker for %c app Dev]
socket = %d%c.uwsgi.sock
module = %c.wsgi
logto = %dlogs/%c.uwsgi.%x.log
py-autoreload = 2
ini = :uwsgiini = :staticfilespy-autoreload = 2 — отличная штука — uWSGI автоматом перезагружается при разработке как и джанговский девелопмент сервер после изменения файлов.[staticfiles]
static-map2 = /assets=%dpublic
static-map2 = /uploads=%dpublic
STATIC_URL = '/assets/'
STATIC_ROOT = cd('public/assets')
MEDIA_URL = '/uploads/'
MEDIA_ROOT = cd('public/uploads')
web: newrelic-admin run-program uwsgi uwsgi.ini:development
ws: newrelic-admin run-program uwsgi uwsgi.ini:websocket
include /server/apps/*/nginx.conf;newrelic-admin run-program uwsgi --emperor="/server/apps/*/uwsgi.ini:production"uid = user
gid = user
chown-socket = www-data:www-data
attempt to write a readonly database
UWSGI_PROFILE=gevent pip install uwsgi тогда uwsgi установится сразу еще и с плагином gevent и его не надо прописывать как plugin а просто сразу в конфиге использовать. Если ставить uwsgi через pip там же после установки указано какие плагины скомпилились вместе с uwsgi.рекомендуется использовать Unix-сокет из-за преимущества в производительности.
http://yourserver.com:8000/http://yourserver.com/uwsgi --socket mysite.sock --module mysite.wsgi --chmod-socket=666uwsgi --ini mysite_uwsgi.ini...current working directory: /home/user/.virtualenvs/uwsgi-tutorial/mysitedetected binary path: /home/user/.virtualenvs/uwsgi-tutorial/bin/uwsgichdir(): No such file or directory [core/uwsgi.c line 2537]chdir(): No such file or directory [core/uwsgi.c line 1565][uwsgi]plugins = python27harakiri = 60chdir = /home/user/.virtualenv/uwsgi-tutorial/mysite/module = %(chdir)/mysite.wsgihome = /home/user/.virtualenv/socket = %(chdir)/mysite.sockmaster = trueprocesses = 10vacuum = trueuid = www-datagid = www-datachmod-socket = 666chown-socket = www-data:www-data[development]py-autoreload = 2[uwsgi] chdir = /home/merlin/ac1532.office.rterm.ru socket = %(chdir)/ac1532.uwsgi plugin = python32 pyhome = /home/merlin/django15python32 module = ac1532.wsgi chmod = 666 master = 1 workers = 8 cheaper = 2 idle = 30 procname-master = uWSGI master procname-prefix-spaced = ac1532 logfile-chown = 1 daemonize = %(chdir)/logs/uwsgi_log pidfile = %(chdir)/ac1532.pid vacuum = 1 uid = merlin gid = merlin
Для людей с ошибкой (13: Permission denied) и не хотящих давать права 666: эта статья - перевод с английского. В оригинале решение проблемы описывается так:You may also have to add your user to nginx’s group (which is probably www-data), or vice-versa, so that nginx can read and write to your socket properly.
Если коротко - не только нужно добавить своего пользователя в группу www-data, так же нужно добавить пользователя www-data в группу своего профиля (совпадает с username). Мне помогло.
Django на production. uWSGI + nginx. Подробное руководство