2013-04-27 123 views
2

这可能是一种奇怪的问题,但我对这些东西并不是太熟悉,我不知道如何搜索这种错误。nginx + uWSGI上的Flask返回一个404错误,除非linux目录存在

我有一台配置了nginx和uWSGI的服务器。一切运行良好,日志中没有错误,我可以看到。但是,当我执行下面的代码:

from flask import Flask 
app = Flask(__name__) 

@app.route('/test/') 
def page1(): 
    return 'Hello World' 

@app.route('/') 
def index(): 
    return 'Index Page' 

我不能,除非里面的Linux存在/测试/目录下一次我创建目录,一切都加载罚款查看http://ezte.ch/test/。否则,我会得到一个传递给uWSGI的404错误(它确实表明它正在接收终端中的请求)过程。

这里是我的uWSGI config.ini文件:

[uwsgi] 
project = eztech 

uid = www-data 
gid = www-data 
plugins = http,python 

socket = /usr/share/nginx/www/eztech/uwsgi.sock 



chmod-socket = 775 
chown-socket = www-data:www-data 
wsgi-file hello.py 
callable app 
processes 4 
threads 2 

这里是我的nginx的配置:

  server { 
    listen 80; ## listen for ipv4; this line is default and implied 
    listen [::]:80 default ipv6only=on; ## listen for ipv6 
    autoindex on; 
    root /usr/share/nginx/www/eztech/public_html; 
    index index.html index.htm; 
    # Make site accessible from http://localhost/ 
    server_name ezte.ch; 
    location/{ 
      uwsgi_pass unix:/usr/share/nginx/www/eztech/uwsgi.sock; 
      include uwsgi_params; 
      uwsgi_param   UWSGI_CHDIR   /usr/share/nginx/www/eztech/public_html; 
      uwsgi_param   UWSGI_MODULE hello; 
      uwsgi_param   UWSGI_CALLABLE app; 
      # First attempt to serve request as file, then 
      # as directory, then fall back to index.html 
      try_files $uri $uri/ /index.html; 
      # Uncomment to enable naxsi on this location 
      # include /etc/nginx/naxsi.rules 
    } 

下面是我得到我的配置文件运行uWSGI时:

[uWSGI] getting INI configuration from config.ini 
    open("./http_plugin.so"): No such file or directory [core/utils.c line 3347] 
    !!! UNABLE to load uWSGI plugin: ./http_plugin.so: cannot open shared object file: No such file or directory !!! 
    open("./python_plugin.so"): No such file or directory [core/utils.c line 3347] 
    !!! UNABLE to load uWSGI plugin: ./python_plugin.so: cannot open shared object file: No  such file or directory !!! 
    *** Starting uWSGI 1.9.8 (64bit) on [Sat Apr 27 06:29:18 2013] *** 
    compiled with version: 4.6.3 on 27 April 2013 00:06:22 
    os: Linux-3.2.0-36-virtual #57-Ubuntu SMP Tue Jan 8 22:04:49 UTC 2013 
    nodename: ip-10-245-51-230 
    machine: x86_64 
    clock source: unix 
    detected number of CPU cores: 1 
    current working directory: /usr/share/nginx/www/eztech 
    detected binary path: /usr/local/bin/uwsgi 
    *** WARNING: you are running uWSGI without its master process manager *** 
    your processes number limit is 4595 
    your memory page size is 4096 bytes 
    detected max file descriptor number: 1024 
    lock engine: pthread robust mutexes 
    uwsgi socket 0 bound to UNIX address /usr/share/nginx/www/eztech/uwsgi.sock fd 3 
    setgid() to 33 
    setuid() to 33 
    Python version: 2.7.3 (default, Aug 1 2012, 05:25:23) [GCC 4.6.3] 
    *** Python threads support is disabled. You can enable it with --enable-threads *** 
    Python main interpreter initialized at 0x2505520 
    your server socket listen backlog is limited to 100 connections 
    your mercy for graceful operations on workers is 60 seconds 
    mapped 72688 bytes (70 KB) for 1 cores 
    *** Operational MODE: single process *** 
    *** no app loaded. going in full dynamic mode *** 
    *** uWSGI is running in multiple interpreter mode *** 
    spawned uWSGI worker 1 (and the only) (pid: 12800, cores: 1) 

感谢您提供任何帮助!

+1

我从来没有设法得到uWSGI运行正常,所以我切换到Gunicorn,但你有没有尝试过的瓶文档中的配置? http://flask.pocoo.org/docs/deploying/uwsgi/#configuring-nginx它没有'try_files'这一行,看起来像是会导致这个问题的东西。 – Blender 2013-04-27 06:29:41

回答

2

正如Blender所说,应该没有try_files你的上游在哪里调用。

以下nginx的配置是足够举办烧瓶应用:

server { 
    listen 80; 
    server_name ezte.ch; 

    location/{ 
     uwsgi_pass unix:/usr/share/nginx/www/eztech/uwsgi.sock; 
     include uwsgi_params; 
    } 
} 

我烧瓶配置:

<uwsgi> 
    <autostart>true</autostart> 
    <master/> 
    <pythonpath>/var/www/apps/someapp/</pythonpath> 
    <plugin>python</plugin> 
    <module>someapp:app</module> 
    <processes>4</processes> 
</uwsgi> 

所以有路径/无功/网络/应用/ someapp /和瓶文件someapp .py

0

我有同样的问题。只是删除这条线从nginx的配置:

root /usr/share/nginx/www/eztech/public_html;