Хабр Курсы для всех
РЕКЛАМА
Практикум, Хекслет, SkyPro, авторские курсы — собрали всех и попросили скидки. Осталось выбрать!
Но у меня не получилось собрать uwsgi-плагин для питона, поэтому пришлось сделать по-другому.apt-get install uwsgi-plugin-python3 uwsgi-plugin-python
www
--example_proj1
----conf(конфиги nginx,uwsgi)
----logs(логи nginx,uwsgi,django)
----pids(сокет и пидфайл)
----project(файлы джанго проекта)
----static(статика проекта собираемая через collectstatic)
----venv(переносимое виртуальное окружение)
--example_proj2
Зря вы все из исходников компилите, как потом обновлять планируете? ручками?
Лучше сразу ставить версию из официального репозитория: nginx.org/en/linux_packages.html — uwsgi модуль там есть.Почему nginx-full, а не nginx? В nginx-full уже входит модуль для работы с uwsgi.apt-get install nginx-full
[uwsgi]
protocol = uwsgi # (protocol = wsgi кстати, а почему не uwsgi?)
socket = /tmp/%n.sock # где %n - имя файла без расширения
chdir = /home/hosting/%n
venv = /home/hosting/.virtualenvs/%n
# не замечал чтобы что-то не подхватывало, ну ладно
pythonpath = %(venv)/lib/python2.7/site-packages/setuptools-0.6c11-py2.7.egg
# далее по аналогии раз уж такое понадобилось, понятно что %(venv) короче и удобнее чем прописывать сто раз путь.
# с django 1.4 не надо env = DJANGO_SETTINGS_MODULE=settings
module = %n.wsgi # начиная с джанго 1.4 можно так а не django.core.handlers.wsgi:WSGIHandler()
enable-threads = true
single-interpreter = true
lazy-apps = true
memory-report = true
uwsgi --plugin emperor_mongodb --emperor "mongodb://127.0.0.1:27107,emperor.vassals,{enabled:1}"
или
uwsgi --plugin emperor_pg --emperor "pg://host=127.0.0.1 user=foobar dbname=emperor;SELECT name,config,ts FROM vassals"
Можно было иметь всего 1 экземпляр uwsgi а для python2/python3 просто разные виртуальные окружения и у приложений в конфигах прописать например «plugin = python3» а вообще какой питон в вирт окружении стоит такой и подхватится, так что не надо делать разные uwsgi.
root@192756:~/uwsgi-1.9.10# /opt/python2.7/bin/python uwsgiconfig.py --plugin plugins/python/ core python27
using profile: buildconf/core.ini
detected include path: ['/usr/lib/gcc/x86_64-linux-gnu/4.6/include', '/usr/local/include', '/usr/lib/gcc/x86_64-linux-gnu/4.6/include-fixed', '/usr/include/x86_64-linux-gnu', '/usr/include']
*** uWSGI building and linking plugin plugins/python/ ***
[gcc -pthread] /usr/lib/uwsgi/python27_plugin.so
/usr/bin/ld: /opt/python2.7/lib/python2.7/config/libpython2.7.a(abstract.o): relocation R_X86_64_32S against `_Py_NotImplementedStruct' can not be used when making a shared object; recompile with -fPIC
/opt/python2.7/lib/python2.7/config/libpython2.7.a: could not read symbols: Bad value
collect2: ld returned 1 exit status
*** unable to build python27 plugin ***
Ну и странно что не воспользовались режимом Tyrant(emperor-tyrant)
Мульти-хостинг django приложений с помощью nginx + uwsgi + virtualenv