Laravel生产环境部署需六步:一、安装PHP 8.1+、Nginx、MySQL、Composer及必要扩展;二、Git克隆代码并运行composer install --no-dev --optimize-autoloader;三、设APP_ENV=production、APP_DEBUG=false,生成密钥,禁止.env网络访问;四、Nginx root指向public,配置try_files与PHP处理;五、chown -R www-data:www-data storage bootstrap/cache;六、执行migrate --force及config:cache、route:cache、view:cache。

如果您已完成Laravel项目开发并准备上线,但应用在服务器上无法正常响应或报错,则很可能是生产环境配置缺失或不一致。以下是部署Laravel到生产环境的多种方法:
一、服务器环境准备与基础组件安装
确保操作系统具备运行Laravel所需的底层支撑,包括兼容版本的PHP、Web服务器、数据库及扩展模块。缺少任一关键组件将导致应用启动失败或功能异常。
1、更新系统包索引:sudo apt update
2、安装Nginx、PHP 8.1+及必需扩展:sudo apt install nginx php8.1-fpm php8.1-mysql php8.1-curl php8.1-mbstring php8.1-xml php8.1-bcmath php8.1-zip php8.1-gd php8.1-opcache
3、安装MySQL服务与Composer:sudo apt install mysql-server && sudo apt install composer
4、验证PHP扩展是否启用:php -m | grep -E "openssl|pdo|mbstring|tokenizer|xml|ctype|json"
5、确认PHP-FPM服务已启用并运行:sudo systemctl enable php8.1-fpm && sudo systemctl start php8.1-fpm
二、代码上传与依赖安装
需避免直接上传未优化的开发态代码,必须剔除开发依赖并启用自动加载优化,以提升性能并降低攻击面。
1、创建网站根目录:sudo mkdir -p /var/www/myapp
2、通过Git克隆项目至该目录:cd /var/www && git clone https://your-repo-url.git myapp
3、进入项目目录并安装生产依赖:cd /var/www/myapp && composer install --no-dev --optimize-autoloader
4、设置执行权限:sudo chown -R $USER:www-data /var/www/myapp
5、确保当前用户对storage和bootstrap/cache有写权限:chmod -R 775 storage bootstrap/cache
三、环境配置与安全加固
此步骤直接影响应用安全性与行为一致性,APP_DEBUG必须关闭,.env文件不可被Web直接访问,且密钥必须唯一生成。
1、复制环境模板:cp .env.example .env
2、编辑.env文件,设置:APP_ENV=production、APP_DEBUG=false、APP_URL=https://yourdomain.com
3、配置数据库连接参数:DB_HOST、DB_DATABASE、DB_USERNAME、DB_PASSWORD需与生产数据库严格匹配
4、生成唯一应用密钥:php artisan key:generate
5、清除配置缓存并验证debug状态:php artisan config:clear && php artisan tinker -c "config('app.debug')"
6、禁止Web访问.env文件:在Nginx配置中添加location ~ \.env { deny all; }
Laravel Cloud(cloud.laravel.com)。此技能用于处理所有 Laravel Cloud 请求,包括搜索和读取数据。只要任务涉及 Laravel Cloud,即使用此技能。
四、Web服务器配置(Nginx)
Nginx必须正确指向public子目录,并通过try_files规则将所有请求路由至index.php,否则静态资源加载失败或路由返回404。
1、创建站点配置文件:sudo nano /etc/nginx/sites-available/myapp
2、写入配置,确保root指令指向/var/www/myapp/public
3、在location /块中设置:try_files $uri $uri/ /index.php?$query_string;
4、添加PHP处理块,包含fastcgi_param SCRIPT_FILENAME $realpath_root$fastcgi_script_name;
5、启用站点并测试配置:sudo ln -sf /etc/nginx/sites-available/myapp /etc/nginx/sites-enabled/ && sudo nginx -t
6、重载Nginx服务:sudo systemctl reload nginx
五、目录权限与运行时保障
storage和bootstrap/cache目录必须由Web服务器用户(如www-data)拥有写权限,否则日志无法写入、视图无法编译、会话无法保存。
1、递归设置目录权限:chmod -R 755 storage bootstrap/cache
2、变更目录属主:sudo chown -R www-data:www-data storage bootstrap/cache
3、创建软链接(如使用本地存储):php artisan storage:link
4、预检缓存目录可写性:php -r "echo is_writable('storage/logs') ? 'OK' : 'FAIL';"
5、设置bootstrap/cache权限后再次清缓存:php artisan config:clear && php artisan cache:clear
六、数据库迁移与缓存预热
迁移操作不可裸跑,必须配合--force强制执行且前置检查;缓存命令能显著减少每次请求的解析开销,是生产必备步骤。
1、执行数据库迁移(含强制确认):php artisan migrate --force
2、缓存配置:php artisan config:cache
3、缓存路由:php artisan route:cache
4、缓存视图:php artisan view:cache
5、验证缓存是否生效:php artisan tinker -c "config('app.debug')"










