能用Laravel快速搭建可访问的个人博客:本地安装Laravel 11骨架,配置MySQL数据库并成功迁移,启动开发服务器后首页显示博文列表,全程无需Docker或云服务。

用Laravel快速搭起一个可访问的个人博客,要求本地开发环境能跑通、数据库连接成功、首页显示博文列表,不依赖Docker或云服务,全程在命令行和浏览器中完成。
安装Laravel项目骨架
打开终端,进入你打算存放项目的目录(比如 ~/Sites),执行 Laravel 官方推荐的安装命令:
composer create-project laravel/laravel blog --version=11.*
这一步会下载 Laravel 11 最新版并初始化基础结构。如果提示“command not found: composer”,说明未安装 Composer,需先去 getcomposer.org 下载并配置到系统 PATH 中。
安装耗时较长,期间不要中断或关闭终端窗口。安装完成后,进入项目目录:cd blog
配置本地数据库与环境变量
确保本机已安装 MySQL(推荐 8.0+)且服务正在运行。若尚未创建数据库,请先登录 MySQL:
mysql -u root -p → 输入密码 → 执行 CREATE DATABASE blog_dev CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;
回到 Laravel 项目根目录,复制环境配置文件:cp .env.example .env
用编辑器打开 .env 文件,修改以下三行:
DB_DATABASE=blog_dev
DB_USERNAME=root
DB_PASSWORD=你的MySQL密码
注意:DB_PASSWORD 若为空则留空,但不能删掉等号;若密码含特殊字符(如 @、/、:),必须用单引号包裹,例如 DB_PASSWORD='p@ss/w0rd'
生成应用密钥并迁移数据表
第一步:生成 APP_KEY,否则 Laravel 启动会报错:
php artisan key:generate
第二步:执行迁移命令,让 Laravel 自动创建 users、password_resets、failed_jobs 等基础表:
php artisan migrate
如果提示 “SQLSTATE[HY000] [1045] Access denied”,说明 .env 中数据库凭证错误,需返回上一步核对用户名、密码、数据库名是否完全匹配;若提示 “Base table or view not found”,通常是 DB_DATABASE 值写错或数据库不存在,需确认 MySQL 中已执行 CREATE DATABASE。
启动开发服务器并访问首页
执行命令启动内置 PHP 服务器:
php artisan serve
终端将输出类似 “Starting Laravel development server: http://127.0.0.1:8000” 的提示。此时打开浏览器,访问 http://127.0.0.1:8000。
若看到 Laravel 默认欢迎页(含 “You have successfully installed Laravel!” 字样),说明部署成功;若显示 “Whoops, looks like something went wrong”,检查 storage/logs/laravel.log 最近几行错误,常见原因是 .env 文件未保存、APP_KEY 未生成或数据库连接失败。
创建博客文章模型与资源路由
方法一:使用 Artisan 快速生成模型、迁移、控制器三位一体:
php artisan make:model Post -mcr
该命令会同时创建 app/Models/Post.php、database/migrations/xxx_create_posts_table.php、app/Http/Controllers/PostController.php,并注册资源路由。
方法二:手动编辑刚生成的迁移文件(路径形如 database/migrations/*_create_posts_table.php),在 up() 方法中添加字段:
public function up(MigrationBuilder $builder): void
{
$builder->create('posts', function (Blueprint $table) {
$table->id();
$table->string('title');
$table->text('content');
$table->timestamps();
});
}
保存后运行 php artisan migrate 再次执行迁移,此时 posts 表将被创建。
方法三:注册资源路由。打开 routes/web.php,在文件末尾添加:
Route::resource('posts', PostController::class)->only(['index', 'show']);
这行代码表示只启用列表页(index)和详情页(show)两个动作,避免暴露 create/edit/destroy 等未授权接口。
填充示例文章并测试首页展示
第一步:创建数据库填充器:
php artisan make:factory PostFactory --model=Post
第二步:编辑 database/factories/PostFactory.php,修改 definition() 方法返回内容:
return [
'title' => fake()->sentence(),
'content' => fake()->paragraphs(3, true),
];
第三步:编写填充类:
php artisan make:seeder PostsTableSeeder
第四步:编辑 database/seeders/PostsTableSeeder.php,在 run() 方法中加入:
Post::factory()->count(5)->create();
第五步:在 DatabaseSeeder.php 的 run() 方法中取消注释这一行:$this->call(PostsTableSeeder::class);
最后执行填充命令:php artisan db:seed。执行完毕后,posts 表中将有 5 条随机生成的文章记录。


















