文章

PHP - 部署與效能優化


課程簡介

學習如何將 PHP 應用程式部署至伺服器,並通過效能優化技術提升網站的穩定性與速度,確保應用程式能高效運行。


部署流程

  1. 選擇伺服器與主機環境
    • 推薦選項:VPS(如 AWS、GCP、Linode)或共享主機。
    • 確保 PHP、Web Server(如 Nginx/Apache)已安裝。
  2. 設置 Web Server
    • 配置 Nginx 或 Apache 處理 PHP 檔案的方式。
    • 範例配置(Nginx):
      1
      2
      3
      4
      5
      6
      7
      8
      9
      10
      11
      12
      13
      14
      15
      16
      17
      18
      
      server {
          listen 80;
          server_name example.com;
          root /var/www/html;
               
          index index.php index.html index.htm;
      
          location / {
              try_files $uri $uri/ /index.php?$query_string;
          }
      
          location ~ \.php$ {
              include snippets/fastcgi-php.conf;
              fastcgi_pass unix:/run/php/php7.4-fpm.sock;
              fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
              include fastcgi_params;
          }
      }
      
  3. 部署應用程式
    • 使用 FTP 或 SCP 上傳檔案至伺服器。
    • 設定正確的檔案權限(如 chmodchown)。
    • 設定資料庫連線資訊。
  4. HTTPS 設定
    • 安裝 Let’s Encrypt 憑證:
      1
      
      sudo certbot --nginx
      

效能優化技巧

  1. 啟用 PHP OPcache
    • 編輯 PHP 設定檔(通常位於 /etc/php/7.4/fpm/php.ini):
      1
      2
      3
      4
      
      opcache.enable=1
      opcache.memory_consumption=128
      opcache.interned_strings_buffer=8
      opcache.max_accelerated_files=10000
      
  2. 使用快取
    • Redis 或 Memcached 用於存儲頻繁訪問的資料。
    • 範例:
      1
      2
      3
      4
      
      $redis = new Redis();
      $redis->connect('127.0.0.1', 6379);
      $redis->set('key', 'value');
      echo $redis->get('key');
      
  3. 壓縮與最小化資源
    • 啟用 Gzip 壓縮:
      1
      2
      
      gzip on;
      gzip_types text/plain application/json application/javascript text/css;
      
  4. 優化資料庫查詢
    • 使用索引加速查詢:
      1
      
      CREATE INDEX idx_user_id ON users(user_id);
      
  5. 內容傳遞網路 (CDN)
    • 將靜態資源(如圖片、CSS、JS)交由 CDN(如 Cloudflare)處理。
  6. 分頁與延遲加載
    • 分頁顯示資料避免一次載入大量內容。
    • 使用 JavaScript 延遲載入圖片或表格內容。

教學重點

  • 瞭解 Web Server 與 PHP 的協作方式。
  • 學習快取與壓縮技術。
  • 執行效能測試工具(如 Apache Benchmark 或 JMeter)。
  • 將效能優化集成至開發流程。

本文章以 CC BY 4.0 授權