需求描述:偶白粗在 GCP 上開了 200G 的機器架了 1G 不到的 django project 浪費公司錢,於是改開了一台小的機器,要把原本的 django project 移過去。
移動在原電腦虛擬環境中的 django project 到新電腦,拆成兩部分來筆記:
【版本】
本機 Mac iOS + GCP VM ubuntu 16.04 + django 1.11 + Python 2.7
一、重建環境
- 在原電腦移動到 project 目錄
cd /your/path/to/project/
2. 啟動虛擬環境
. env/bin/activate
3. 產生 requirements.txt
pip freeze > requirements.txt
4. 到新電腦重建 env 環境
virtualenv --python=python2.7 env
5. 在新電腦啟動虛擬環境
. env/bin/activate
6. 根據原電腦產生的 requirements.txt,在新電腦安裝需要的套件們
pip install -r requirements.txt
二、移動 project 資料夾
要跟 GCP 上的 VM 連接似乎有很多方法,這邊紀錄一下昨天學到的新方法:從本機電腦 SSH 到 GCP 上的電腦。
- 在本機電腦的 terminal 產生 key:
ssh-keygen -t rsa
2. 進入資料夾裡面看一下 key,複製 key
cd .sshlscat id_rsa.pub
3. 到 GCP 上 Compute Engine,編輯目標 VM,在 [SSH 金鑰] 新增項目,在空白處貼上剛才複製的 key。
4. 在本機電腦 terminal 確認一下能否 SSH 進去:
ssh [VM 外部 IP]
5. 確認原電腦跟新電腦有無讀寫目的資料夾的權限,沒有的話要開:
sudo chmod 777 [資料夾]
6. 先把原電腦上的資料夾 copy 到本機:
scp -r [user]@[VM 外部 IP]:/home/pei/[projectFolder] .
7. 再把本機的檔案 copy 到新電腦:
scp -r ./[projectFolder] [user]@[VM 外部 IP]:/home/pei/
8. django migrations
python manage.py migrate
9. 啟動 server:
python manage.py runserver
噴 error,需把 settings.py 的 ALLOWED_HOSTS 改成新電腦的外部 IP,再重啟一次就成功了。
額外筆記一
把本機的檔案傳進 VM 裡面:
- 到 Google Storage ,把要傳的檔案拖進去介面上傳
- 在 VM 裡面輸入指令:
gsutil cp gs://[folderName]/[fileName] .
額外筆記二
在 Google Cloud Shell 建立 VM 並建立防火牆規則
- 建立 VM
gcloud compute instances create [vmName] --image-family cos-stable --image-project cos-cloud --zone asia-east1-b --boot-disk-size=10GB --machine-type n1-standard-1
2. 建立防火牆規則,開 8888 Port
gcloud compute firewall-rules create [firewallRuleName] --allow tcp:8888
參考資料
以及聰明ㄉ同事。