签入版本
This commit is contained in:
@@ -18,20 +18,24 @@
|
||||
|
||||
**PHP 环境**:
|
||||
|
||||
- [ ] 安装 PHP 8.2+
|
||||
- [ ] 安装必需扩展:`pdo_mysql`、`mbstring`、`json`、`openssl`、`fileinfo`、`gd`
|
||||
- [ ] 安装可选扩展:`redis`(缓存驱动)
|
||||
- [ ] 安装 PHP 8.3+(Laravel 13 要求)
|
||||
- [ ] 安装必需扩展:`pdo_mysql`、`mbstring`、`gd`、`bcmath`、`zip`、`openssl`、`fileinfo`、`json`
|
||||
- [ ] 安装 Redis 扩展:`redis`(phpredis,缓存/会话/队列/JWT 均依赖,**必需**)
|
||||
- [ ] 安装 Composer 2.x
|
||||
- [ ] 配置 PHP-FPM(如使用 Nginx)
|
||||
|
||||
**数据库**:
|
||||
|
||||
- [ ] 安装 MySQL 8.0+(或 PostgreSQL / SQL Server / Oracle / SQLite)
|
||||
- [ ] 创建数据库:`CREATE DATABASE \`rxthinkcmf.thinkphp6.elevue\` DEFAULT CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci;`
|
||||
- [ ] 创建数据库:`CREATE DATABASE \`rxthinkcmf.laravel13.elevue\` DEFAULT CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci;`
|
||||
- [ ] 创建数据库用户并授权
|
||||
- [ ] 导入 SQL 脚本:`mysql -u root -proot rxthinkcmf.thinkphp6.elevue < document/mysql/rxthinkcmf.thinkphp6.elevue.sql`
|
||||
- [ ] 导入 SQL 脚本:`mysql -u root -proot rxthinkcmf.laravel13.elevue < document/mysql/rxthinkcmf.laravel13.elevue.sql`
|
||||
|
||||
**Redis(可选)**:
|
||||
:::info 表结构来源
|
||||
本项目表结构以 SQL 脚本为准(`document/mysql/`),`database/migrations/` 为空,不要依赖 `php artisan migrate` 建表。
|
||||
:::
|
||||
|
||||
**Redis(必需)**:
|
||||
|
||||
- [ ] 安装 Redis 6.0+
|
||||
- [ ] 配置密码
|
||||
@@ -39,7 +43,7 @@
|
||||
|
||||
**Node.js(前端构建)**:
|
||||
|
||||
- [ ] 安装 Node.js 22+
|
||||
- [ ] 安装 Node.js 22 LTS(根目录资源构建 Vite 7 要求 20.19+/22.12+;ui/ 前端为 Vite 3,兼容 Node 14+)
|
||||
- [ ] 安装 pnpm:`npm install -g pnpm`
|
||||
|
||||
### 第 3 阶段:应用部署
|
||||
@@ -48,11 +52,11 @@
|
||||
|
||||
- [ ] 上传项目代码到服务器
|
||||
- [ ] 安装 Composer 依赖:`composer install --no-dev --optimize-autoloader`
|
||||
- [ ] 配置 `.env` 文件(数据库、JWT 密钥、文件上传等)
|
||||
- [ ] 生成 JWT 密钥:`php -r "echo bin2hex(random_bytes(32));"`
|
||||
- [ ] 设置目录权限:`chmod -R 755 runtime/`、`chmod -R 755 public/uploads/`
|
||||
- [ ] 测试启动:`php think run`
|
||||
- [ ] 配置定时任务:`crontab -e` → `* * * * * cd /www/api && php think job:run`
|
||||
- [ ] 配置 `.env` 文件(数据库、Redis、JWT 密钥、文件上传等)
|
||||
- [ ] 生成应用密钥与 JWT 密钥:`php artisan key:generate`、`php -r "echo bin2hex(random_bytes(32));"`(写入 `JWT_SECRET`)
|
||||
- [ ] 设置目录权限:`chmod -R 755 storage/`、`chmod -R 755 bootstrap/cache/`、`chmod -R 755 public/uploads/`
|
||||
- [ ] 测试启动:`php artisan serve --host=127.0.0.1 --port=8000`(生产由 Nginx + PHP-FPM 承载)
|
||||
- [ ] 配置定时任务:`crontab -e` → `* * * * * cd /www/api && php artisan job:run`
|
||||
|
||||
**前端**:
|
||||
|
||||
@@ -69,14 +73,12 @@
|
||||
server {
|
||||
listen 80; # 监听 80 端口
|
||||
server_name api.example.com; # 绑定域名
|
||||
root /www/api/public; # ThinkPHP 入口目录
|
||||
root /www/api/public; # Laravel 入口目录(必须指向 public/)
|
||||
index index.php; # 默认索引文件
|
||||
|
||||
# URL 重写(ThinkPHP 路由必需)
|
||||
# URL 重写(Laravel 路由必需)
|
||||
location / {
|
||||
if (!-e $request_filename) {
|
||||
rewrite ^(.*)$ /index.php?s=$1 last; # 非真实文件请求转发到 index.php
|
||||
}
|
||||
try_files $uri $uri/ /index.php?$query_string; # 非真实文件请求转发到 index.php
|
||||
}
|
||||
|
||||
# PHP-FPM 转发
|
||||
@@ -97,7 +99,7 @@ server {
|
||||
server {
|
||||
listen 80; # 监听 80 端口
|
||||
server_name admin.example.com; # 绑定域名
|
||||
root /www/admin/dist; # 前端构建产物目录
|
||||
root /www/admin/dist; # 前端构建产物目录(ui/dist)
|
||||
index index.html; # 默认索引文件
|
||||
|
||||
# Vue Router History 模式(所有非文件请求回退到 index.html)
|
||||
@@ -116,22 +118,24 @@ server {
|
||||
|
||||
### 第 5 阶段:安全加固
|
||||
|
||||
- [ ] `.env` 中 `APP_DEBUG = false`
|
||||
- [ ] `.env` 中 `SHOW_ERROR_MSG = false`
|
||||
- [ ] `.env` 中 `JWT.SECRET` 已修改为强随机密钥
|
||||
- [ ] `.env` 中 `CORS.ALLOW_ORIGIN` 已限制为实际域名
|
||||
- [ ] `.env` 中 `APP_DEBUG=false`
|
||||
- [ ] `.env` 中 `APP_ENV=production`
|
||||
- [ ] `.env` 中 `JWT_SECRET` 已修改为强随机密钥(≥32 字符)
|
||||
- [ ] `.env` 中 `CORS_ALLOW_ORIGIN` 已限制为实际域名
|
||||
- [ ] 启用 HTTPS(SSL 证书)
|
||||
- [ ] 上传目录禁止执行 PHP
|
||||
- [ ] 数据库不允许外网访问
|
||||
- [ ] Redis 已设置密码
|
||||
- [ ] Redis 已设置密码且不对公网开放
|
||||
|
||||
### 第 6 阶段:验证
|
||||
|
||||
- [ ] 健康检查正常:访问 `/up` 返回 200
|
||||
- [ ] 验证码接口正常:`/api/captcha` 返回 `code=0`
|
||||
- [ ] 访问前端页面正常
|
||||
- [ ] 登录功能正常(admin / root)
|
||||
- [ ] 各模块 CRUD 功能正常
|
||||
- [ ] 文件上传功能正常
|
||||
- [ ] 定时任务正常执行
|
||||
- [ ] 定时任务正常执行(`php artisan job:run`,查看任务日志表)
|
||||
- [ ] 操作日志正常记录
|
||||
|
||||
## 版本更新 Checklist
|
||||
@@ -146,7 +150,7 @@ server {
|
||||
cp -r /www/api /www/api_backup_$(date +%Y%m%d)
|
||||
|
||||
# 备份数据库(mysqldump 导出 SQL,$(date +%Y%m%d) 自动生成日期后缀)
|
||||
mysqldump -u root -proot rxthinkcmf.thinkphp6.elevue > /backup/db_$(date +%Y%m%d).sql
|
||||
mysqldump -u root -proot rxthinkcmf.laravel13.elevue > /backup/db_$(date +%Y%m%d).sql
|
||||
|
||||
# -----------------------------------------------------------------------------
|
||||
# 第 2 步:更新代码
|
||||
@@ -157,17 +161,24 @@ composer install --no-dev --optimize-autoloader # 安装依赖(排除开
|
||||
# -----------------------------------------------------------------------------
|
||||
# 第 3 步:更新数据库(如有迁移脚本)
|
||||
# -----------------------------------------------------------------------------
|
||||
mysql -u root -proot rxthinkcmf.thinkphp6.elevue < document/mysql/migration.sql
|
||||
mysql -u root -proot rxthinkcmf.laravel13.elevue < document/mysql/migration.sql
|
||||
|
||||
# -----------------------------------------------------------------------------
|
||||
# 第 4 步:清除缓存
|
||||
# 第 4 步:清除并重建缓存
|
||||
# -----------------------------------------------------------------------------
|
||||
php think clear # 清除 ThinkPHP 运行时缓存(模板、路由、配置等)
|
||||
php artisan cache:clear # 清除应用缓存
|
||||
php artisan config:clear # 清除配置缓存
|
||||
php artisan route:clear # 清除路由缓存
|
||||
php artisan view:clear # 清除编译视图
|
||||
php artisan dict:clear-cache # 清除字典缓存(本项目自定义命令)
|
||||
|
||||
# 生产环境重新构建缓存(可选)
|
||||
php artisan config:cache && php artisan route:cache && php artisan view:cache
|
||||
|
||||
# -----------------------------------------------------------------------------
|
||||
# 第 5 步:重启 PHP-FPM(使 OPcache 失效,加载新代码)
|
||||
# -----------------------------------------------------------------------------
|
||||
sudo systemctl restart php8.2-fpm
|
||||
sudo systemctl restart php8.3-fpm
|
||||
```
|
||||
|
||||
### 更新前端
|
||||
@@ -199,10 +210,10 @@ sudo nginx -s reload
|
||||
cp -r /www/api_backup_20260920/* /www/api/
|
||||
|
||||
# 恢复数据库
|
||||
mysql -u root -proot rxthinkcmf.thinkphp6.elevue < /backup/db_20260920.sql
|
||||
mysql -u root -proot rxthinkcmf.laravel13.elevue < /backup/db_20260920.sql
|
||||
|
||||
# 重启 PHP-FPM(清除 OPcache,加载旧代码)
|
||||
sudo systemctl restart php8.2-fpm
|
||||
sudo systemctl restart php8.3-fpm
|
||||
|
||||
# -----------------------------------------------------------------------------
|
||||
# 前端回滚(恢复构建产物)
|
||||
|
||||
Reference in New Issue
Block a user