2019年11月24日 星期日

將mezzanine建立的內容推到heroku--以免費主題flat為例

***特別感謝鵬志好友,
提供whitenoise套件的方法,
讓我很快解決了staticfile的問題。

前置工作
  • 先成功在本機安裝、執行mezzanine,請參考  這裡
  • 安裝whitenoise,這是處理staticfile的套件
pip install whitenoise

註:
  1. 根目錄就是和manage.py相同的目錄
  2. web18、web18toheroku是我的專案名稱和heroku上的app名稱,請改成你自己的。
本機上執行沒問題之後,再做以下步驟

添加檔案
  • 在根目錄之下加三個檔案
  1. runtime.txt:  就只是python的版本名稱,改成你的python版本。
  2. requirements.txt:  在根目錄下,pip freeze > requirements.txt(打開檢查如果沒有gunicorn,請在最後一行加入。這個套件,本機不會用到,伺服器上要用到)
  3. Procfile: 參考檔案內容(web: gunicorn web18.wsgi --log-file -),web18是我的專案名稱,請改成你的。(請留意,有的編輯軟體會自動把它存成 .txt,這個檔案不可以有副檔名)
添加二個目錄
  • 根目錄下加一個目錄static,並且在裡面新增一個空檔案(因為空資料夾git將不予理會,例如增加一個沒有內容的abc.txt檔。)
  • 這裡 提到的免費主題中的flat目錄,複製到根目錄中
修改兩個檔案
  • 根目錄中有兩個檔案  .gitignore.txt  和  .hgignore 打開後,
  1. 將「*.db」這幾個字刪除。也就是,dev.db是資料庫,也要上傳,否則會找不到資料表。
  2. 將「/static」這幾個字刪除。因為我們要連staticfile都送上去,讓server 自動處理。
  3. 存檔

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' 加在第一列



推上網站(都在根目錄操作)
  1. git add .                               (將所有修正做註記,如果有出現任何訊息,請再執行一次,執行完成,不會出現任何訊息才對)
  2. git commit -m "abc"          (建立本次修正的版本,雙引號內就是對版本的註解,內容自己決定)
  3. git push heroku master
  4. heroku open                      (以瀏覽器打開網頁)
以上3個步驟,只要有修改,都要再執行一次,再推上網站。


(p.s.用firefox開畫面比較正常)

---------------------------------------------------------------------------------------------------------
#當你了解以上步驟之後,你可以考慮參考下面簡要的步驟。加快你的布建速度。

先成功在本機執行  這裡

pip install whitenoise

建立runtime.txt和Procfile到根目錄
pip freeze > requirements.txt(打開檢查如果沒有gunicorn,請在最後一行加入)

根目錄下加一個目錄static,並且在裡面新增一個空檔案 abc.txt
複製flat到根目錄中

.gitignore.txt  和  .hgignore將「*.db」「/static」這幾個字刪除,存檔

heroku login
heroku create web18toheroku
git init
heroku git:remote -a web18toheroku
heroku buildpacks:set heroku/python

SECRET_KEY=  請利用這個網站
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               
(p.s.用firefox開畫面比較正常)

1 則留言: