2025年5月1日 星期四

自架node.js伺服器

#到自己的遊戲資料夾,安裝依存
npm init -y
npm install express socket.io 

#安裝必要元件
npm install mysql2


建立 rc.d 啟動腳本

1. 建立 rc.d 腳本

ee /usr/local/etc/rc.d/node_game

貼上以下資料

# PROVIDE: node_game
# REQUIRE: LOGIN
# KEYWORD: shutdown

. /etc/rc.subr

name="node_game"
rcvar=node_game_enable
pidfile="/var/run/${name}.pid"
logfile="/var/log/${name}.log"
command="/usr/sbin/daemon"
command_args="-f -P ${pidfile} -o ${logfile} /usr/local/bin/node /home/chocho/game/server.js"

load_rc_config $name
run_rc_command "$1"

2. 設為可執行檔

chmod +x /usr/local/etc/rc.d/node_game

3. 啟用自動啟動

sysrc node_game_enable=YES

4. 手動啟動測試

service node_game start

可以用 tail -f /var/log/node_game.log 來確認 log 是否正確輸出。

可以用 ps aux | grep node 檢查 node有沒有在運行

5.設定 node_game.log 的備份大小

ee /etc/newsyslog.conf

在最後一行加上這段:

/var/log/node_game.log  root:wheel  644  7  1000  *  J

欄位說明
/var/log/node_game.log要輪替的 log 檔案
root:wheellog 檔的擁有者與群組(根據實際擁有者可調整)
644log 檔的權限
7最多保留 7 份舊檔案(log.0.gz ~ log.6.gz)
1000超過 1000KB(1MB)時輪替
*每天都可以檢查,不限制特定時間
J壓縮輪替的 log(變成 .gz

測試輪替

newsyslog -nv

強制輪替

newsyslog -vF



沒有留言:

張貼留言