程式語言:Python
Package:Django, psycopg2, gunicorn, dj-database-url, dj-static
官方網站
簡介:將 Django deploy 到 Heorku
requirements.txt
讓 Heroku 安裝需求套件的文件
檔案內容範例如下 (pypiwin32 記得去除)
Procfile
告訴 Heroku 要執行什麼指令來啟動 app
這一行表示:
< process_type > -- 啟用web應用
< command > -- Gunicorn 是原生支援 Django 的 Python WSGI Server,透過指令來啟動網站
runtime.txt
讓 Heroku 知道要用哪一個版本的 Python,新增 runtime.txt,內容如下,依需求版本填寫
settings.py
修正為以下幾行
wsgi.py
修正為以下幾行
git 指令參考
.gitignore
請依需求設定,範例如下
建立 git
登入,push 前需登入
建立新 Web
不加 webName 則會自動產生,webName 不得與他人重名
限定為小寫、數字、"-"
已存在 Apps
git remote 加入 heroku
檢查 git 已存在 remote
必做,確保未來在 Heroku 執行任何指令時,都是使用到部署專用的設定檔
上傳至 Heroku 伺服器
啟動/關閉 伺服器
在 Heroku 伺服器執行指令
初始化資料庫
建立超級使用者
開啟瀏覽器觀看網站
網址可任意分享
更新網站
觀看網站執行的紀錄
目前正在執行的 dyno
連至網站的 CLI
重啟網站
訣竅:可重啟,再配合 logs 使用
[Django|Python] 部署至Heroku (2)
Package:Django, psycopg2, gunicorn, dj-database-url, dj-static
官方網站
psycopg2 | 把 PostgreSQL 與 Python 銜接起來的套件,使 Python 可以使用 PostgreSQL |
Gunicorn | WSGI server,針對 Unix 的 WSGI HTTP Server |
dj-database-url | 可以透過 URL 設定 database 所在,使在 heroku 上可以設定 database URL 來源 |
dj-static | 靜態資源檔案的服務,透過此服務使的在 heroku 上可以讀取靜態資源檔案,例:static, media ... |
簡介:將 Django deploy 到 Heorku
前置動作
- 官方安裝步驟
- 申請 Heroku 帳號
- 安裝 PostgreSQL
安裝套件
pip install dj-database-url gunicorn dj-static
建立必需檔案(與 manage.py 同層)
requirements.txt
讓 Heroku 安裝需求套件的文件
pip freeze > requirements.txt由於 Heroku 使用 PostgreSQL 資料庫,需加上 psycopg2,版本依需求填寫
檔案內容範例如下 (pypiwin32 記得去除)
Django==1.8.5 dj-database-url==0.4.1 gunicorn==19.6.0 dj-static==0.0.6 static3==0.7.0 psycopg2==2.6.1
Procfile
告訴 Heroku 要執行什麼指令來啟動 app
web: gunicorn --pythonpath appName(任意) appName.wsgi< process_type >: < command >
這一行表示:
< process_type > -- 啟用web應用
< command > -- Gunicorn 是原生支援 Django 的 Python WSGI Server,透過指令來啟動網站
runtime.txt
讓 Heroku 知道要用哪一個版本的 Python,新增 runtime.txt,內容如下,依需求版本填寫
python-3.5.2
Django 必要設定
settings.py
修正為以下幾行
import dj_database_url ALLOWED_HOSTS = ['*'] # Update database configuration with $DATABASE_URL. db_from_env = dj_database_url.config() DATABASES['default'].update(db_from_env) # Honor the 'X-Forwarded-Proto' header for request.is_secure() SECURE_PROXY_SSL_HEADER = ('HTTP_X_FORWARDED_PROTO', 'https')
wsgi.py
修正為以下幾行
try: from dj_static import Cling, MediaCling application = Cling(get_wsgi_application()) #有設定 media 才需此行,不然會有問題 #application = Cling(MediaCling(get_wsgi_application())) except: pass
Git 設定
因 Heroku 是利用 git 上傳至伺服器,需設定一些參數git 指令參考
.gitignore
請依需求設定,範例如下
*.pyc __pycache__ staticfiles *.sqlite3
建立 git
git init git add . git commit
Heroku 操作
登入,push 前需登入
heroku login
建立新 Web
不加 webName 則會自動產生,webName 不得與他人重名
限定為小寫、數字、"-"
heroku create webName
已存在 Apps
heroku apps
git remote 加入 heroku
heroku git:remote -a webName
檢查 git 已存在 remote
git remote -v
必做,確保未來在 Heroku 執行任何指令時,都是使用到部署專用的設定檔
heroku config:set DJANGO_SETTINGS_MODULE=appName.production_settings
上傳至 Heroku 伺服器
git push heroku master
啟動/關閉 伺服器
# 啟動寫法 heroku ps:scale web=1 # 關閉寫法 heroku ps:scale web=0
在 Heroku 伺服器執行指令
heroku run Cmd
初始化資料庫
heroku run python manage.py migrate
建立超級使用者
heroku run python manage.py createsuperuser
開啟瀏覽器觀看網站
網址可任意分享
heroku open
更新網站
git push heroku master
觀看網站執行的紀錄
heroku logs #連續模式 heroku logs --tail
目前正在執行的 dyno
heroku ps
連至網站的 CLI
heroku run bash
重啟網站
訣竅:可重啟,再配合 logs 使用
heroku restart
參考
Django Girls 學習指南[Django|Python] 部署至Heroku (2)
留言
張貼留言