1. 系統與軟件版本要求
yum
或Remi倉庫安裝);public
目錄;2. 文件與目錄權限設置
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
sudo setenforce 0
(重啟后恢復);/etc/selinux/config
,將SELINUX=enforcing
改為SELINUX=disabled
;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
/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項目部署步驟
/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強制在生產環境運行)
npm install # 安裝前端依賴
npm run production # 編譯前端資源(壓縮JS/CSS)
6. 安全加固措施
autoindex off
(Nginx/Apache默認關閉),防止暴露目錄結構;location ~ /\.(?!well-known).* { deny all; }
,Apache中添加<FilesMatch "^\."> Deny from all</FilesMatch>
,禁止訪問.git
、.env
等隱藏文件;sudo yum install certbot python3-certbot-nginx # Nginx
sudo certbot --nginx -d yourdomain.com # 自動配置HTTPS
7. 日志與故障排查
storage/logs/laravel.log
(需設置APP_DEBUG=true
臨時開啟調試),定位應用層錯誤;/var/log/nginx/error.log
,Apache錯誤日志位于/var/log/httpd/error_log
,排查服務器配置問題;/var/log/php-fpm.log
(PHP-FPM日志)或php.ini
中error_log
設置的路徑,查看PHP運行時錯誤。