在生产服务器 Git clone 一个 Laravel 私有仓库
本教程以 aaPanel 为例,请根据 laravel 版本安装好对应 php nginx mysql redis 等 web 环境所需
然后安装好 php 所需扩展,比如
fileinfo redis 等
将 php 的禁用函数开启
putenv() proc_open() proc_get_status()
记得重启 php
然后应用安装 PM2 Manager ,也就是安装 nodejs
将 gitlab 的通信私钥 id_rsa 上传到生产环境服务器下的 root 目录下的 .ssh 目录下
然后到 www/wwwroot 执行
git clone 项目地址
Git 拉取下来的用户组一般为 root ,需要更改为 www 或者自己对应的 web 环境用户组
chgrp -R laravel *
检查 compose 版本,如果较低,请更新 composer 否则 执行 install 会报错
composer self-update
继续执行
# 1. 安装依赖,不包含开发包
composer install --no-dev --optimize-autoloader
composer install --no-dev --optimize-autoloader --no-interaction --prefer-dist
# 2. 优化配置加载
php artisan config:cache
# 3. 优化路由加载
php artisan route:cache
# 4. 优化视图加载
php artisan view:cache
# 5. 如果使用了事件监听器
php artisan event:cache
配置环境文件并执行更新 laravel 的密钥
cp .env.example .env php artisan key:generate
配置 env 中的数据库信息,并执行 migrate 生成数据表
php artisan migrate
对需要权限的目录进行分配权限
chmod -R 775 storage bootstrap/cache
如果后台使用了 filament 来构建,然后前端有使用 php artisan make:livewire-table 来构建了页面,这时样式可能会错位不完整,需要
php artisan filament:assets
确保了 Filament 所需的所有静态资源都被正确复制到你的项目中
安装前端组件,并编译前端文件
npm install npm run build
Laravel 的 Livewire 是一个很好的包组件,但是通常 clone 到生产环境会失效,包括 alpinejs ,所以在生产环境,也是更好的为了提高性能,请执行
php artisan livewire:publish --assets
这时网站应该已经可以正常访问了
保持在本地开发更新代码,然后再线上来执行 pull 同步
将线上 rclone 后的代码更改用户组,执行 git 会出错,这是因为以 root 用户身份操作非 root 用户创建的 Git 仓库。
git config --global --add safe.directory /www/wwwroot/你的目录
执行更新
git pull origin main
使用宝塔等网站面板,在添加域名时,可能会在网站目录生成一些其他文件,这时执行 git pull 会产生问题,因为本地文件产生变化,这时可以以下操作
git reset --hard git reset --hard HEAD #在执行 Pull git pull origin main