Bottle.py应用程序不能被nginx + uwsgifind

我有一个Python 3 bottle.py应用程序,我安装到虚拟环境(让PIP自动获取依赖)。 我试图让它在我的覆盆子pi下运行在nginxuwsgi下。

当我运行nginx和uwsgi时,访问http://localhost/icecrate导致“uWSGI Error Python application not found”。 我假设这意味着nginx正确连接到uwsgi,并且它是uwsgi无法find应用程序。

但是,如果我用uwsgi --http 0.0.0.0:8080 /etc/uwsgi/apps-enabled/icecrate.ini运行应用程序,那么http://localhost:8080会给我应用程序,这表明uwsgiconfiguration至less是充足。

我一直在search谷歌和文档几个小时的解决scheme。 我不知道我在这里做错了什么。

在/ etc / nginx的/网站可用/ icecrate

 server { listen 80; server_name raspberrypi; access_log /home/icecrate/logs/access.log; error_log /home/icecrate/logs/error.log; location /icecrate { uwsgi_pass unix:///tmp/icecrate.sock; include uwsgi_params; } } 

/etc/uwsgi/apps-available/icecrate.ini

 [uwsgi] vhost = true plugins = python3 socket = /tmp/icecrate.sock master = true enable-threads = false processes = 1 # this just imports the app callable and renames it to application wsgi-file = /home/icecrate/nginx.py # I get the same results using this method #module = icecrate.web #callable = app virtualenv = /home/icecrate/env touch-reload = /home/icecrate/reload 

应用程序代码在GitHub上 。

我结束了尝试和所有的configuration,重新开始,但我想我得到了这个想法。 我很确定这是一个权限问题。

默认情况下,nginx.conf指定www-data作为运行的用户,而以前的尝试没有做任何处理。 所有文件都由我自己拥有。 我没有改变默认用户,而是为www-data创build了一个主文件夹,这个文件夹现在可以保存icecrate virtualenv。 当设置应用程序时,我使用sudo -s -u www-data来完成所有的文件创build,所有的文件都拥有正确的所有者和权限。

Nginxconfiguration基本上是一样的,除了virtualenv文件夹现在回到套接字和日志:

 server { listen 80; server_name = raspberrypi; access_log /home/www-data/icecrate/logs/access.log; error_log /home/www-data/icecrate/logs/error.log; location /icecrate { uwsgi_pass unix:///home/www-data/icecrate/icecrate.sock; include uwsgi_params; } } 

在重builduwsgi应用程序ini时,我忽略了一些看起来并不重要的东西,但它也基本上是一样的:

 [uwsgi] plugins = python3 socket = /home/www-data/icecrate/icecrate.sock module = icecrate.web:app virtualenv = /home/www-data/icecrate touch-reload = /home/www-data/icecrate/reload # like ngnix, uwsgi should be www-data. uid = www-data gid = www-data # don't think this works, though logto = /home/www-data/icecrate/logs/uwsgi.log 

将configuration文件分别放在sites-enabledapps-enabled ,我启动了nginxuwsgi并将浏览器指向http://localhost/icecrate并得到了一个bottle.py 404错误。 我不认为自己一生中如此高兴看到404。