📆 Updated Date: 2020-05-13
🏤 Author: YiChun Sung
-
從MVC到前後端分離
-
漸漸地把前端和後端分開,當然現在組織越大的開發團隊有越多的分工角色,專案也分開,各自在專案中的專業技術也越來越複雜。
-
舉例:
-
情境一:管Server的人非常好,也非常嚴謹,所有更新他必定是親自來,前端、API開發人員的更新都交給他統一上去。
-
情境二:管Server的人同時要管好幾個服務,即便他定義了很多嚴謹的規範,但是他沒辦法每次都及時幫忙開發人員提交更新。
-
情境三:根本沒有Server人員,只有一台機器各自表述。
-
你應該要多瞭解一些他們的事情!
-
認識Linux也許會是精進自己的第一步,試試看吧!
-
台灣 Linux 推薦網站:
-
SayYA 資訊站(已結束)
-
挑一個順眼的玩玩看!
-
新增一個你自己的專案吧!
-
Google App Engine (GAE)
-
Google Slogan: 全代管的無伺服器應用程式平台
-
-
Google Compute Engine (GCE)
-
Google Container Registry (GCR)
-
Google Kubernetes Engine (GKE)
-
Google SQL
-
Google Storage
-
gcloud SDK (Google Cloud SDK)
- 安裝SDK方便操作 --> 安裝頁面
For Example: Linux & macOS:
curl https://sdk.cloud.google.com | bash
exec -l $SHELL
gcloud init
接著會需要登入你的google帳號跟選擇你的GCP專案。
你可以輸入指令看一下當前的專案選擇和你現在的登入帳號
gcloud config list
- 更多使用者文件: Google Cloud SDK documentation
-
開一開新的vm,選擇OS (我用Ubuntu做範例,大家可以選擇自己熟悉的)
-
進去vm的方式有很多,有最簡單的利用瀏覽器進去,也可以利用ssh直接連線或是用gcloud SDK連線ssh進去。
用 gcloud SDK進去的方式:
gcloud beta compute ssh --zone "YOUR_ZONE" "VM_NAME" --project "PROJECT_ID"
- 先安裝必要的東西 - 複雜版
- 先更新 apt
sudo apt-get update
- 安裝node.js/npm
curl -sL https://deb.nodesource.com/setup_12.x | sudo -E bash -
sudo apt-get install nodejs
node --version
- 安裝其他你想安裝的環境 例如 NGINX 等等
sudo apt-get install nginx -y
- 把你的專案拉下來吧!
git clone "https://github.com/ElkTreeStudio/hexschool-GCP-demo"
VPC 網路 > 外部IP位址 > 開啟靜態IP
設定 port 3000
其實要從頭設定好一個完整的環境有時候很麻煩,運氣好的話你可以從頭到尾的安裝和運行都很順暢,然後快樂地啟用已經開發好的專案,但常常事與願違....
- 更快速的交付和部署
- 更輕鬆的遷移和擴展
- 更簡單的管理
- 實作:
- 寫一個Dockerfile
FROM node:10-alpine
# Create app directory
WORKDIR /usr/src/app
# Install app dependencies
COPY package*.json ./
RUN apk --no-cache add --virtual builds-deps build-base python
RUN npm install
# Bundle app source
COPY . .
EXPOSE 3000
CMD [ "node", "index.js" ]
- 建立一個Docker image
docker build -t gcr.io/[your_gcp_project_id]/[your_image_name]:[tag_name] $PWD
例如:
docker build -t gcr.io/elk-tree-studio/hexschool_demo:0.1.0 $PWD
- 在本機端測試一下是否可以正確執行
docker run -p 3000:3000 --name hexschool_app -d gcr.io/elk-tree-studio/hexschool_demo:0.1.0
gcloud docker -- push DOCKER_IMAGE_NAME:TAG
例如:
gcloud docker -- push gcr.io/elk-tree-studio/hexschool_demo:0.1.0
- 從docker.io 安裝 docker
sudo apt-get install docker.io
gcloud auth configure-docker
使用gcloud 指令將GCR的image 拉進來
gcloud docker -- pull gcr.io/elk-tree-studio/hexschool_demo:0.1.0
執行:
docker run -p 3000:3000 --name hexschool_app -d gcr.io/elk-tree-studio/hexschool_demo:0.1.0
-
為什麼要使用nginx
-
安全設定
-
SSL憑證
-
多網域的設定
-
靜態資源快取
-
延伸閱讀: Nginx:高效能的 Web 伺服器、反向代理、負載平衡,
-
-
安裝 nginx
sudo apt-get install nginx -y
- 確認nginx 狀態
ps auwx | grep nginx
- nginx指向設定,修改設定檔
sudo vi /etc/nginx/sites-available/default
- 修改設定如下:
server_name yourdomain.com www.yourdomain.com;
location / {
proxy_pass http://localhost:5000; #whatever port your app runs on
proxy_http_version 1.1;
proxy_set_header Upgrade $http_upgrade;
proxy_set_header Connection 'upgrade';
proxy_set_header Host $host;
proxy_cache_bypass $http_upgrade;
}
- 確認nginx config
sudo nginx -t
- Restart nginx
sudo service nginx restart
- Stop nginx
service nginx stop
- Start nginx
service nginx start
- 以godaddy來示範
docker exec -it {docker container name} bash
- Alpine uses ash and not bash.
docker exec -it {docker container name} ash
-
更精進Docker
-
學習怎麼一次部署前後端和DB
-
為自己的網站設置SSL