大局觀

大局觀

大局觀

我有一個 Flask 站點,之前在 Linode 上的 Ubuntu 上成功運行。我用 Yeoman 引導它,因此,我不需要弄清楚 nginx、wsgi/Werkzeug 和 Gunicorn 之間的區別。

然而,現在我正試圖使用他們預先配置的 Ubuntu 16.04 磁碟映像和 Dokku 0.7.2 將它遷移到我的第一個 Digitalocean Droplet,這讓我很煩惱。這是我第一次使用 Docker 或 Dokku,或者說一般的容器化。

Dokku 在部署我的 Flask 應用程式時沒有給出錯誤——它告訴我應用程式正在我的 Droplet 的 IP 位址上運行,後跟:17520. (我沒有使用域名,只使用IP位址。)

問題定義

我的網站不回應 HTTP 請求,儘管 Dokku 表示部署成功。 Chrome 顯示「無法存取此網站」。

我已經嘗試過的解決方案

Dokku 嘗試了幾次才部署我的應用程序,沒有出現錯誤,因為我需要將一些文件添加到本地存儲庫的根目錄中,然後再次嘗試推送它。

流程檔案

首先,我需要 Procfile,其中包含單行 web: python run.pywhere run.pyis:

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 範例都gunicorn用作 HTTP 伺服器,因此我將web:gunicorn app:app新增gunicorn==0.17.2到我的requirements.txt. I changedProcfile中。 toDokku在安裝這個版本時沒有拋出錯誤,但仍然沒有回應HTTP請求。

紀錄

多庫日誌

當我登入 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 所以我也嘗試將 :5000 附加到 IP 位址。當然,為了安全起見,我也嘗試了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此資訊)

相關內容