安裝 nginx
on 起你的 app (假設為一個 node server on 在 localhost:5000)
設定 nginx.conf (在下載下來的 nginx根目錄/conf 裡面) 下面的設定檔的意思是監聽 port 80,如果有從 80 進來的,轉跳到 port 5000
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20events{
}
http {
server {
listen 80 default_server;
listen [::]:80 default_server;
server_name localhost;
# set client body size to 100M #
client_max_body_size 100M;
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 設定檔 輸入:
nginx -s reload
如果你的主機連接的網路不是實體網路,而是在路由器或交換器底下的網路,再做下面的步驟
設定網關
先確定伺服器主機接的網路線是最外層的路由器,不要接在 wifi 機上
在伺服器上的瀏覽器輸入 192.168.1.1 or 直接輸入伺服器 ip 會進入到路由器管理頁面如下圖:

預設的帳號密碼是 user:user 登入後選擇 port forwarding

把外網的 80 port 映射到內網的 80 port 給 nginx,nginx 會幫我們映射到內網的 5000 port

使用 pm2 來監測執行情況,出錯時會自動重啟
- 建立一個 pm2.json 在專案根目錄
 
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19{
"apps" : [{
"name": "short link", // 在 pm2 裡面要叫什麼名字
"cwd": "/home/paultsengapps/ShortLink", // 到專案根目錄的位址
"script" : "./dist/index.js", // 要執行的程式
"instances" : "1", // 要啟動幾個實體
"exec_mode" : "cluster",
"env": {
"NODE_ENV": "development",
"PORT": 3000
},
"env_production" : {
"NODE_ENV": "production",
"PORT": 5000
},
"log_date_format": "YYYY-MM-DD_HH:mm Z",
"merge_logs": true
}]
}- 執行
 
1
pm2 start pm2.json --env production