部署文档补充:主服务器部署与更新流程、重启清库/丢端口等事故经验、密码重置方法
This commit is contained in:
@@ -25,8 +25,66 @@ cp .env.docker .env
|
|||||||
docker compose up -d
|
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 |
|
| 后台管理 | `http://localhost:18091/admin` | admin | admin123 |
|
||||||
|
|||||||
Reference in New Issue
Block a user