簡體   English   中英

uWSGI Emperor配置

[英]uWSGI Emperor configuration

我整天都在努力使用Emperor模式下的uWSGI將flask應用程序部署到我的服務器上,而茫然為什么它不起作用。 我在這里閱讀了所有其他uWSGI Emperor模式問題,並在#uwsgi和郵件列表中詢問,沒有任何回復。

我的設置是nginx(1.4.6-1ubuntu3.2),通過pip將uWSGI == 2.0.10安裝到virtualenv,Flask == 0.10.1和Python 3.4.0中。 主管負責啟動皇帝程序。

當我手動將其綁定到TCP端口時,以及當我手動運行uwsgi時,flask應用程序本身都能正常運行:

uwsgi -s /tmp/oauthsvc.sock -w wsgi --stats /tmp/oauthsvc-stats.sock

我確實注意到,即使我認為我已將vassal配置為使用unix套接字,它也會在啟動時報告它正在監聽http://127.0.0.1:5000/

我用strace驗證了nginx正在打開套接字,並且該套接字的權限為777:

srwxrwxrwx 1 oauthsvc oauthsvc 0 Jun  3 18:34 /tmp/oauthsvc.sock
srwxrwxrwx 1 oauthsvc oauthsvc 0 Jun  3 18:08 /tmp/oauthsvc-stats.sock

但是連接最終只是超時。

我的配置和一些日志輸出如下。

Nginx配置非常簡單:

server {                                                                    
    listen 80;                                                              
    server_name default;                                                    

    location = /robots.txt  { access_log off; log_not_found off; }          
    location = /favicon.ico { access_log off; log_not_found off; }          

    location / {                                                            
        include uwsgi_params;                                               
        uwsgi_pass unix:/tmp/oauthsvc.sock;                                 
    }                                                                       
} 

主管使用以下命令啟動emporer進程:

[program:oauthsvc-emperor]                                                      
command=/services/oauthsvc/services/oauthsvc/bin/uwsgi --emperor /services/oauthsvc/etc/uwsgi/vassals --die-on-term --uid 1005 --gid 1005 --logto /services/oauthsvc/var/log/uwsgi/emperor.log
user=oauthsvc                                                                   
autostart=true                                                                  
autorestart=true                                                                
redirect_stderr=true 

vassal的ini文件如下所示:

[uwsgi]                                                                         
# do not turn on master mode when spawned by emperor                            
# http://stackoverflow.com/questions/15055002/uwsgi-master-with-emperor-spawns-two-emperors
#master = true                                                                  
protocol = uwsgi                                                                
socket = /tmp/oauthsvc.sock                                                     
stats = /tmp/oauthsvc-stats.sock                                                
daemonize = /services/oauthsvc/var/log/uwsgi/oauthsvc.log                       
chdir = /services/oauthsvc/services/oauthsvc/oauthsvc-server                    
wsgi-file = wsgi.py                                                             
callable = app                                                                  
chmod-socket = 777                                                              
uid = 1005                                                                      
gid = 1005                                                                      
virtualenv = /services/oauthsvc/services/oauthsvc                               
# PYTHONHOME                                                                    
home = /services/oauthsvc/services/oauthsvc                                     
#env =                                                                           
processes = 4
vacuum = true                                                                   
# If you start uWSGI without threads, the Python GIL will not be enabled, so    
# threads generated by your application will never run unless you include:      
enable-threads = true
harakiri = 30

最后,wsgi.py:

#!/usr/bin/env python3                                                          

from oauthsvc.flask.server import parse_args, configured_app                    

args = parse_args()                                                             
app = configured_app(args.config, debug=args.debug)                             
app.run()  

皇帝日志:

*** Starting uWSGI 2.0.10 (64bit) on [Wed Jun  3 18:34:25 2015] ***
compiled with version: 4.8.2 on 03 June 2015 18:32:12
os: Linux-3.13.0-48-generic #80-Ubuntu SMP Thu Mar 12 11:16:15 UTC 2015
nodename: ip-10-0-1-224
machine: x86_64
clock source: unix
pcre jit disabled
detected number of CPU cores: 1
current working directory: /
detected binary path: /services/oauthsvc/src/bs-oauth-svc.2015-06-03.183113/bin/uwsgi
*** WARNING: you are running uWSGI without its master process manager ***
your processes number limit is 30038
your memory page size is 4096 bytes
detected max file descriptor number: 1024
*** starting uWSGI Emperor ***
*** has_emperor mode detected (fd: 6) ***
[uWSGI] getting INI configuration from oauthsvc.ini

附庸日志:

*** Starting uWSGI 2.0.10 (64bit) on [Wed Jun  3 18:34:25 2015] ***
compiled with version: 4.8.2 on 03 June 2015 18:32:12
os: Linux-3.13.0-48-generic #80-Ubuntu SMP Thu Mar 12 11:16:15 UTC 2015
nodename: ip-10-0-1-224
machine: x86_64
clock source: unix
pcre jit disabled
detected number of CPU cores: 1
current working directory: /services/oauthsvc/etc/uwsgi/vassals
detected binary path: /services/oauthsvc/src/bs-oauth-svc.2015-06-03.183113/bin/uwsgi
chdir() to /services/oauthsvc/services/oauthsvc/oauthsvc-server
your processes number limit is 30038
your memory page size is 4096 bytes
 *** WARNING: you have enabled harakiri without post buffering. Slow upload could be rejected on post-unbuffered webservers ***
detected max file descriptor number: 1024
lock engine: pthread robust mutexes
thunder lock: disabled (you can enable it with --thunder-lock)
uwsgi socket 0 bound to UNIX address /tmp/oauthsvc.sock fd 3
Python version: 3.4.0 (default, Apr 11 2014, 13:08:40)  [GCC 4.8.2]
Set PythonHome to /services/oauthsvc/services/oauthsvc
Python main interpreter initialized at 0x135d4d0
python threads support enabled
your server socket listen backlog is limited to 100 connections
your mercy for graceful operations on workers is 60 seconds
mapped 363840 bytes (355 KB) for 4 cores
*** Operational MODE: preforking ***
 * Running on http://127.0.0.1:5000/ (Press CTRL+C to quit)

uWSGI郵件列表上的Brian為我解決了這個問題。 答案是:不要在wsgi.py文件中調用app.run()! 我知道這會令人尷尬。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM