laravel 12迁移核心是保障环境一致性、配置安全与服务可运行:需php≥8.2及必要扩展,web服务器指向public/,独立配置.env,执行migrate与缓存初始化,并严格校验app_env=production、app_debug=false及https启用。

准备目标服务器环境
确认系统已安装:
- PHP ≥ 8.2(Laravel 12 强制要求),并启用 mbstring、xml、ctype、json、bcmath、zip、gd、fileinfo、opcache 等扩展
- Nginx 或 Apache(推荐 Nginx)+ PHP-FPM,注意 PHP-FPM 用户需有项目目录读写权限
- Composer(建议 2.5+),MySQL/PostgreSQL 已就绪,数据库已创建且用户权限分配完成
- Git(用于代码拉取)、unzip(若用压缩包部署)、curl/wget(用于后续检查)
部署代码并设置基础结构
推荐使用 Git 部署(比 FTP/SFTP 更可控):
- 在服务器目标路径(如
/var/www/myapp)执行:git clone <your-repo-url> .</your-repo-url> - 确保
.gitignore已排除.env、storage/、bootstrap/cache/等敏感或动态目录 - 复制
.env.example为.env,填入生产数据库、缓存、队列、邮件等真实配置 - 生成应用密钥:
php artisan key:generate
安装依赖并初始化应用状态
进入项目根目录后依次执行:
-
composer install --no-dev --optimize-autoloader(跳过开发依赖,优化自动加载) -
php artisan migrate --force(强制运行未执行的迁移;首次部署务必确认数据库为空或兼容) -
php artisan storage:link(创建public/storage → storage/app/public软链接) -
php artisan config:clear && php artisan cache:clear && php artisan view:clear(清空所有缓存) - 如使用 Redis 缓存/队列,确认
redis-server已启动,并在.env中设CACHE_DRIVER=redis、QUEUE_CONNECTION=redis
配置 Web 服务器与权限
Nginx 示例(站点配置中关键项):
-
root /var/www/myapp/public;(必须指向public/,不是项目根目录) - 添加 Laravel 标准伪静态规则:
location / { try_files $uri $uri/ /index.php?$query_string; } - 确保
storage/和bootstrap/cache/可写:chown -R www-data:www-data storage bootstrap/cache(Ubuntu)或chown -R nginx:nginx ...(CentOS) - 禁用
.env和敏感路径的外部访问(Nginx 中加location ~ /\.(env|git|log)$ { deny all; })
安全与上线前检查
最后验证几项硬性指标:
-
APP_ENV=production且APP_DEBUG=false(否则会暴露敏感信息) - 访问首页不报 500,检查
storage/logs/laravel.log是否有致命错误 - 执行
php artisan tinker测试 DB 连接:>> DB::connection()->getPdo(); - 如含队列任务,启动
php artisan queue:work --daemon或配合 Supervisor 管理 - 启用 HTTPS(建议用 Certbot 自动签发),并在
.env中设APP_URL=https://your-domain.com











