diff --git a/部署文档.md b/部署文档.md index b62a288..356f4a8 100644 --- a/部署文档.md +++ b/部署文档.md @@ -25,8 +25,66 @@ cp .env.docker .env docker compose up -d ``` +## 主服务器部署与更新(8.133.254.174) + +生产环境部署在主服务器阿里云,IP 直连 18091 端口(无域名、无证书,勿再使用已废弃的 kefu.wildcs2.com)。 + +### 服务器访问 + +```bash +ssh -i "C:/data/密钥/祝总阿里云.pem" root@8.133.254.174 +``` + +- 部署目录:`/www/projects/crmchat`(gitea clone,master 分支) +- 访问地址:`http://8.133.254.174:18091`(阿里云安全组已放行 18091/TCP) +- 代码推送:`git push origin master`(偶发认证失败,重试一次即可) + +### 更新部署标准流程(顺序不可颠倒) + +```bash +# 本地:提交并推送 +git push origin master + +# 服务器:拉取 → 重建 php 镜像 → 重建容器 → 重启 nginx → 健康检查 +cd /www/projects/crmchat +git pull +docker compose build php +docker compose up -d php +docker restart crmchat-nginx +curl -s -o /dev/null -w "%{http_code}\n" http://localhost:18091/chat/index # 预期 200 +``` + +每一步都有原因,跳过或换序会出事故: + +| 步骤 | 为什么 | +|------|--------| +| `docker compose build php` 必须在任何重启之前 | 旧镜像的 entrypoint 没有空库守卫,**对旧镜像容器执行 restart 会无条件重导初始化 SQL,清空整个数据库**(2026-09-25 已踩:清掉了用户会话数据)。新镜像的 entrypoint 检测到库已初始化(`eb_system_admin` 哨兵表存在)会跳过导入 | +| `up -d php` 而非 `restart php` | 新 entrypoint 在新镜像里,restart 不换镜像;up -d 重建容器才会用新镜像 | +| `docker restart crmchat-nginx` 收尾 | ① php 容器重建后 IP 变化,nginx 缓存旧 IP → 502;② `nginx.conf` 是单文件 bind mount,git pull 替换文件后容器仍指向旧 inode,`nginx -s reload` 读到的还是旧配置,必须 restart 容器重新挂载 | + +### 已固化的构建/配置修改(勿回退) + +- `docker/php/Dockerfile`:apt 源切阿里云镜像。原因:`php:7.4-cli` 基于 Debian bullseye,LTS 已于 2026-08-31 结束,deb.debian.org 从 ECS 访问超时、各镜像站陆续清理 bullseye 包(404);security 源在镜像站/archive 迁移空窗期同样 404,暂去掉(基础镜像本身是 2022 快照,无实际回退;中期应升级基础镜像到受支持的 Debian/PHP 版本) +- `nginx/nginx.conf`:`absolute_redirect off`。原因:容器内 nginx 监听 80、对外映射 18091,nginx 发绝对 Location 重定向时用的是容器内端口(80),外部端口 18091 会丢失 +- `entrypoint.sh`:空库守卫 + `eb_system_admin` 哨兵表检查(见上) + +### 忘记密码重置方法 + +```bash +# 在服务器上执行(以 admin 为例,kefu 同理换表名字段) +cd /www/projects/crmchat +MYSQLPASS=$(grep '^MYSQL_ROOT_PASSWORD=' .env | cut -d= -f2) +NEWPASS=$(openssl rand -hex 8); echo "新密码: $NEWPASS" +HASH=$(docker exec crmchat-php php -r "echo password_hash(\$argv[1], PASSWORD_DEFAULT);" "$NEWPASS") +docker exec crmchat-mysql mysql -uroot -p"$MYSQLPASS" crmeb_chat \ + -e "UPDATE eb_system_admin SET pwd='$HASH' WHERE account='admin';" +# kefu 坐席:UPDATE eb_chat_service SET password='$HASH' WHERE account='kefu'; +``` + ## 访问地址 +> 本地开发默认 admin123 / kefu123;**主服务器(8.133.254.174:18091)的 admin / kefu 密码已于 2026-09-25 重置为随机值**(不再使用默认密码),重置方法见「主服务器部署与更新」。 + | 入口 | 地址 | 账号 | 密码 | |------|------|------|------| | 后台管理 | `http://localhost:18091/admin` | admin | admin123 |