2013-05-03 23 views
5

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)

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; 
    } 
} 
  1. khởi động lại nginx với "/ path/to/usr/sbin/nginx -s reload"
  2. bắt đầu quá trình uwsgi -> thay đổi thành "cd /usr/local/uwsgi-2.0.9" -> ./uwsgi -ini /var/www/myapp.conf
+0

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