iT邦幫忙

2021 iThome 鐵人賽

DAY 27
0
自我挑戰組

BeautifulSoup網頁爬蟲佐Django伺服器框架附AWS雲端運算服務系列 第 27

[Day 27] 中場休息 - 換邊發球,heroku佈署完整步驟

上一篇我們介紹完了aws如何一步一步把環境架起來
這一篇我們來順便把前面heroku的坑也填上吧
這篇就會教你如何手把手把你的code架到heroku上
廢話不多說,咱們累狗~

第一步 - 前置準備

一樣創辦帳號這邊我們就不詳細講了
然後我們要先來下載heroku的CIL
首先到這個網頁
https://devcenter.heroku.com/articles/heroku-cli#windows
選擇windows版

下載完之後執行安裝檔

下一步下一步下一步,完成

然後我們這裡可以先檢查一下有沒有下載成功
下指令

heroku --version

如果有下載成功的話應該會跳出下面提示

如果沒有的話就去看C:/Program Files的地方有沒有heroku
如果有的話就是沒有加到環境變數,加進去就好了

然後我們先login,這裡有兩種方法
一個輸入heroku login會跳出網頁叫你登入
一個輸入heroku login -i會要你在輸入帳號密碼
這裡我們選前者比較方便
如果順利登入完成應該會長這樣

接著我們先建立一個新的資料夾
就像這樣

然後把我們的code放入資料夾內

最後我們還要再下載heroku用的Python套件
雖然你windows可能用不到,但下載下來總是比較保險

pip install dj-database-url gunicorn dj-static

下載完之後前置就準備完成啦

第二步 - 修改檔案環境

heroku不像aws一樣會有個terminal讓你用console方式架環境
它的運作方式是當你push上去時,heroku就混根據你的各項文件架好環境跟執行所需東東了
所以這步我們要先把heroku要用的東東準備好
首先先用我們的atom打開heroku資料夾

接著我們在根目錄新增requirements.txt

輸入下面套件

Django
appnope==0.1.0
decorator==4.0.4
dj-database-url==0.3.0
dj-static==0.0.6
gnureadline==6.3.3
gunicorn==19.3.0
ipython==4.0.0
ipython-genutils==0.1.0
path.py==8.1.2
pexpect==4.0.1
pickleshare==0.5
ptyprocess==0.5
simplegeneric==0.8.1
static3==0.6.1
traitlets==4.0.0
psycopg2

當你push上去時,heroku就會找你的requirements.txt,並且安裝這些套件

接著我們在根目錄新增Procfile
並且輸入下列指令

web: gunicorn --pythonpath stonks_root stonks_root.wsgi

當push上去時,heroku會執行Procfile內的東東
這個指令就代表啟用web應用,並且使用guricorm執行stonks_root.wsgi內的東東

下一步我們就要在stonks_root內寫一個專門給heroku的setting啦
在stonks_root的資料夾下建立一個production-settings.py

然後輸入以下程式碼

# Import all default settings.
from .settings import *

import dj_database_url
DATABASES = {
    'default': dj_database_url.config(),
}

# Static asset configuration.
STATIC_ROOT = 'staticfiles'

# Honor the 'X-Forwarded-Proto' header for request.is_secure().
SECURE_PROXY_SSL_HEADER = ('HTTP_X_FORWARDED_PROTO', 'https')

# Allow all host headers.
ALLOWED_HOSTS = ['*']

# Turn off DEBUG mode.
DEBUG = False

接著修改stonks_root內的wsgi.py如下:

import os

from django.core.wsgi import get_wsgi_application

from dj_static import Cling

os.environ.setdefault("DJANGO_SETTINGS_MODULE", "stonks_root.settings")

application = Cling(get_wsgi_application())

最後我們再來介紹一個東東叫做.gitignore
這個東西會在你git add .時自動忽略指定的檔案或副檔名
一樣在根目錄建立.gitignore
然後我們指定這三個規則在add時忽略掉

*.pyc
__pycache__
staticfiles

好啦,經過一番操作後,你的目錄內檔案列表應該會長這樣

以上我們建立heroku環境時的所有需要檔案就都建立好啦

第三步 - 開始佈署

準備完檔案之後,我們終於可以開始建立heroku環境啦
首先先下git commit三步驟

git init
git add .
git commit -m "upload to heroku"

然後建立一個新的app,我們用這個指令

heroku create stonks-heroku-ver

後面的stonks-heroku-ver代表你要建立的APP名字
然後heroku的APP名只能有小寫英文跟-
所以在建立時需要注意一下

建立完之後讓git跟你的app做連結

heroku git:remote -a stonks-heroku-ver

輸入git remote -v檢查一下是否有連結成功

然後設定heroku要用的環境檔案

heroku config:set DJANGO_SETTINGS_MODULE=stonks_root.production_settings

準備放煙火啦~

git push heroku master


沒有煙火,也就是沒有跳錯就是成功囉~

準備剪綵 - code開跑

我們先把我們的code佈署到機器上

heroku ps:scale web=1

然後下migrate建立資料庫,並且把models的東東全部設定好

heroku run python manage.py migrate

最後就是最振奮人心的時候啦
開跑~~~~~

heroku open


如果跳出來的是這個頁面,就代表成功啦~~(因為我們沒有設定預設頁面,所以找不到很正常)

以上就是heroku的環境架設啦
剩下的heroku設定由於不是我們的主題討論範圍,因此就不多介紹啦
接下來我們會把焦點重新回到aws上
教大家如何讓aws上線時自己跑django
以及如何讓django自己定時跑程式
想知道如何你不動,aws幫你做運動嗎(?
且待下回分解~


上一篇
[Day 26] 第二主餐 pt.4-賀喬遷aws二度,aws佈署完整步驟
下一篇
[Day 28] 第二主餐 pt.4-程式不求人,runserver背景執行及crontab自動執行
系列文
BeautifulSoup網頁爬蟲佐Django伺服器框架附AWS雲端運算服務30

尚未有邦友留言

立即登入留言