溫馨提示×

Ubuntu LNMP如何實現自動重啟

小樊
58
2025-03-26 10:27:54
欄目: 智能運維

在Ubuntu系統中,LNMP(Linux, Nginx, MySQL, PHP)堆棧的自動重啟可以通過多種方式實現。以下是一些常見的方法:

1. 使用Systemd服務

Systemd是現代Linux發行版中用于管理系統服務的初始化系統和服務管理器。你可以為Nginx、MySQL和PHP-FPM創建Systemd服務,并配置它們在失敗時自動重啟。

Nginx

  1. 創建或編輯Nginx的Systemd服務文件:
    sudo nano /etc/systemd/system/nginx.service
    
  2. 確保文件內容如下:
    [Unit]
    Description=The NGINX HTTP and reverse proxy server
    After=syslog.target network.target remote-fs.target nss-lookup.target
    
    [Service]
    Type=forking
    PIDFile=/run/nginx.pid
    ExecStartPre=/usr/sbin/nginx -t
    ExecStart=/usr/sbin/nginx
    ExecReload=/bin/kill -s HUP $MAINPID
    PrivateTmp=true
    
    [Install]
    WantedBy=multi-user.target
    
  3. 重新加載Systemd配置并啟動Nginx服務:
    sudo systemctl daemon-reload
    sudo systemctl start nginx
    sudo systemctl enable nginx
    

MySQL

  1. 創建或編輯MySQL的Systemd服務文件:
    sudo nano /etc/systemd/system/mysql.service
    
  2. 確保文件內容如下:
    [Unit]
    Description=MySQL Community Server
    After=network.target
    
    [Service]
    ExecStart=/usr/sbin/mysqld
    ExecReload=/bin/kill -s HUP $MAINPID
    PrivateTmp=true
    
    [Install]
    WantedBy=multi-user.target
    
  3. 重新加載Systemd配置并啟動MySQL服務:
    sudo systemctl daemon-reload
    sudo systemctl start mysql
    sudo systemctl enable mysql
    

PHP-FPM

  1. 創建或編輯PHP-FPM的Systemd服務文件:
    sudo nano /etc/systemd/system/php7.4-fpm.service
    
  2. 確保文件內容如下(根據你的PHP版本調整):
    [Unit]
    Description=The PHP FastCGI Process Manager
    After=syslog.target network.target
    
    [Service]
    Type=simple
    ExecStart=/usr/sbin/php-fpm7.4 --nodaemonize --fpm-config /etc/php/7.4/fpm/php-fpm.conf
    ExecReload=/bin/kill -USR2 $MAINPID
    
    [Install]
    WantedBy=multi-user.target
    
  3. 重新加載Systemd配置并啟動PHP-FPM服務:
    sudo systemctl daemon-reload
    sudo systemctl start php7.4-fpm
    sudo systemctl enable php7.4-fpm
    

2. 使用Supervisor

Supervisor是一個進程控制系統,可以用來管理和監控多個進程。

  1. 安裝Supervisor:
    sudo apt-get install supervisor
    
  2. 創建Supervisor配置文件:
    sudo nano /etc/supervisor/conf.d/nginx.conf
    
  3. 添加以下內容:
    [program:nginx]
    command=/usr/sbin/nginx
    autostart=true
    autorestart=true
    stderr_logfile=/var/log/nginx.err.log
    stdout_logfile=/var/log/nginx.out.log
    
  4. 重復上述步驟為MySQL和PHP-FPM創建配置文件。
  5. 更新Supervisor配置并啟動進程:
    sudo supervisorctl reread
    sudo supervisorctl update
    sudo supervisorctl start nginx
    sudo supervisorctl start mysql
    sudo supervisorctl start php7.4-fpm
    

3. 使用Cron和Shell腳本

你可以編寫一個簡單的Shell腳本來檢查進程是否運行,并在必要時重啟它們,然后使用Cron定期運行這個腳本。

  1. 創建Shell腳本:
    sudo nano /usr/local/bin/lnmp_restart.sh
    
  2. 添加以下內容:
    #!/bin/bash
    
    # Check and restart Nginx
    if ! pgrep -x "nginx" > /dev/null
    then
        echo "Nginx is not running. Restarting..."
        sudo systemctl start nginx
    fi
    
    # Check and restart MySQL
    if ! pgrep -x "mysqld" > /dev/null
    then
        echo "MySQL is not running. Restarting..."
        sudo systemctl start mysql
    fi
    
    # Check and restart PHP-FPM
    if ! pgrep -x "php-fpm" > /dev/null
    then
        echo "PHP-FPM is not running. Restarting..."
        sudo systemctl start php7.4-fpm
    fi
    
  3. 賦予腳本執行權限:
    sudo chmod +x /usr/local/bin/lnmp_restart.sh
    
  4. 使用Cron每分鐘運行一次腳本:
    crontab -e
    
  5. 添加以下行:
    * * * * * /usr/local/bin/lnmp_restart.sh
    

通過以上方法,你可以確保在Ubuntu系統中LNMP堆棧的各個組件在失敗時能夠自動重啟。

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