【发布时间】:2017-05-31 01:04:34
【问题描述】:
我正在按照这个在 Ubuntu 16-04 上部署一个 flask 应用程序(简单的你好世界)。 digital Ocean tutorial
在测试uWSGI Serving之前一切正常。之后,我按照描述的步骤进行操作,当我最终到达底部并检查服务器 IP 地址时,我得到了:
502 Bad Gateway
好的。我搜索并检查了我的错误日志,我得到了这个:-
2017/01/16 05:29:27 [crit] 20714#20714: *2 connect() to unix:/home/sajjan/project/project.sock failed (2: No such file or directory) while connecting to upstream, client: xx.9.xxx.xxx, server: 138.xxx.xx.xxx, request: "GET / HTTP/1.1", upstream: "uwsgi://unix:/home/sajjan/project/project.sock:", host: "xx.xx.xx.xx"
所以在获取错误日志后,我手动创建了文件 project.sock。再次转到服务器 ip 地址,然后同样的错误 "502 Bad Gateway"
再次检查错误日志,发现这个
2017/01/16 06:07:11 [crit] 20874#20874: *1 connect() to unix:/home/sajjan/project/project.sock failed (13: Permission denied) while connecting to upstream, client: 47.9.237.113, server: XX.XX.XX.XX, request: "GET / HTTP/1.1", upstream: "uwsgi://unix:/home/sajjan/project/project.sock:", host: " XX.XX.XX.XX "
我发现了权限问题并使用以下命令更改权限
sudo chmod 666 project.sock
现在我检查了权限(使用 ls -l 文件名)
-rw-rw-rw- 1 root root 0 Jan 16 05:31 project.sock
现在我回去检查服务器的 IP,但发现相同的“502 Bad Gateway”。 我再次检查了错误日志,发现:
017/01/16 06:13:31 [error] 20897#20897: *6 connect() to unix:/home/sajjan/project/project.sock failed (111: Connection refused) while connecting to upstream, client: 47.9.237.113, server: XX.XX.XX.XX, request: "GET /favicon.ico HTTP/1.1", upstream: "uwsgi://unix:/home/sajjan/project/project.sock:", host: " XX.XX.XX.XX ", referrer: "http:// XX.XX.XX.XX /"
我在过去两天里搜索了很多关于上述错误的信息,但似乎没有什么对我有用。 我已经检查了这些答案,但没有任何帮助 stackanswer-1 stackanswer-2 并且我检查了所有数字海洋社区线程,但似乎没有任何效果。
我完全是服务器初学者,对 ubuntu 了解不多。如果你能帮助我找出我做错了什么或者建议一些更好的教程/方法来部署我的烧瓶应用程序,那么我会很高兴。
这些是我的文件
-
你好.py
from flask import Flask app = Flask(__name__) @app.route("/") def hello(): return "<h1 style='color:blue'>Hello There!</h1>" if __name__ == "__main__": app.run(host='0.0.0.0') -
项目.ini
[uwsgi] module = wsgi:app master = true processes = 5 socket = /home/sajjan/project/project.sock chmod-socket = 660 vacuum = true die-on-term = true -
wsgi.py
from hello import app if __name__ == "__main__": app.run() -
下面是文件:/etc/nginx/sites-available/project
server { listen 80; server_name 138.197.28.107; location / { include uwsgi_params; uwsgi_pass unix:/home/sajjan/project/project.sock; } }
当我运行命令时:
sudo service uwsgi restart
输出:
Failed to restart wsgi.service: Unit wsgi.service not found.
同时输出
sudo service nginx status/restart
那么这表明 nginx 正在运行。
帮帮我,如果还有什么想知道的,请告诉我。 谢谢
编辑:
我创建了一个 project.service 文件,其内容是:
[Unit]
Description=uWSGI instance to serve project
After=network.target
[Service]
User=sajjan
Group=www-data
WorkingDirectory=/home/sajjan/project
Environment="PATH=/home/sajjan/project/venv/bin"
ExecStart=/home/sajjan/project/venv/bin/uwsgi --ini project.ini
[Install]
WantedBy=multi-user.target
我发现我必须运行以下命令:
sudo systemctl start project
输出是:
Warning: project.service changed on disk. Run 'systemctl daemon-reload' to reload units.
当我跑步时
sudo systemcl reload project
然后输出:
Failed to reload project.service: Job type reload is not applicable for unit project.service.
See system logs and 'systemctl status project.service' for details.
当我检查“systemctl status project.service”时
● project.service - uWSGI instance to serve project
Loaded: loaded (/etc/systemd/system/project.service; enabled; vendor preset: enabled)
Active: failed (Result: exit-code) since Mon 2017-01-16 17:49:29 UTC; 6min ago
Main PID: 27157 (code=exited, status=203/EXEC)
Jan 16 17:49:29 learningwithpython systemd[1]: Started uWSGI instance to serve project.
Jan 16 17:49:29 learningwithpython systemd[1]: project.service: Main process exited, code=exited, status=203/EXEC
Jan 16 17:49:29 learningwithpython systemd[1]: project.service: Unit entered failed state.
Jan 16 17:49:29 learningwithpython systemd[1]: project.service: Failed with result 'exit-code'.
【问题讨论】:
-
Failed to restart wsgi.service: Unit wsgi.service not found.- 很抱歉队长明显的问题,但是你创建了/etc/systemd/system/wsgi.service单元文件吗?如果是,请显示内容。 -
@PiotrDawidiuk,检查编辑。顺便说一句,我创建了一个名为 project.service 而不是 wsgi.service 的文件。
-
消息说要重新加载
systemd进程,而不是project。运行sudo systemctl daemon-reload,然后运行sudo systemctl start project。 -
@PiotrDawidiuk,完成如你所说,但我仍然收到带有错误日志的“502 bad gate way”......
2017/01/17 11:31:14 [error] 28689#28689: *6 connect() to unix:/home/sajjan/project/project.sock failed (111: Connection refused) while connecting to upstream, client: XX.XXX.XX.XX, server: XX.XXX.XX.XX, request: "GET /favicon.ico HTTP/1.1", upstream: "uwsgi://unix:/home/sajjan/project/project.sock:", host: "XX.XXX.XX.XX", referrer: "http://XX.XXX.XX.XX/"
标签: python ubuntu nginx flask uwsgi