Laravel项目基础知识整理
部署准备
必须上传的内容
这些是项目的核心逻辑,没有它们程序无法运行:
app/,bootstrap/,config/,database/,lang/,routes/: 所有的 PHP 核心逻辑和配置。public/:index.php(入口文件)。- 编译后的资源: 即
npm run build生成的public/build(Vite) 或public/dist文件夹。 .htaccess或nginx.conf等服务器配置文件。
resources/: 虽然线上主要运行编译后的文件,但视图文件 (.blade.php) 必须上传。storage/: 必须上传目录结构,但不要上传里面的日志或缓存文件(确保storage及其子目录在服务器上有写权限)。composer.json&package.json: 用于在服务器上识别版本信息。artisan: 命令行工具文件。
禁止上传
这些内容上传会导致你之前遇到的“路径报错”或严重的安全泄露:
node_modules/: 体积巨大且线上环境不需要它(线上只用编译后的 JS/CSS)。vendor/: 这里的路径映射往往包含本地物理路径,直接上传会导致Failed to open stream报错。必须在线上通过composer install生成。.env: 极度重要! 线上必须手动创建或通过 CI/CD 生成生产环境专用的.env,千万不要把本地带数据库密码的文件传上去。.git/: 除非你是通过git clone部署,否则如果是手动上传,不要包含这个隐藏文件夹。tests/: 生产环境不需要运行测试用例。
部署步骤
A. 本地准备
- 前端打包: 运行
npm run build,确保public/下生成了最新的静态资源。 - 清理缓存: 运行
php artisan optimize:clear确保没有旧的缓存。
B. 上传与安装
-
将上述“必须上传的内容”通过 FTP/Git 传到服务器。
-
安装后端依赖: 在服务器根目录运行:
1composer install --no-dev --optimize-autoloader--no-dev会排除你报错中提到的 Flare 等开发调试工具,减小体积并提高安全性。 -
创建环境变量: 复制一份
.env.example为.env,并修改为线上的数据库连接。 -
生成 Key & 迁移:
12php artisan key:generatephp artisan migrate --force
C. 性能优化 (仅限生产环境)
上传完毕后,运行以下命令让 Laravel 跑得更快:
|
1 2 3 4 5 6 7 8 |
# 1. 清理并重新缓存配置文件(最重要) php artisan config:cache # 2. 清理并重新缓存路由(如果你修改了 routes/*.php) php artisan route:cache # 3. 清理并重新生成视图缓存(如果你修改了 .blade.php) php artisan view:cache |
其他操作
- 需要开启PHP的扩展
opcache,开启后 laravel 整体项目会提升很多 - 设置
.env文件的SESSION_DOMAIN和SANCTUM_STATEFUL_DOMAINS
相关报错
Session store not set on request.
需要检查 .env 文件的 SANCTUM_STATEFUL_DOMAINS 设置前端可访问域名
CSRF token mismatch
SESSION_DOMAIN=null
计划任务启动
1. 打开服务器的 Crontab 编辑器
以运行 Web 项目的用户(通常是 www、www-data 或 ubuntu)身份执行:
|
1 |
crontab -e |
2. 添加下面这一行
在文件的末尾添加(注意替换为你项目的实际绝对路径):
|
1 |
* * * * * cd /home/www/xx.com && php artisan schedule:run >> /dev/null 2>&1 |
\* \* \* \* \*: 表示每分钟执行一次。php artisan schedule:run: Laravel 的调度引擎。它每分钟被唤醒一次,然后检查Kernel.php里有没有该跑的任务(比如你设定的everyTenMinutes)。
THE END
二维码
打赏

共有 0 条评论