iT邦幫忙

0

使用Django上傳Heroku失敗(Internal Server Error)

個人是練習做個簡單的回話LineBot
初次使用Django,並且上傳至Heroku

問題
我使用runserver指令看http://127.0.0.1:8000/
可以得到如下參考文章網址的訊息
https://snow-resort-bot.herokuapp.com/
但我自己上傳至Heroku,在我的網址卻只會出現Internal Server Error的訊息
所以對話也沒有回傳
不知道為什麼2者會不同,檢查過程式碼應該都沒錯誤
是不是哪邊或是Heroku需要額定設定或版本之類的?

主要參考這篇進行
手把手教你搭建聊天機器人(LineBot+Python+QnAMaker+Heroku)-02建造LineBot Backend Server 並部署至Heroku

主要輔助這幾篇(其他還有一些)
http://lee-w.github.io/posts/bot/2016/11/line-echo-bot-on-django/
http://lee-w.github.io/posts/bot/2016/11/deploy-linebot-on-heroku/

Python 3.6版

requirements.txt上的版本資訊
Django==1.8.19
line-bot-sdk==1.8.0
gunicorn==19.9.0
(因Procfile 有gunicorn,後來就自行安裝)

不確定有沒有影響
原本虛擬環境和Django網站資料夾是在同一層
後來把Django網站資料夾移動至虛擬環境的資料夾內

看更多先前的討論...收起先前的討論...
froce iT邦大師 1 級 ‧ 2018-10-05 17:22:25 檢舉
Page not found是表示你的urls.py沒你輸入的路徑
froce iT邦大師 1 級 ‧ 2018-10-05 17:24:05 檢舉
然後 settings.py裡,debug = True 表示你看得到黃色那張詳細的錯誤頁面
陳小熊 iT邦新手 4 級 ‧ 2018-10-07 14:34:32 檢舉
HIHI,我是手把手教你搭建聊天機器人(LineBot+Python+QnAMaker+Heroku)-02建造LineBot Backend Server 並部署至Heroku 這篇的作者,謝謝您的參考

Internal Server Error代表程式裡面可能有異常,可能有程式碼錯誤或是參照位置錯誤,若您方便可以把詳細程式碼PO出我可以協助Debug(記得遮掉你的Subscription Key)

建議你可以把requirement跟我設定的一模一樣試看看
Django==1.9
line-bot-sdk==1.5.0
gunicorn==19.3.0

https://github.com/hatsukiotowa/QnAMaker_Django_LineChatBot
詳細程式碼可以參考這網站,目錄放的位置可以幫我確認一下有沒有相同,謝謝
hokou iT邦好手 1 級 ‧ 2018-10-08 15:12:02 檢舉
之前找不到Log位置,後來總算找到,在Heroku的右上角,有個more,可以看到log

總之,意思是ALLOWED_HOSTS可能需要增加允許的網址
但因為現在可以連,反而找不到之前失敗的Log訊息

所以我在settings.py內的ALLOWED_HOSTS增加網址後已可以順利回話
ALLOWED_HOSTS = [
'我的heroku APP網址',
]

DEBUG = True #維持沒變,只是要測試而已

雖然我參考的2篇內容ALLOWED_HOSTS 都是空的,可能是我的版本有所不同?
暫時不知道原因,總之感謝大家回應
阿尼 iT邦新手 5 級 ‧ 2018-10-09 19:51:08 檢舉
你可以直接在專案底下輸入指令 heroku logs 看error log。

When DEBUG is True and ALLOWED_HOSTS is empty, the host is validated against ['localhost', '127.0.0.1', '[::1]'].
切換不同版本的文件來看,這個預設都是一樣的唷
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

1 個回答

0
陳小熊
iT邦新手 4 級 ‧ 2018-10-08 15:29:06

>ALLOWED_HOSTS 都是空的,可能是我的版本有所不同?
Django==1.8.19
line-bot-sdk==1.8.0
gunicorn==19.9.0
這幾個版本跟我的略有不同(Django==1.9,line-bot-sdk==1.5.0,gunicorn==19.3.0)
比較明確的說明可能是.DEBUG=False, 會要求設 ALLOWED_HOSTS,但您說你的設定是DEBUG = True,可能就跟版本有點相關(?)

>文章過程中並沒有提到gunicorn的安裝,實際上是需要安裝或是給heroku看就可以了?
原文章的requirement.txt檔案有放gunicorn==19.3.0,push上去之後heroku會自行安裝,
文章可能寫的比較不清楚,我這邊會再補充,謝謝你!

很高興聽到有人照著我的文章順利打造出自己的機器人,謝謝!

我要發表回答

立即登入回答