溫馨提示×

laravel項目部署centos需要注意什么

小樊
52
2025-09-28 10:57:29
欄目: 智能運維

1. 系統與軟件版本要求

  • CentOS版本:需使用CentOS 7及以上(確保系統內核及軟件包支持Laravel的現代依賴);
  • PHP版本:Laravel 10及以上要求PHP 8.1+,Laravel 9及以下需PHP 7.3+(需安裝BCMath、Ctype、Fileinfo、JSON、Mbstring、OpenSSL、PDO、Tokenizer、XML等核心擴展,可通過yum或Remi倉庫安裝);
  • Web服務器:推薦**Nginx(性能更優)**或Apache(兼容性更好),需配置正確指向Laravel的public目錄;
  • 數據庫:支持MySQL(5.7+)/MariaDB(10.2+)/PostgreSQL(10+),需提前創建數據庫及用戶并授權;
  • 其他工具:需安裝Composer(PHP依賴管理)、Git(版本控制,可選)、Node.js+NPM(若項目使用前端構建工具如Webpack,可選)。

2. 文件與目錄權限設置

  • 所有者調整:將Laravel項目目錄所有者設為Web服務器用戶(Nginx默認為nginx,Apache默認為apache),命令示例:
    sudo chown -R nginx:nginx /path/to/your/laravel-project  # 替換為實際項目路徑
    
  • 權限配置
    • 普通文件:設置為644(所有者可讀寫,組及其他用戶只讀);
    • 目錄:設置為755(所有者可讀寫執行,組及其他用戶可讀執行);
    • 特殊目錄(storage、bootstrap/cache):需賦予Web服務器寫權限,設置為775(避免權限過高導致安全風險),命令示例:
      sudo find /path/to/your/laravel-project -type d -exec chmod 755 {} \;  # 所有目錄設為755
      sudo find /path/to/your/laravel-project -type f -exec chmod 644 {} \;  # 所有文件設為644
      sudo chmod -R 775 /path/to/your/laravel-project/storage  # 存儲目錄設為775
      sudo chmod -R 775 /path/to/your/laravel-project/bootstrap/cache  # 緩存目錄設為775
      
  • SELinux處理:若系統啟用SELinux(默認開啟),需調整文件上下文或臨時禁用:
    • 臨時禁用:sudo setenforce 0(重啟后恢復);
    • 永久禁用:編輯/etc/selinux/config,將SELINUX=enforcing改為SELINUX=disabled;
    • 或保留SELinux并設置正確上下文:sudo chcon -R -t httpd_sys_content_t /path/to/your/laravel-project。

3. Web服務器配置要點

  • Nginx配置示例

    server {
        listen 80;
        server_name yourdomain.com;  # 替換為實際域名/IP
        root /path/to/your/laravel-project/public;  # 必須指向public目錄
        index index.php index.html index.htm;
        
        location / {
            try_files $uri $uri/ /index.php?$query_string;  # 路由轉發到index.php
        }
        
        location ~ \.php$ {
            fastcgi_pass unix:/var/run/php-fpm/php-fpm.sock;  # 與PHP-FPM通信
            fastcgi_index index.php;
            fastcgi_param SCRIPT_FILENAME $realpath_root$fastcgi_script_name;
            include fastcgi_params;
        }
        
        location ~ /\.(?!well-known).* {
            deny all;  # 禁止訪問隱藏文件(如.git)
        }
        
        add_header X-Frame-Options "SAMEORIGIN";  # 安全頭設置
        add_header X-Content-Type-Options "nosniff";
    }
    

    重啟Nginx:sudo systemctl restart nginx。

  • Apache配置示例

    <VirtualHost *:80>
        ServerName yourdomain.com;
        DocumentRoot /path/to/your/laravel-project/public;
        
        <Directory /path/to/your/laravel-project/public>
            AllowOverride All;  # 允許.htaccess覆蓋
            Require all granted;
        </Directory>
    </VirtualHost>
    

    重啟Apache:sudo systemctl restart httpd。

4. PHP環境配置細節

  • 擴展安裝:通過yum安裝必要擴展(以Remi倉庫為例):
    sudo yum install php php-cli php-fpm php-json php-common php-mysqlnd php-zip php-gd php-mbstring php-curl php-xml php-bcmath
    
  • PHP配置調整:編輯/etc/php.ini,優化以下參數(根據服務器資源調整):
    memory_limit = 256M  # 內存限制(避免上傳大文件時報錯)
    upload_max_filesize = 100M  # 上傳文件大小限制
    post_max_size = 100M  # POST數據大小限制
    max_execution_time = 300  # 腳本最大執行時間(秒)
    date.timezone = Asia/Shanghai  # 時區設置(避免時間相關錯誤)
    
    重啟PHP-FPM:sudo systemctl restart php-fpm。

5. Laravel項目部署步驟

  • 上傳項目:通過SCP/SFTP將本地Laravel項目上傳至服務器指定目錄(如/var/www/html/your-laravel-project);
  • 安裝依賴:進入項目目錄,運行composer install --no-dev --optimize-autoloader(生產環境禁用開發依賴并優化自動加載);
  • 配置環境:復制.env.example.env,修改以下關鍵配置:
    APP_ENV=production  # 生產環境
    APP_DEBUG=false  # 關閉調試模式
    APP_KEY=base64:xxxxxx  # 生成密鑰(若未生成,運行php artisan key:generate)
    DB_CONNECTION=mysql
    DB_HOST=127.0.0.1
    DB_PORT=3306
    DB_DATABASE=your_database  # 數據庫名
    DB_USERNAME=your_username  # 數據庫用戶
    DB_PASSWORD=your_password  # 數據庫密碼
    
  • 生成密鑰與遷移
    php artisan key:generate  # 生成APP_KEY
    php artisan migrate --force  # 執行數據庫遷移(--force強制在生產環境運行)
    
  • 前端資源編譯(若有):若項目使用Vue/React等前端框架,運行:
    npm install  # 安裝前端依賴
    npm run production  # 編譯前端資源(壓縮JS/CSS)
    

6. 安全加固措施

  • 禁用目錄列表:確保Web服務器配置中autoindex off(Nginx/Apache默認關閉),防止暴露目錄結構;
  • 限制隱藏文件訪問:Nginx中添加location ~ /\.(?!well-known).* { deny all; },Apache中添加<FilesMatch "^\."> Deny from all</FilesMatch>,禁止訪問.git、.env等隱藏文件;
  • 配置HTTPS:使用Let’s Encrypt免費證書,通過Certbot配置HTTPS(命令示例):
    sudo yum install certbot python3-certbot-nginx  # Nginx
    sudo certbot --nginx -d yourdomain.com  # 自動配置HTTPS
    
  • 定期更新:保持系統、PHP、Web服務器及Laravel框架更新,修復安全漏洞。

7. 日志與故障排查

  • Laravel日志:查看storage/logs/laravel.log(需設置APP_DEBUG=true臨時開啟調試),定位應用層錯誤;
  • Web服務器日志:Nginx錯誤日志位于/var/log/nginx/error.log,Apache錯誤日志位于/var/log/httpd/error_log,排查服務器配置問題;
  • PHP錯誤日志:檢查/var/log/php-fpm.log(PHP-FPM日志)或php.inierror_log設置的路徑,查看PHP運行時錯誤。

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