2015-02-27 2 views
1

У меня появилось приложение Web.py и вы хотите его запустить в производство. Как рекомендовано сообществом Web.py, я решил использовать для этого uWSGI и Nginx.UWSGI + NGINX 502 Bad Gateway

Мое приложение использует Memcached для хранения сеансов и MySQL для других задач хранения. Приложение отлично работает на моем MacBook. Я настроил настройку uWSGI + Nginx, которая работала нормально. Но знаю, что я получаю 502 Bad Gateway, когда пытаюсь получить доступ к странице индекса на моем сервере Ubuntu. НО: при вводе другой страницы я получаю все содержимое, которое я хотел. В целом приложение прекрасно работает в среде Ubuntu, так как я тестировал его, набрав python app.py 8080. Я смог войти в page.tld: 8080/и получить весь контент.

Моего uWSGI конфигурация:

[uwsgi] 
gid = www-data 
uid = www-data 
vhost = true 
plugins = python 
logdate 
#socket = /tmp/uwsgi_vhosts.sock 
socket = 127.0.0.1:3031 
master = true 
processes = 1 
harakiri = 120 
limit-as = 128 
memory-report 
no-orphans 

Nginx конфигурация:

server { 
    listen 80 default_server; 
    listen [::]:80 default_server ipv6only=on; 

    # Make site accessible from http://localhost/ 
    server_name page.tld; 

    location/{ 
      include uwsgi_params; 


     uwsgi_pass 127.0.0.1:3031; 

    # This is the absolute path to the folder containing your application 
      uwsgi_param UWSGI_CHDIR /var/www/page.tld/apps; 

    # This is actually not necessary for our simple application, 
    # but you may need this in future 
      uwsgi_param UWSGI_PYHOME /var/www/page.tld/apps; 

    # This is the name of your application file, minus the '.py' extension 
      uwsgi_param UWSGI_SCRIPT test; 
    } 

я получаю эти строки в vhosts.log из uWSGI:

libgcc_s.so.1 must be installed for pthread_cancel to work 
- DAMN ! worker 1 (pid: 1281) died, killed by signal 6 :(trying respawn ... 
- Respawned uWSGI worker 1 (new pid: 1330) 
Please let me know if you need to see other parts of the configuration. 

И эти строки в error.log nginx:

[error] 1233#0: *1 upstream prematurely closed connection while reading response header from upstream, client: xxx.xxx.xxx.xxx, server: page.tld, request: "GET/HTTP/1.1", upstream: "uwsgi://127.0.0.1:3031", host: "page.tld" 

Сообщите мне, если какие-либо другие журналы необходимы для решения этой проблемы.

Обновление: Кажется, что я получаю 502 Bad Gateway, когда хочу получить доступ к странице, которая должна загружать вещи из базы данных MySQL. Но поскольку он работает без uWSGI & NGINX Я предполагаю, что nginx по какой-то причине убивает экземпляр uwsgi, когда он пытается загрузить вещи из базы данных.

ответ

0

Я недавно исправил эту проблему, установив более высокий предел памяти в uwsgi. Вам необходимо перезапустить uwsgi. Я запускаю uwsgi императора при запуске. Итак, в моем случае я перезагрузился.

[uwsgi] 
... 
limit-as = 512 

система:

  • Ubuntu 14.04.1 LTS (GNU/Linux 3.13.0-43-generic x86_64)
  • mysqlclient==1.3.6