2014-03-25 128 views
3

我试图通过uWSGI将烧瓶应用部署到Nginx上,Fedora 20作为操作系统,而且我遇到了一些问题。烧瓶+ uWSGI + Nginx + Fedora 20安装问题

我有以下的配置文件:

NGINX - 预设配置有以下编辑:

location/{ try_files $uri @yourapplication; } 
location @yourapplication { 
     include uwsgi_params; 
     uwsgi_pass unix:/tmp/sjudson_app_uswgi.sock; 
} 

uWSGI:

[uwsgi] 
socket = /tmp/%n.sock 
wsgi-file = sjudson_app/sjudson_app.py 
callable = sjudson 
master = true 
chmod-socket = 666 
logto = /home/server/logs/uwsgi.log 

首先,当我尝试运行:

uwsgi --ini sjudson_app_uwsgi.ini 

我刚刚收到:

[uWSGI] getting INI configuration from sjudson_app_uwsgi.ini 

不确定。其次,当我直接在命令行中运行它:

uwsgi --socket /tmp/sjudson_app_uwsgi.sock --wsgi-file sjudson_app/sjudson_app.py --callable sjudson --master --chmod-socket=666 

我得到:

*** Starting uWSGI 2.0.3 (32bit) on [Tue Mar 25 17:58:44 2014] *** 
compiled with version: 4.8.2 20131212 (Red Hat 4.8.2-7) on 25 March 2014 16:48:01 
os: Linux-3.13.6-200.fc20.i686+PAE #1 SMP Fri Mar 7 17:17:53 UTC 2014 
nodename: new-host-6 
machine: i686 
clock source: unix 
detected number of CPU cores: 2 
current working directory: /home/server 
detected binary path: /usr/bin/uwsgi 
!!! no internal routing support, rebuild with pcre support !!! 
your processes number limit is 1024 
your memory page size is 4096 bytes 
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/sjudson_app_uwsgi.sock fd 3 
Python version: 2.7.5 (default, Feb 19 2014, 13:47:40) [GCC 4.8.2 20131212 (Red Hat 4.8.2-7)] 
*** Python threads support is disabled. You can enable it with --enable-threads *** 
Python main interpreter initialized at 0x881cc40 
your server socket listen backlog is limited to 100 connections 
your mercy for graceful operations on workers is 60 seconds 
mapped 127952 bytes (124 KB) for 1 cores 
*** Operational MODE: single process *** 
WSGI app 0 (mountpoint='') ready in 0 seconds on interpreter 0x881cc40 pid: 1131 (default app) 
*** uWSGI is running in multiple interpreter mode *** 
spawned uWSGI master process (pid: 1131) 
spawned uWSGI worker 1 (pid: 1136, cores: 1) 

但是,当我尝试连接到服务器,我得到一个502错误。我注意到这个stackoverflow后:Flask, nginx, and uwsgi与一个类似的问题,其中up​​voted答案涉及套接字权限不正确。然而,我确实有使用chmod插槽= 666参数,查看/ tmp目录:

srw-rw-rw-. 1 server server 0 Mar 25 17:53 sjudson_app_uwsgi.sock 

所以也没有看我,好像这是个问题。

编辑:

意识到我忘了,包括Nginx的错误消息:

2014/03/26 07:58:38 [crit] 792#0: *15 connect() to unix:/tmp/sjudson_app_uswgi.sock 
failed (2: No such file or directory) while connecting to upstream, client: 
173.79.242.54, server: localhost, request: "GET/HTTP/1.1", upstream: 
"uwsgi://unix:/tmp/sjudson_app_uswgi.sock:", host: "173.79.242.54" 

我不知道什么是在这种情况下,“没有这样的文件或目录”的意思。我知道.sock文件存在,所以它在努力寻找什么?

+0

检查nginx错误日志,uWSGI正确启动,因此您需要了解为什么nginx无法连接到它。当你开始使用“logto”时,日志会在指定的文件中,所以在我看到的命令行 – roberto

+0

中看不到更多信息是正常的,但这只是解释了为什么当我使用 - 尼尼国旗。它不能解释为什么我得到了502错误,因为日志与我在上面发布的命令行选项的输出信息相同。 – JackGibbs

+0

删除logto指令并从终端重新运行uwsgi。之后,尝试从nginx重新连接(确保始终检查nginx错误日志)。 “unix套接字上没有这样的文件或目录”意味着没有进程监听套接字。如果仍然不起作用,请尝试使用tcp套接字。 – roberto

回答

0

请更改nginx配置中的字符串,从
uwsgi_pass unix:/tmp/sjudson_app_uswgi.sock;

uwsgi_pass unix:///tmp/sjudson_app_uswgi.sock;

1

我几乎完全相同的设置和相同的错误信息。要解决它,我不得不这样做:

  • 变化插座声明,我uwsgi.ini文件:

    socket = 127.0.0.1:8081 
    
  • 以下内容添加到我的nginx.conf文件(超出服务器语句):

    upstream uwsgi { server 127.0.0.1:8081; } 
    
  • 将我的nginx.conf文件中的位置声明更改为:

    location/{ try_files $uri @uwsgi; } 
    location @uwsgi { 
        include uwsgi_params; 
        uwsgi_pass uwsgi; 
    } 
    

这就使nginx的和uwsgi沟通。这些说明取自http://blog.djcentric.com/setting-up-uswgi-nginx-what-you-need-to-know/