[编辑]
我设法通过从项目文件夹中启动uwsgi来加载烧瓶app模块。我现在有一个问题,即nginx没有对套接字文件的权限(向下滚动到问题的结尾)。如果有人可以提供帮助......?
[/编辑]
关注this tutorial我正在尝试使用uWSGI和nginx运行我的Flask网站。完全按照教程说的那样工作正常。我现在想要运行自己的网站。我自己的网站项目的结构如下:
myownproject
|-app
| -__init__.py
|-run.py
|-myownproject_nginx.conf
|-myownproject_uwsgi.ini
其中app
加载__init__.py
,如下所示:
app = Flask(__name__)
和myownproject_uwsgi.ini看起来像这样:
[uwsgi]
#application's base folder
base = /home/kramer65/myownproject
#python module to import
app = app
module = %(app)
# I disabled these lines below because I don't use a venv (please don't ask)
# home = %(base)/venv
# pythonpath = %(base)
#socket file's location
socket = /home/kramer65/myownproject/%n.sock
#permissions for the socket file
chmod-socket = 666
#the variable that holds the flask application inside the imported module
callable = app
#location of log files
logto = /var/log/uwsgi/%n.log
但是当我跑这个时:
$ uwsgi --ini /home/kramer65/myownproject/myownproject_uwsgi.ini
[uWSGI] getting INI configuration from /home/kramer65/myownproject/myownproject_uwsgi.ini
我在/var/log/uwsgi/myownproject_uwsgi.log
中获得了以下日志:
*** Operational MODE: single process ***
ImportError: No module named app
unable to load app 0 (mountpoint='') (callable not found or import error)
*** no app loaded. going in full dynamic mode ***
*** uWSGI is running in multiple interpreter mode ***
为什么uwsgi没有找到我的可赎回权?为什么mountpoint
为空(=''
)?我在这里做错了什么?
有人知道如何让它正常工作吗?
[编辑]
好的,我尝试在uwsgi --ini /home/kramer65/myownproject/myownproject_uwsgi.ini
项目文件夹中运行myownproject
,这解决了这个问题;它现在找到可调用的,似乎工作正常。
我仍然得到502,下一个问题似乎是nginx没有对套接字文件的权限的权限问题。 /var/log/nginx/error.log
说:
2015/10/27 11:40:36 [暴击] 14276#0:* 1 connect()来 unix:/home/kramer65/myownproject/myownproject_uwsgi.sock失败(13: 权限被拒绝)连接到上游时,客户端: 80.xxx.xxx.xxx,server:localhost,request:“GET / HTTP / 1.1”,上游: “uwsgi:// UNIX:/home/kramer65/myownproject/myownproject_uwsgi.sock:” 主持人:“52.xx.xx.xxx”
所以我将chmod-socket = 666
更改为chmod-socket = 777
。在执行ls -l
时,我实际上看到套接字文件具有完全权限,但我仍然得到上面粘贴的错误。
有什么想法让这个工作吗?
答案 0 :(得分:2)
base
配置只是一个内部变量。您注释掉的部分导致了您的问题。
如果您不想使用virtualenv并设置python路径,请将base
配置更改为chdir
。
chdir = /home/kramer65/myownproject
在内部,uWSGI将从chdir
而不是从当前目录运行。
关于套接字权限问题,nginx用户(可能是www-data
)无权访问您的个人文件夹(/home/kramer65/
)。您必须将套接字设置为另一个文件夹,其中nginx和uwsgi可以访问。