[英]Flask app on uwsgi/nginx - unix socket file is not created on booting
I'm trying to use Flask app on uwsgi/nginx. 我正在尝试在uwsgi / nginx上使用Flask应用程序。
Following http://uwsgi-docs.readthedocs.org/en/latest/tutorials/Django_and_nginx.html and http://www.markjberger.com/flask-with-virtualenv-uwsgi-nginx/ , I could make wiki.ini
file, 关注http://uwsgi-docs.readthedocs.org/en/latest/tutorials/Django_and_nginx.html和http://www.markjberger.com/flask-with-virtualenv-uwsgi-nginx/ ,我可以制作wiki.ini
文件,
[uwsgi]
vhost = true
socket = /tmp/flask_app.sock
venv = /home/ubuntu/webapp/flask/hello/.env
chdir = /home/ubuntu/webapp/flask/hello
module = flaskapp
callable = app
chmod-socket = 666
I checked the wiki.ini
file works fine with uwsgi --ini wiki.ini
. 我检查了wiki.ini
文件与uwsgi --ini wiki.ini
一起uwsgi --ini wiki.ini
。
Then, I tried to start the Flask app when booting. 然后,我尝试在启动时启动Flask应用程序。
From sudo update-rc.d uwsgi enable
, I could start the uwsgi service in booting time, and copied the wiki.ini file in /etc/uwsgi/apps-enabled
directory. 从sudo update-rc.d uwsgi enable
,我可以在启动时启动uwsgi服务,并将wiki.ini文件复制到/etc/uwsgi/apps-enabled
目录中。
This is the conf file for nginx. 这是nginx的conf文件。
server {
listen 80;
server_name wiki.example.com;
access_log /var/log/nginx/uwsgi_access.log;
error_log /var/log/nginx/uwsgi_error.log;
location / { try_files $uri @riki; }
location @riki {
include uwsgi_params;
uwsgi_pass unix:/tmp/flask_app.sock;
}
error_page 404 /404.html;
}
However, when I rebooted my ubuntu server, the Flask app isn't working. 但是,当我重新启动我的ubuntu服务器时,Flask应用程序无法运行。 I checked the error log to find this error message. 我检查了错误日志以找到此错误消息。
2015/11/07 17:48:17 [crit] 1055#0: *1 connect() to
unix:/tmp/flask_app.sock failed (2: No such file or directory)
while connecting to upstream, client: 68.203.30.28, server: wiki.example.com,
I created the /tmp/flask_app.sock
file and run chown -R www-data:www-data /tmp/flask_app.sock
to make the application working. 我创建了/tmp/flask_app.sock
文件并运行chown -R www-data:www-data /tmp/flask_app.sock
以使应用程序正常工作。
> touch /tmp/flask_app.sock
> sudo chown www-data:www-data /tmp/flask_app.sock
> sudo service uwsgi restart
> sudo service nginx restart
However, I had another connection refuse error. 但是,我有另一个连接拒绝错误。
2015/11/07 17:50:38 [error] 1055#0: *4 connect() to
unix:/tmp/flask_app.sock failed (111: Connection refused) while
connecting to upstream, client: 68.203.30.28,
server: wiki.example.com, request: "GET / HTTP/1.1",
upstream: "uwsgi://unix:/tmp/flask_app.sock:", host: "wiki.example.com"
What might be wrong? 可能有什么问题? How to teach uwsgi to create the unix domain socket? 如何教uwsgi创建unix域套接字? Also, how to make the connection work? 另外,如何使连接工作? I use ubuntu 14.04. 我使用的是ubuntu 14.04。
Removing the /tmp/flask_app.sock
and run uwsgi --ini /etc/uwsgi/apps-enabled/wiki.ini
makes the app working fine. 删除/tmp/flask_app.sock
并运行uwsgi --ini /etc/uwsgi/apps-enabled/wiki.ini
使应用程序正常工作。
The main issue seems to be from the uwsgi service; 主要问题似乎来自uwsgi服务; it just doesn't work. 它只是不起作用。
I found another way to start uwsgi at startup: upstart and uwsgi --emperor
from http://uwsgi-docs.readthedocs.org/en/latest/Upstart.html and http://upstart.ubuntu.com 我找到了另一种在启动时启动uwsgi --emperor
:upstart和uwsgi --emperor
来自http://uwsgi-docs.readthedocs.org/en/latest/Upstart.html和http://upstart.ubuntu.com
The process is just make a flask.conf
file in /etc/init
directory. 该过程只是在/etc/init
目录中创建一个flask.conf
文件。 uwsgi --emperor
controls all the ini files in the uwsgi directory. uwsgi --emperor
控制uwsgi --emperor
目录中的所有ini文件。
# simple uWSGI script
# http://uwsgi-docs.readthedocs.org/en/latest/Upstart.html
description "uwsgi tiny instance"
start on runlevel [2345]
stop on runlevel [06]
respawn
exec uwsgi --emperor /etc/uwsgi/apps-enabled
I also had to sudo update-rc.d uwsgi disable
so that uwsgi service should be disabled. 我还必须sudo update-rc.d uwsgi disable
以便sudo update-rc.d uwsgi disable
uwsgi服务。
I also found this site http://flaviusim.com/blog/Deploying-Flask-with-nginx-uWSGI-and-Supervisor/ for invoking uswgi at startup, but I didn't test it. 我还发现这个网站http://flaviusim.com/blog/Deploying-Flask-with-nginx-uWSGI-and-Supervisor/在启动时调用uswgi,但我没有测试它。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.