Hầu hết các hướng dẫn có sẵn cho thấy cách thiết lập uWSGI với máy chủ HTTP ngược dòng (như NGINX). Nhưng uWSGI đơn thuần có thể hoạt động tốt như bộ định tuyến/proxy/tải cân bằng - tham khảo this Đối với dự án của tôi, tôi không muốn thiết lập NGINX vào lúc này vì vậy tôi bắt đầu khám phá tùy chọn phục vụ các trang web thông qua uWSGI. Câu trả lời ở đây cho thấy cách thiết lập với Kim tự tháp.Thiết lập uWSGI làm máy chủ web với kim tự tháp (không NGINX)
5
A
Trả lời
10
Tôi đang sử dụng giàn giáo pyramid_mongodb, mà tôi đã sửa đổi để làm cho nó hoạt động trên python3. Xem here để biết chi tiết. Giả sử rằng chúng tôi có một dự án Kim tự tháp (được tạo với pcreate -s pyramid_mongodb MyProject
). Dưới đây là các cấu hình uWSGI cần thiết trong phát triển/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
Cũng vì chúng ta đang sử dụng uWSGI chúng ta có thể nhận xét ra server
phần từ ini
#[server:main]
#use = egg:waitress#main
#host = 0.0.0.0
#port = 6544
Để chạy việc sử dụng máy chủ uwsgi --ini-paste development.ini
2
Dễ dàng hơn nhiều! Không cần phải sửa đổi ở tất cả các tập tin "development.ini". Tạo trong thư mục App nơi bạn "phát triển" và "sản xuất" tập tin ini cư trú, một tập tin gọi là "wsgi.app" với các nội dung sau đây:
from pyramid.paster import get_app,setup_logging
ini_path = '/pathto/myapp/development.ini'
setup_logging(ini_path)
application = get_app(ini_path,'main')
tạo các giả "myapp.conf" với nội dung của nó :
[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
và configuation nginx là rất đơn giản:
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;
}
}
- khởi động lại nginx với "/ path/to/usr/sbin/nginx -s reload"
- bắt đầu quá trình uwsgi -> thay đổi thành "cd /usr/local/uwsgi-2.0.9" -> ./uwsgi -ini /var/www/myapp.conf
Phần NGINX trong trường hợp này chỉ là (tùy chọn). Nhưng tại thời điểm này, ứng dụng phải có khả năng nghe các yêu cầu trên http://127.0.0.1:3053 – SmileMZ