2025年3月21日 星期五

Ubuntu、Nginx 和 PHP-FPM 設定指南,以確保您的 Laravel 10 應用程式能夠在最新的 PHP 環境中穩定運行

 1. 安裝 Nginx 和 PHP-FPM (PHP 8.1+):

  • 更新套件列表:

    Bash
    sudo apt update
    
  • 安裝 Nginx:

    Bash
    sudo apt install nginx -y
    
  • 安裝 PHP 8.1 (或更高版本) 和 PHP-FPM 以及必要的 PHP 擴充套件:

    • 若要安裝 PHP 8.1:

      Bash
      sudo apt install php8.1 php8.1-fpm php8.1-mysql php8.1-mbstring php8.1-xml php8.1-zip php8.1-gd php8.1-redis -y
      
    • 若要安裝 PHP 8.2:

      Bash
      sudo apt install php8.2 php8.2-fpm php8.2-mysql php8.2-mbstring php8.2-xml php8.2-zip php8.2-gd php8.2-redis -y
      
    • 請根據您的需求選擇 PHP 版本,並確保安裝 php-redis 套件以支援 Redis 連線。

    • 您可能還需要安裝其他 PHP 擴充套件,根據您的 Laravel 應用程式需求而定。

  • 確認服務狀態:

    Bash
    sudo systemctl status nginx
    sudo systemctl status php8.1-fpm # 或 php8.2-fpm
    

2. 設定 PHP-FPM (PHP 8.1+):

  • 編輯 PHP-FPM 設定檔:

    • 主要的 PHP-FPM 設定檔位於 /etc/php/8.1/fpm/pool.d/www.conf (或 /etc/php/8.2/fpm/pool.d/www.conf)。

    • 使用文字編輯器開啟該檔案:

      Bash
      sudo nano /etc/php/8.1/fpm/pool.d/www.conf # 或 8.2
      
  • 調整重要設定:

    • listen

      • 設定 PHP-FPM 監聽的位址。通常使用 Unix socket:

        Ini, TOML
        listen = /run/php/php8.1-fpm.sock # 或 8.2
        
      • 請確保此設定與您的 Nginx 設定檔中的 fastcgi_pass 相符。

    • user 和 group

      • 設定 PHP-FPM worker 的執行身分。通常設定為 www-data

        Ini, TOML
        user = www-data
        group = www-data
        
    • pmpm.max_childrenpm.start_serverspm.min_spare_serverspm.max_spare_servers

      • 這些設定控制 PHP-FPM worker 的數量和行為。

      • 根據您的伺服器資源和預期流量進行調整。

      • 例如:

        Ini, TOML
        pm = dynamic
        pm.max_children = 50
        pm.start_servers = 5
        pm.min_spare_servers = 5
        pm.max_spare_servers = 35
        
    • 儲存並關閉檔案。

  • 重新啟動 PHP-FPM:

    Bash
    sudo systemctl restart php8.1-fpm # 或 8.2
    

3. 設定 Nginx:

  • 建立 Nginx 虛擬主機設定檔:

    • 在 /etc/nginx/sites-available/ 目錄下建立一個新的設定檔,例如 your-project

      Bash
      sudo nano /etc/nginx/sites-available/your-project
      
  • 設定 Nginx 虛擬主機:

    • 在設定檔中,加入以下內容:

      Nginx
      server {
          listen 80;
          server_name your-domain.com; # 替換為您的網域名稱
          root /var/www/your-project/public; # 替換為您的 Laravel 專案路徑
          index index.php index.html;
      
          location / {
              try_files $uri $uri/ /index.php?$query_string;
          }
      
          location ~ \.php$ {
              include snippets/fastcgi-php.conf;
              fastcgi_pass unix:/run/php/php8.1-fpm.sock; # 或 8.2,與 PHP-FPM 設定相符
          }
      
          location /static {
              alias /var/www/your-project/public/static;
          }
      
          location ~ /\.(?!well-known).* {
              deny all;
          }
      }
      
    • 請根據您的實際情況修改 server_nameroot 和 fastcgi_pass

    • 儲存並關閉檔案。

  • 建立 symbolic link 到 sites-enabled 目錄:

    Bash
    sudo ln -s /etc/nginx/sites-available/your-project /etc/nginx/sites-enabled/
    
  • 測試 Nginx 設定:

    Bash
    sudo nginx -t
    
    • 如果測試通過,則會顯示 syntax is ok 和 test is successful
  • 重新啟動 Nginx:

    Bash
    sudo systemctl restart nginx
    

4. Laravel 專案部署:

  • 將您的 Laravel 專案程式碼複製到 /var/www/your-project/ 目錄(或您在 Nginx 設定中指定的路徑)。
  • 執行 composer install 安裝相依套件。
  • 設定 Laravel 的 .env 檔案,包括資料庫連線和 Redis 連線。
  • 執行 php artisan migrate 執行資料庫遷移。
  • 設定正確的檔案權限。

沒有留言:

張貼留言

熱門文章