iT邦幫忙

2024 iThome 鐵人賽

DAY 15
0
自我挑戰組

利用 node.js/express 架設網站系列 第 15

Day-15 部署 Node.js 和 Express 應用到伺服器

  • 分享至 

  • xImage
  •  

今天將學習如何將本地開發的應用部署到雲端伺服器,並確保應用能在網路上運行。
1.選擇伺服器與部署平台
2.部署應用到雲端伺服器
3.應用伺服器配置
4.管理與監控應用

選擇伺服器與部署平台

有許多雲端平台可以選擇來部署你的 Node.js/Express 應用,下面是幾個常見的平台:

  • Heroku:適合初學者,部署簡單,提供免費的基本服務
  • DigitalOcean:提供虛擬伺服器,適合中小型項目,需要手動配置環境。
  • AWS EC2:Amazon Web Services 提供強大的伺服器服務,適合需要靈活配置和大規模應用的項目。

部署應用到雲端伺服器

  • 使用 Heroku 部署

安裝 Heroku CLI:

npm install -g heroku

登錄 Heroku 並創建應用:

heroku login
heroku create my-express-app

部署應用:

git init
git add .
git commit -m "initial commit"
git push heroku master

打開應用:

heroku open
  • 使用 DigitalOcean 部署

創建一個 Droplet(虛擬伺服器):
在 DigitalOcean 上創建一個新的 Droplet,選擇 Ubuntu 作為操作系統。

配置伺服器:
1.使用 SSH 連接到伺服器:

ssh root@your-server-ip

2.安裝 Node.js 和 npm:

curl -fsSL https://deb.nodesource.com/setup_16.x | sudo -E bash -
sudo apt-get install -y nodejs

3.安裝 PM2 來管理 Node.js 應用:

npm install -g pm2

部署應用:

  • 將應用程式碼上傳到伺服器,可以使用 Git 或 FTP。
  • 進入應用目錄後,運行:
pm2 start app.js
  • 設置應用開機自啟動:
pm2 startup
pm2 save
  • 配置 Nginx 作為反向代理:
    在伺服器上配置 Nginx,將外部請求轉發到 Express 應用:
sudo apt-get install nginx

配置 Nginx 的配置文件:

sudo nano /etc/nginx/sites-available/default

在配置文件中添加:

server {
    listen 80;
    server_name your-domain.com;

    location / {
        proxy_pass http://localhost:3000;
        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:

sudo systemctl restart nginx

應用伺服器配置

  • 反向代理:Nginx 或 Apache 是常用的反向代理伺服器,當外部請求進入伺服器時,它們負責將請求轉發給後端的 Express 應用,從而提高應用的性能和安全性。

  • PM2:這是一個強大的進程管理器,適合用來監控和管理 Node.js 應用。它可以保證應用在崩潰後自動重啟,並支援負載均衡。

管理與監控應用

部署後,應用的健康狀態和性能監控是至關重要的。以下是幾個常見的監控方式:

  • PM2 日誌管理:可以使用 PM2 查看應用的日誌和錯誤
pm2 logs
  • Heroku 監控:Heroku 提供了內建的監控工具,可以查看應用的運行狀態和性能。
  • 第三方監控工具:如 New Relic 或 Datadog,這些工具可以提供更深入的應用監控和性能報告。

上一篇
Day-14 Express 中的資料庫連接與 CRUD 操作
下一篇
Day-16 應用中間件與安全性最佳實踐
系列文
利用 node.js/express 架設網站30
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言