外观
Laravel 笔记
约 660 字大约 2 分钟
2025-06-20
本文记录 Laravel 开发中常用的 Artisan 命令和部署流程。
基础命令
创建与启动项目
# 创建新项目(Laravel 11+)
composer create-project laravel/laravel example-app
# 启动开发服务器
php artisan serve常用生成器
# 生成资源控制器
php artisan make:controller UserController --resource
php artisan make:controller UserController --api
# 生成模型(+ 迁移文件)
php artisan make:model User -m
php artisan make:model User -mfc # Model + Migration + Controller
# 生成中间件/请求/队列等
php artisan make:middleware CheckAge
php artisan make:request StoreUserRequest
php artisan make:job ProcessPodcast
php artisan make:listener SendPodcastReceivedNotification路由管理
# 查看路由列表
php artisan route:list
# 清除路由缓存
php artisan route:clear缓存与优化
# 配置/视图缓存
php artisan config:cache
php artisan config:clear
php artisan view:cache
php artisan view:clear
# 清除应用缓存
php artisan cache:clear
# 生产环境一键优化
php artisan optimize数据库
# 执行迁移
php artisan migrate
# 回滚最近一批迁移
php artisan migrate:rollback
# 重置所有迁移(危险操作)
php artisan migrate:fresh
# 数据填充
php artisan db:seed
php artisan db:seed --class=UserSeeder部署流程
上传代码(或 clone 仓库)
安装依赖(生产环境):
composer install --no-dev --optimize-autoloader配置
.env文件(复制.env.example),设置数据库、Redis 等生成应用密钥:
php artisan key:generate- 执行数据库迁移:
php artisan migrate --force- 设置目录权限(不要使用 777):
chown -R www-data:www-data storage bootstrap/cache
chmod -R 775 storage bootstrap/cache- 创建存储符号链接:
php artisan storage:link- 编译前端资源(如使用):
npm install && npm run build- 进入/退出维护模式:
php artisan down
php artisan up- 配置 Cron 定时任务:
* * * * * cd /path/to/project && php artisan schedule:run >> /dev/null 2>&1Laravel 11+ 变更要点
Laravel 11 引入了新的目录结构:
app/
Http/ # 控制器、中间件等
Providers/ # 服务提供者
bootstrap/
app.php # 应用启动文件(替代 bootstrap/app.php)
providers.php # 服务提供者注册
config/
database/ # 迁移文件
routes/
console.php # artisan 命令路由(替代 Console/Kernel.php)
web.php # Web 路由
api.php # API 路由
resources/ # 视图、前端资源
tests/ # 测试文件主要变化:
- 移除了
AppServiceProvider中大量的条件分支,改为在bootstrap/providers.php中注册 - 路由文件不再在
boot()中注册,改为在bootstrap/app.php中配置 - API 路由默认有 middleware 分组
常见问题
key was too long 错误
MySQL 5.7 及以下版本的索引长度限制问题。
在 AppServiceProvider::boot() 中设置:
use Illuminate\Support\Facades\Schema;
public function boot()
{
Schema::defaultStringLength(191);
}跨环境视图编译路径
修改 config/view.php:
'compiled' => env(
'VIEW_COMPILED_PATH',
realpath(storage_path('framework/views'))
),在 .env 中设置绝对路径:
VIEW_COMPILED_PATH=/absolute/path/to/storage/framework/views