总体情况

总体情况

总体情况

我有一个 Flask 网站,以前它在 Linode 上的 Ubuntu 上成功运行。我用 Yeoman 引导它,因此,我不需要弄清楚 nginx、wsgi/Werkzeug 和 gunicorn 之间的区别。

但是,现在我正尝试将其迁移到我的第一个 Digitalocean droplet,使用他们预先配置的 Ubuntu 16.04 磁盘映像和 Dokku 0.7.2,这让我很为难。这是我第一次使用 Docker 或 Dokku,或者一般的容器化。

部署我的 Flask 应用程序时,Dokku 没有给出错误——它告诉我该应用程序正在我的 droplet 的 IP 地址上运行,后跟:17520。 (我没有使用域名,只使用 IP 地址。)

问题定义

我的网站没有响应 HTTP 请求,尽管 Dokku 表示已成功部署。Chrome 提示“无法访问此站点”。

我已经尝试过的解决方案

Dokku 尝试了几次才成功部署了我的应用程序,因为我需要将一些文件添加到本地存储库的根目录,然后尝试再次推送。

Procfile

首先我需要 Procfile,它包含单行网页:python run.py其中run.py

from app import app app.run(host = '0.0.0.0', debug = True)

忽略我的 Node.js 开发工具

接下来,我需要阻止 Dokku 看到我的 Node.js 开发工具并尝试将其部署为 Node.js 应用程序。因此,我添加了.slugignore包含单行的package.json,以及.buildpacks包含单行的https://github.com/heroku/heroku-buildpack-python,然后再次推送到git push dokku

古尼康

当我启动此应用程序时,Yeoman 并未包含 -gunicorn只有 nginx 和 wsgi/Werkzeug。我注意到所有 Python Procfile 示例都用作gunicornHTTP 服务器,因此我将“web: gunicorn app:app”添加gunicorn==0.17.2到我的requirements.txt. I changedProcfile中to。安装此版本时,Dokku 没有抛出错误,但仍然没有对 HTTP 请求的响应。

日志

Dokku日志

当我登录到我的 droplet 并运行命令时dokku log [my_app_name],它显示:

2017-01-17T17:11:04.733185275Z app[web.1]: * Running on http://0.0.0.0:5000/ (Press CTRL+C to quit) 2017-01-17T17:11:04.734938531Z app[web.1]: * Restarting with stat 2017-01-17T17:11:05.024834922Z app[web.1]: * Debugger is active! 2017-01-17T17:11:05.029750092Z app[web.1]: * Debugger pin code: 208-261-801 所以我也尝试在 IP 地址后附加 :5000。当然,为了安全起见,我也尝试了端口 80。还是没成功。

我安装后gunicorn,日志显示:

2017-01-18T17:09:38.303046670Z app[web.1]: 2017-01-18 17:09:38 [8] [INFO] Starting gunicorn 0.17.2 2017-01-18T17:09:38.303864158Z app[web.1]: 2017-01-18 17:09:38 [8] [INFO] Listening at: http://0.0.0.0:5000 (8) 2017-01-18T17:09:38.304140278Z app[web.1]: 2017-01-18 17:09:38 [8] [INFO] Using worker: sync 2017-01-18T17:09:38.310057688Z app[web.1]: 2017-01-18 17:09:38 [148] [INFO] Booting worker with pid: 148

事件日志

仍然登录到我的 droplet,我转到 var/log/dokku 并打开文件events.log,最后得到以下内容: Jan 17 16:27:55 [my-app-name] dokku-installer.py[7291]: 127.0.0.1 - - [17/Jan/2017 16:27:55] "GET /favicon.ico HTTP/1.0" 200 - Jan 17 16:28:27 [my-app-name] dokku-installer.py[7291]: 127.0.0.1 - - [17/Jan/2017 16:28:27] "HEAD / HTTP/1.0" 200 - Jan 17 16:29:49 [my-app-name] dokku-installer.py[7291]: SHA256: [then the SHA] Jan 17 16:29:50 [my-app-name] dokku-installer.py[7291]: 127.0.0.1 - - [17/Jan/2017 16:29:50] "POST /setup HTTP/1.0" 200 - Jan 17 16:29:50 [my-app-name] dokku-installer.py[7291]: Stopping nginx (via systemctl): nginx.service. Jan 17 16:29:51 [my-app-name] dokku-installer.py[7291]: Starting nginx (via systemctl): nginx.service. Jan 17 16:29:51 [my-app-name] dokku-installer.py[7291]: /bin/sh: 1: stop: not found

答案1

您的 nginx 配置和 nginx 日志是什么?此 nginx 实例是否在主机上本地运行并使用 systemd 进行管理?

netstat -tulpn服务器上说什么?

您是否看到容器中的端口 5000 转发到主机上的端口?(检查docker ps此信息)

相关内容