前言
最近有大學朋友正在找工作,他希望能夠把自己開發的Django小專案部署至GCP
因此剛好了有這個機會,可以把當初在公司摸索到的經驗記錄下來。
Ubuntu
這邊使用的是GCP
平台,因此在建立Ubuntu時可先賦予root密碼
1 | sudo passwd root |
可切換至root
帳號
1 | su - |
這樣在操作下列步驟時,執行指令前就不用另外加sudo
環境
先把所需要的套件裝起來
更新APT
1 | sudo apt-get update |
我一般習慣會把專案放置在/var/app
裡,因此我們先建立並切換至專案路徑
當然你也可以自行更換路徑,這沒有絕對
1 | mkdir /var/app |
Django
使用Git將你的專案複製下來並切換目錄
1 | git clone <YOUR PROJECT URL> |
以下步驟我都會用我平常的專案架構去部署
1 | project |
Virtualenv
1 | 安裝虛擬環境 |
pip
要特別注意的是,在安裝mysqlclient
時要根據版本來下載相關的Ubuntu套件
而我這裡使用的則是mysqlclient 2.0.1
1 | 更新pip |
MySQL 8.0
MySQL的部分我直接拆開來獨立成一篇了,可以直接點進去看
資料庫遷移
先切換至專案目錄
1 | cd /var/app/<PROJECT> |
至env/lib/python3.6/site-packages/django/db/backends/mysql/base.py
註解下列程式碼
1 | version = Database.version_info |
Python版本可能依系統而有所不同
至core/stteing.py
設定Database config NAME
USER
PASSWORD
HOST
PORT
預設為本機開發使用
1 | DATABASES = { |
由資料庫遷移檔建立資料表
1 | python3 manage.py migrate |
需先確認MySQL是否有該資料庫
靜態資源
我的core/setting.py
的配置如下
1 | STATIC_URL = '/static/' |
將靜態資源複製到STATIC_ROOT
目錄底下
1 | python3 manage.py collectstatic |
建立超級使用者
這步視專案需求可執行/略過
1 | python3 manage.py createsuperuser |
Email可任意填寫,若密碼過於簡單系統會再次詢問是否要使用這組密碼,輸入
y
即可
Apache2
架站教學:網址
安裝Apache套件
1 | sudo apt update |
開機自動啟動Apache
1 | sudo systemctl enable apache2 |
至/etc/apache2/sites-available/django.conf
新增下列設定
1 | <VirtualHost *:80> |
可使用vi/Vim取代:
:%s/<SEARCH_FROM>/<REPLACE_TO>/g
啟用自訂設定 & 關閉預設設定
1 | sudo a2ensite django.conf |
檔案&圖片上傳
至/etc/apache2/sites-available/django.conf
新增下列設定
1 | <VirtualHost *:80> |
設定Apache寫入權限
1 | chown -R www-data /var/app/<PROJECT> |
Django Rest Framework JWT
至/etc/apache2/sites-available/django.conf
新增下列設定
1 | <VirtualHost *:80> |