***特別感謝鵬志好友,
提供whitenoise套件的方法,
讓我很快解決了staticfile的問題。
前置工作
- 先成功在本機安裝、執行mezzanine,請參考 這裡。
- 安裝whitenoise,這是處理staticfile的套件
pip install whitenoise
註:
- 根目錄就是和manage.py相同的目錄
- web18、web18toheroku是我的專案名稱和heroku上的app名稱,請改成你自己的。
本機上執行沒問題之後,再做以下步驟
添加檔案
- 在根目錄之下加三個檔案
- runtime.txt: 就只是python的版本名稱,改成你的python版本。
- requirements.txt: 在根目錄下,pip freeze > requirements.txt(打開檢查如果沒有gunicorn,請在最後一行加入。這個套件,本機不會用到,伺服器上要用到)
- Procfile: 參考檔案內容(web: gunicorn web18.wsgi --log-file -),web18是我的專案名稱,請改成你的。(請留意,有的編輯軟體會自動把它存成 .txt,這個檔案不可以有副檔名)
添加二個目錄
- 在根目錄下加一個目錄static,並且在裡面新增一個空檔案。(因為空資料夾git將不予理會,例如增加一個沒有內容的abc.txt檔。)
- 將 這裡 提到的免費主題中的flat目錄,複製到根目錄中。
修改兩個檔案
- 根目錄中有兩個檔案 .gitignore.txt 和 .hgignore 打開後,
- 將「*.db」這幾個字刪除。也就是,dev.db是資料庫,也要上傳,否則會找不到資料表。
- 將「/static」這幾個字刪除。因為我們要連staticfile都送上去,讓server 自動處理。
- 存檔
heroku部份(都在根目錄操作)
- 登入heroku: heroku login (每次電腦重新開機後,都要重新登入)
按任意鍵後,會自動開啟瀏覽器登入,完成後,自己再回到命令列視窗。
- 在heroku 建app: heroku create web18toheroku (名稱要夠亂才會通過,不取也可以,系統會給你一個怪怪的名稱)
- 建立git倉儲(repository): git init
- git 倉儲和heroku的app連結: heroku git:remote -a web18toheroku
- 設定heroku上使用的語言: heroku buildpacks:set heroku/python (一定要上面先建立連結,這行命令才有效)
settings.py的設定
- 在所有from ... import .. 之後,添加SECRET_KEY='1e9u0am@g^*^i6r*fiz1w@lel)2e6^_#ljq!na@*l!j*#*q69t'
請利用這個網站,產生自己的SECRET_KEY。(上面的key是範例)
- 主機名稱處填入你的主機名稱: ALLOWED_HOSTS = ['web18toheroku.herokuapp.com']
- DATABASES中,填入下面的資訊
"ENGINE": "django.db.backends.sqlite3",
"NAME": "dev.db",
- 檢查以下路徑,必要時修改或新增。
STATIC_URL = "/static/"
STATIC_ROOT = os.path.join(BASE_DIR, 'staticfiles')
STATICFILES_DIRS = (os.path.join(BASE_DIR, 'static'),) (必須是list 或tuple,所以那個小逗號是必須的)
- 在INSTALLED_APPS中,將 'flat' 插在第一筆
- 在MIDDLEWARE中,將 'whitenoise.middleware.WhiteNoiseMiddleware' 加在第一列
推上網站(都在根目錄操作)
- git add . (將所有修正做註記,如果有出現任何訊息,請再執行一次,執行完成,不會出現任何訊息才對)
- git commit -m "abc" (建立本次修正的版本,雙引號內就是對版本的註解,內容自己決定)
- git push heroku master
- heroku open (以瀏覽器打開網頁)
以上3個步驟,只要有修改,都要再執行一次,再推上網站。
---------------------------------------------------------------------------------------------------------
#當你了解以上步驟之後,你可以考慮參考下面簡要的步驟。加快你的布建速度。
先成功在本機執行 這裡。
pip install whitenoise
建立runtime.txt和Procfile到根目錄
pip freeze > requirements.txt(打開檢查如果沒有gunicorn,請在最後一行加入)
複製flat到根目錄中。
heroku create web18toheroku
git init
heroku git:remote -a web18toheroku
heroku buildpacks:set heroku/python
git init
heroku git:remote -a web18toheroku
heroku buildpacks:set heroku/python
ALLOWED_HOSTS = ['web18toheroku.herokuapp.com']
"ENGINE": "django.db.backends.sqlite3",
"NAME": "dev.db",
STATIC_URL = "/static/"
STATIC_ROOT = os.path.join(BASE_DIR, 'staticfiles')
STATICFILES_DIRS = (os.path.join(BASE_DIR, 'static'),) (必須是list 或tuple,所以那個小逗號是必須的)
在INSTALLED_APPS中,將 'flat' 插在第一筆
在MIDDLEWARE中,將 'whitenoise.middleware.WhiteNoiseMiddleware' 加在第一列
git add .
git commit -m "abc"
git push heroku master
heroku open
在MIDDLEWARE中,將 'whitenoise.middleware.WhiteNoiseMiddleware' 加在第一列
git commit -m "abc"
git push heroku master
heroku open
(p.s.用firefox開畫面比較正常)
好棒!
回覆刪除