周明辉的博客

Laravel 13:小白也会部署的教程

Z
周明辉
48 views
网站运维 返回所有文章

前言:

我从2026.05.01开始,就决定要做一个博客,后面我用Laravel 13写好后,决定部署到宝塔面板上,踩了不少坑,于是写了这篇文章。

注释:如若代码有异步相关的代码,本教程可能覆盖不全。

准本工作

  1. 一个Linux系统。(Ubuntu 22+ / Deban 11+)
  2. 宝塔面板(bt.cn)。
  3. 一个域名(zhouminghui.com)。
  4. 一个聪明的大脑。

步骤

1. 安装系统

本身这个步骤应该是不存在的。

但是不同的系统会影响php的版本安装,可能有各种方式去安装,但是作为一个小白,我选择换系统。

原本我是CentOS 7 系统的,我用宝塔安装PHP8.4的时候,提示:当前系统不支持安装PHP8.1+,请换系统后再试

我又安装了Ubuntu 26版本,然后确实可以安装PHP8.4了,但是我在迁移其他的网站的时候,安装PHP7.4的时候,又提示:当前系统不支持安装PHP8.1以下版本,请换系统后再试

。。。。。。

各位视情况而定吧,可能其他版本可以都安装,但是我没有一一尝试了。

2. 安装宝塔面板+前提设置

这个很简单,去官网bt.cn看教程就行了。

我选择的是稳定版v10,主要是没广告。

然后选择LNMP组合,即Linux 、 Nginx 、 MySQL 、 PHP组合。

再去软件商店安装PHP8.4+的版本,phpmyadmin视情况安装吧。

此时来到最坑的地方了:

直接放PHP中文网的原文:

PHP 8.4 中 session_start() 失败主因是 session.save_path 不可写或未配置,且 session_set_cookie_params() 需显式传全参数,否则报错;输出提前、BOM、Redis/Memcached 配置错误也会导致会话失效。

session_start() 报 Warning: session_start(): Failed to read session data

PHP 8.4 默认启用了更严格的会话存储校验,session_start() 失败往往不是代码问题,而是底层存储路径不可写或 session.save_path 未显式配置。PHP 8.4 不再容忍 session.save_path 为空或指向不存在/无权限目录的情况,会直接中断并报错。

为了保证session可用,需要编辑php.ini,搜索save_path,找到;session.save_path = "/tmp",把;删掉。

并且确保/tmp目录的权限可用(虽然默认都可以,但是如果实在不行还是检查一下吧)

3. 【重点】部署网站

我的Laravel项目并没有队列等异步代码,所以这里没有设计如何配置worker。

location / {
    try_files $uri $uri/ /index.php?$query_string;
}

4. 【重点】修改.env

你需要修改以下的内容:

5. 【重点】上线

  1. 迁移数据库:

​ 如果你标标准准的写了迁移文件,可以运行:php artisan migrate迁移就行。

​ 如果你是手写数据库老鸟,就是喜欢自己写数据库开发,你直接把你sql文件导入就行了。

​ (一般来说,你想我一样安装了ubuntu26的话,无法安装php8.1以下的版本,这个时候你的phpmyadmin一般也用不了)

  1. 你还要去给目录下的/storage/bootstarp权限,755权限,所属者默认www就行。

很多人以为上面的步骤都搞完了就可以上线了,其实是不对的

其实你试过之后就会发现,“好像这个.env修改了没有效果啊?”

这是肯定的,这是一个坑。当你直接用nginx等,控制访问,就会有一个“缓存”的东西开始工作。

想想本地开发是怎么跑的,应该没人不是这样的吧?应该都是php artisan serve启动的,这个时候默认缓存是不生效的。

所以你需要去根目录下运行这几个命令:

# 1. 清理所有旧缓存(综合清理)
php artisan optimize:clear

# 2. 单独清理配置缓存
php artisan config:clear

# 3. 单独清理路由缓存
php artisan route:clear

# 4. 单独清理视图缓存
php artisan view:clear

# 5. 清理事件缓存
php artisan event:clear

# 6. 清理编译过的类文件
php artisan clear-compiled

# 7. 重新生成配置缓存(优化性能)
php artisan config:cache

# 8. 重新生成路由缓存(优化性能)
php artisan route:cache

# 9. 重新生成视图缓存(优化性能)
php artisan view:cache

# 10. 重新生成事件缓存(优化性能)
php artisan event:cache

# 11. 重新生成优化缓存(完整优化,包含所有组件)
php artisan optimize

不仅上线的时候要运行上面的一堆指令,哪怕你修改了一点点代码,都需要重新跑一遍对应的指令,要不然不生效。

除非你是大头你就选择php artisan serve然后套一个反向代理。

结束

这个时候就全部结束了,可以尽情访问你的web网站了。

常见问题

  1. 修改.env配置不生效:重新清理缓存。
  2. 修改php.ini了,但是还是不行:修改ini后需要重启php。
  3. 为什么我的样式不翼而飞了,我跑了npm run build啊?:把你的/public/hot文件删掉。