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运行时错误。