溫馨提示×

如何在 CentOS 上實現 Node.js 的自動重啟

小樊
62
2025-04-30 19:19:28
欄目: 編程語言

在 CentOS 上實現 Node.js 應用的自動重啟,可以使用多種方法。以下介紹幾種常用的方法,包括使用 systemd、Supervisorpm2。根據你的需求和環境選擇最適合的方法。

方法一:使用 systemd

systemd 是現代 Linux 發行版(包括 CentOS 7 及以上版本)的初始化系統和服務管理器,可以方便地管理 Node.js 應用的啟動和自動重啟。

步驟:

  1. 創建 systemd 服務文件

    假設你的 Node.js 應用入口文件是 /path/to/your/app.js,并且應用監聽端口是 3000。

    sudo vi /etc/systemd/system/your-app.service
    

    在文件中添加以下內容:

    [Unit]
    Description=Node.js Application
    After=network.target
    
    [Service]
    Type=simple
    User=<your_user>
    WorkingDirectory=/path/to/your/app
    ExecStart=/usr/bin/node /path/to/your/app.js
    Restart=always
    RestartSec=5
    
    [Install]
    WantedBy=multi-user.target
    

    說明:

    • Description:服務描述。
    • After:指定服務啟動順序。
    • User:運行 Node.js 應用的用戶。
    • WorkingDirectory:應用的工作目錄。
    • ExecStart:啟動命令。
    • RestartRestartSec:配置自動重啟策略。
    • WantedBy:指定目標運行級別。
  2. 重新加載 systemd 配置

    sudo systemctl daemon-reload
    
  3. 啟動服務

    sudo systemctl start your-app
    
  4. 設置開機自啟

    sudo systemctl enable your-app
    
  5. 查看服務狀態

    sudo systemctl status your-app
    
  6. 停止服務

    sudo systemctl stop your-app
    

方法二:使用 Supervisor

Supervisor 是一個流行的進程管理工具,可以監控和控制多個進程。

步驟:

  1. 安裝 Supervisor

    sudo yum install epel-release
    sudo yum install supervisor
    
  2. 配置 Supervisor

    編輯 Supervisor 的配置文件,添加你的 Node.js 應用。

    sudo vi /etc/supervisord.conf
    

    [program:your-app] 部分添加:

    [program:your-app]
    command=/usr/bin/node /path/to/your/app.js
    autostart=true
    autorestart=true
    stderr_logfile=/var/log/your-app.err.log
    stdout_logfile=/var/log/your-app.out.log
    user=<your_user>
    environment=NODE_ENV="production",
    
  3. 重新加載 Supervisor 配置

    sudo supervisorctl reread
    sudo supervisorctl update
    
  4. 啟動應用

    sudo supervisorctl start your-app
    
  5. 查看應用狀態

    sudo supervisorctl status your-app
    

方法三:使用 PM2

PM2 是一個功能強大的 Node.js 進程管理器,支持自動重啟、負載均衡、日志管理等功能。

步驟:

  1. 安裝 PM2

    使用 npm 安裝 PM2:

    sudo npm install pm2 -g
    

    或者使用 yarn

    sudo yarn global add pm2
    
  2. 啟動應用并配置自動重啟

    pm2 start /path/to/your/app.js --name "your-app"
    

    配置自動重啟:

    pm2 startup
    

    PM2 會生成啟動腳本,根據提示執行相應的命令(例如 systemctl)。

  3. 保存當前進程列表

    pm2 save
    
  4. 查看應用狀態

    pm2 status
    
  5. 停止應用

    pm2 stop your-app
    
  6. 重啟應用

    pm2 restart your-app
    

方法四:使用 Cron 定時檢查并重啟

雖然不如前述方法優雅,但也可以使用 cron 定時任務來檢查 Node.js 應用是否運行,并在異常時重啟。

步驟:

  1. 創建檢查腳本

    創建一個腳本 /usr/local/bin/check_node_app.sh

    #!/bin/bash
    APP_PATH=/path/to/your/app.js
    APP_USER=<your_user>
    PID_FILE=/var/run/your-app.pid
    
    if [ -f $PID_FILE ]; then
        PID=$(cat $PID_FILE)
        if ps -p $PID > /dev/null; then
            echo "Node.js app is running with PID $PID."
        else
            echo "Node.js app is not running. Restarting..."
            sudo -u $APP_USER /usr/bin/node $APP_PATH &
            echo $! > $PID_FILE
        fi
    else
        echo "PID file not found. Starting Node.js app..."
        sudo -u $APP_USER /usr/bin/node $APP_PATH &
        echo $! > $PID_FILE
    fi
    

    賦予執行權限:

    sudo chmod +x /usr/local/bin/check_node_app.sh
    
  2. 編輯 crontab

    打開當前用戶的 crontab:

    crontab -e
    

    添加以下行,每分鐘檢查一次:

    * * * * * /usr/local/bin/check_node_app.sh >> /var/log/check_node_app.log 2>&1
    

    保存并退出。

總結

以上方法各有優缺點:

  • systemd:適合需要與系統深度集成的場景,配置相對復雜但功能強大。
  • Supervisor:適合需要管理多個進程的場景,配置簡單。
  • PM2:適合需要高級功能(如負載均衡、日志管理)的場景,使用方便。
  • Cron:適合簡單場景,但不夠優雅,不推薦用于生產環境。

根據你的具體需求和環境選擇最合適的方法來實現 Node.js 應用的自動重啟。

0
亚洲午夜精品一区二区_中文无码日韩欧免_久久香蕉精品视频_欧美主播一区二区三区美女