Большинство доступных обучающих программ показывают, как настроить uWSGI с восходящим HTTP-сервером (например, NGINX). Но uWSGI может действовать красиво, как маршрутизатор/прокси/балансир нагрузки - см. this Для моего проекта я не хотел настраивать NGINX в этот момент, поэтому я начал изучать возможность обслуживания веб-страниц через uWSGI. Ответ здесь показывает, как настроить его с помощью Pyramid.Настройка uWSGI в качестве веб-сервера с пирамидой (без NGINX)
5
A
ответ
10
Я использую pyramid_mongodb scaffold, который я изменил, чтобы заставить его работать на python3. См. here. Предположим, что у нас есть проект Pyramid (созданный с помощью pcreate -s pyramid_mongodb MyProject
). Вот uWSGI конфигурации, необходимые в разработке/production.ini
[uwsgi]
http = 0.0.0.0:8080
#http-to /tmp/uwsgi.sock - use this for standalone mode
#socket = :9050
master = true
processes = 2
harakiri = 60
harakiri-verbose = true
limit-post = 65536
post-buffering = 8192
daemonize = ./uwsgi.log
pidfile = ./orange_uwsgi.pid
listen = 128
max-requests = 1000
reload-on-as = 128
reload-on-rss = 96
no-orphans = true
#logto= <log file>
log-slow = true
virtualenv = <path to virtual environment>
#file = /path/to/pyramid.wsgi
#callable = application
need-app = true
Кроме того, поскольку мы используем uWSGI мы можем закомментировать server
часть от ини
#[server:main]
#use = egg:waitress#main
#host = 0.0.0.0
#port = 6544
Чтобы запустить использование сервера uwsgi --ini-paste development.ini
2
Намного проще! Не нужно изменять вообще файл "development.ini". Создать в папке App, где ваш «развитие» и «производство» INI файлы находятся, файл с именем «wsgi.app» следующего содержания:
from pyramid.paster import get_app,setup_logging
ini_path = '/pathto/myapp/development.ini'
setup_logging(ini_path)
application = get_app(ini_path,'main')
создают скажем «myapp.conf» с его содержанием :
[uwsgi]
socket = 127.0.0.1:3053
uid = daemon
gid = daemon
venv = /pathto/myenv
project_dir = /pathto/myapp
chdir = %(project_dir)
master = true
plugins = plugins/python/python
check-static = %(project_dir)
static-skip-ext = .py
static-skip-ext = .pyc
static-skip-ext = .inc
static-skip-ext = .tpl
pidfile2 = /var/run/uwsgi/myinfo.pid
disable-logging = true
processes = 8
cheaper = 2
enable-threads = true
offload-threads = N
py-autoreload = 1
wsgi-file = /pathto/myapp/wsgi.py
и в Кoнфигурировании NGINX очень просто:
server {
listen [xxxx:xxxx:xxxx:xxx:xxxx:xxxx]:80; #for IPv6
listen xxx.xxx.xxx.xxx:80; #for IPv4
server_name myapp.domain.com;
location/{
try_files $uri @uwsgi;
}
location @uwsgi {
include uwsgi_params;
uwsgi_pass 127.0.0.1:3053;
}
}
- рестарт Nginx с «/ путь/к/USR/SBIN/Nginx -s перезагрузить»
- начать процесс uwsgi -> изменение "кд /usr/local/uwsgi-2.0.9" -> ./uwsgi -ini /var/www/myapp.conf
Часть NGINX в этом случае только (опционально). Но на данный момент приложение должно быть способно слушать запросы на http://127.0.0.1:3053 – SmileMZ