签入版本

This commit is contained in:
2026-10-08 17:50:29 +08:00
parent 809750b47e
commit e213a9b31d
444 changed files with 39366 additions and 37533 deletions
@@ -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
# -----------------------------------------------------------------------------
# 前端回滚(恢复构建产物)