iT邦幫忙

2022 iThome 鐵人賽

DAY 28
0
Modern Web

用 Node.js 打造後端 API系列 第 28

Day 28 - 透過Cloud VM部署API

  • 分享至 

  • xImage
  •  

前言


部署Node.js App的方法有很多
像是透過app engine standard (flex), cloud run etc.
在此我們會利用到PM2, NGINX與SSL
將CodingSchool API部署到DigitalOcean
步驟大致如下:

  • 在DigitalOcean建立新的droplet, 並透過SSH登入
  • 安裝Node/NPM
  • 從GitHub上clone CodingSchool API
  • 安裝套件並測試
  • 設置PM2讓app能持續運作
  • 設置ufw防火牆
  • 安裝並配置NGINX

Without further ado, let's get it!

建立droplet


前往DigitalOcean建立droplet (cloud server)
在Choose Authentication Method的欄位需選擇SSH Key
透過SSH Key登入server會比透過密碼登入來的安全
這篇文章有詳細介紹該如何產生DigitalOcean的SSH key

接著複製public key

cat ~/.ssh/id_rsa_do.pub

並貼在這
https://ithelp.ithome.com.tw/upload/images/20221006/20151654wYNiJz62Su.png

建立完droplet後,會看到一組ip
在terminal登入server:

ssh root@ip

看到以下畫面就代表登入成功拉!

root@your_droplet_name:~# 

如果在登入時出現public key denied
可以試試看把專有private key新增到ssh-agent中

ssh-add ~/.ssh/id_rsa

安裝Node/NPM


先更新套件的cache (確認哪些套件可以被更新或安裝)

sudo apt update

安裝Node/NPM

curl -sL https://deb.nodesource.com/setup_14.x | sudo -E bash -

sudo apt install nodejs

node --version
npm --version

從GitHub上clone API


將API clone到apps這個資料夾中

mkdir apps

cd apps

git clone project_URL

下載dependencies並測試app

npm install

npm start

接著輸入ip:5000網址就能看到index.html拉!
https://ithelp.ithome.com.tw/upload/images/20221006/20151654K0Mv6WbTFK.png

如果畫面出不來,可能是port 5000被防火牆擋掉了
可以利用command來打開port:

sudo ufw allow 5000

上一篇
Day 27 - Push API到GitHub上
下一篇
Day 29 - 安裝PM2&NGINX
系列文
用 Node.js 打造後端 API30
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言