iT邦幫忙

2021 iThome 鐵人賽

DAY 28
1
自我挑戰組

Python 30天自我挑戰系列 第 28

Day28 - 部屬到正式環境 (3)

今天的實作內容主要根據教學網站進行。

將應用程式安裝到Heroku (接續Day27)

使用GIT將程式安裝到Heroku

  1. Heroku網站申請帳號。

  2. 在本機端安裝Heroku client

  3. 使用Heroku client建立GIT遠端程式庫。

heroku create
heroku create [URLname]

如果有指定URLname,之後建立的網站網址會是 http://URLname.herokuapp.com;如果不指定URLname,Heroku預設會亂數產生名稱。

若之後想要改名,可以用以下指令:

heroku apps:rename new_name --app old_name
  1. 在settings.py中設定ALLOWED_HOSTS。
    當DEBUG模式關閉時,Django會要求要設定ALLOWED_HOSTS。
ALLOWED_HOSTS = ['.herokuapp.com', '127.0.0.1']
  1. 將程式推送到Heroku。
git add -A
git commit -m "comment"
git push heroku main

推送上去後,Heroku會自動建置網站。

第一次建置時有發生錯誤訊息,發現有兩個問題:

  • 昨天將私人開發的套件整合進專案裡,此套件有使用beautifulsoap,但requirements.txt沒有此套件。

    • 解法:requirements.txt加入beautifulsoap。
  • 在settings.py中有保留開發環境的資料庫連線設定 (django.db.backends.mysq),但requirements.txt中沒有安裝mysqlclient,導致建置時會發生錯誤。

    • 解法1:將settings.py分成正式環境和開發環境兩個版本,移除正是環境的mysql設定。
    • 解法2:requirements.txt加入mysqlclient。
# Database
# https://docs.djangoproject.com/en/3.2/ref/settings/#databases

DATABASES = {
    'default': {
        'ENGINE': 'django.db.backends.mysql',
        'NAME': 'bookhelper',
        'USER': '',
        'PASSWORD': '',
        'HOST': '127.0.0.1',
        'PORT': '3306',
    }
}

# Heroku: Update database configuration from $DATABASE_URL.
db_from_env = dj_database_url.config(conn_max_age=500)
DATABASES['default'].update(db_from_env)
  1. 成功建置後,建立資料庫schema和建立superuser。
heroku run python manage.py migrate
heroku run python createsuperuser
  1. 設定系統環境參數。
    在前兩天的流程中,settings.py有一些變數改成使用系統環境參數,故現在需要在Heroku上設定這些參數。

確認目前參數設定:

heroku config

設定參數內容:

heroku config: set 參數名稱=數值

實際設定內容如下:

DJANGO_SECRET_KEY=xxxxxxxxxxxxxxxxxx  
DJANGO_DEBUG=

DJANGO_SECRET_KEY基於資訊安全考量,應該要和開發環境不同。

DATABASE_URL在建置時會由Heroku自動設定。

  1. 使用瀏覽器確認網站是否可連線。
heroku open

上一篇
Day27 - 部屬到正式環境 (2)
下一篇
Day29 - 上線後疑難雜症紀錄
系列文
Python 30天自我挑戰30

尚未有邦友留言

立即登入留言