2015-06-03 2 views
1

Я изо всех сил пытаюсь развернуть приложение на флешке на своем сервере, используя uWSGI в Императорский режим весь день, и я не могу понять, почему он не работает. Я прочитал все остальные вопросы о режиме uWSGI Emperor здесь & спросил на #uwsgi & список рассылки без ответа.Конфигурация uWSGI Emperor

Моя настройка - nginx (1.4.6-1ubuntu3.2), uWSGI == 2.0.10, установленная через pip в virtualenv, Flask == 0.10.1 и Python 3.4.0. supervisord - , ответственный за запуск процесса Императора.

Сама колба приложение отлично работает, когда я начинаю его вручную привязывается к TCP порту, и когда я вручную запустить uwsgi нравится:

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

Я заметил, что даже если я думаю, что я настроил вассала использовать Unix сокета, он сообщает о запуске, что он слушает http://127.0.0.1:5000/

Я проверил трассирование, что 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 

ини файл вассала выглядит следующим образом:

[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) 

ответ

0

Брайан в списке рассылки uWSGI решил это для меня. Ответ: не вызывайте app.run() в файле wsgi.py! Я знал, что это будет что-то неловкое.

Смежные вопросы