修改配置

This commit is contained in:
vet
2026-04-13 23:28:06 +07:00
parent fc351cf730
commit d6572d2217
6 changed files with 200 additions and 3 deletions

View File

@@ -7,14 +7,16 @@
# 2. 配置 GOPROXY自动测速选最快节点 # 2. 配置 GOPROXY自动测速选最快节点
# 3. 安装 Node.js / npm前端依赖 # 3. 安装 Node.js / npm前端依赖
# 4. 安装 Docker基础设施容器 # 4. 安装 Docker基础设施容器
# 5. 写入 /etc/profile.d/deploy-env.sh永久生效 # 5. 安装 Nginx 并写入 PC/OpenIM 反代(:80 → 10001/10002/10008见 nginx/openim-pc-proxy.conf
# 6. 写入 /etc/profile.d/deploy-env.sh永久生效
# #
# 用法: # 用法:
# ./deploy-test/00-init-tools.sh # 安装全部 # ./deploy-test/00-init-tools.sh # 安装全部(含 Nginx 反代)
# ./deploy-test/00-init-tools.sh go # 只安装/配置 Go # ./deploy-test/00-init-tools.sh go # 只安装/配置 Go
# ./deploy-test/00-init-tools.sh node # 只安装 Node.js # ./deploy-test/00-init-tools.sh node # 只安装 Node.js
# ./deploy-test/00-init-tools.sh docker # 只安装 Docker # ./deploy-test/00-init-tools.sh docker # 只安装 Docker
# ./deploy-test/00-init-tools.sh goproxy # 只配置 GOPROXY # ./deploy-test/00-init-tools.sh goproxy # 只配置 GOPROXY
# sudo ./deploy-test/00-init-tools.sh nginx # 只安装 Nginx 反代(需 root
# #
# 前置条件: root 或 sudo 权限Ubuntu/Debian 系统 # 前置条件: root 或 sudo 权限Ubuntu/Debian 系统
# #
@@ -241,6 +243,71 @@ _install_docker() {
success " Docker $(docker --version | awk '{print $3}' | tr -d ',') 安装完成" success " Docker $(docker --version | awk '{print $3}' | tr -d ',') 安装完成"
} }
# ──────────────────────────────────────────────────────────────────────────────
# 5. Nginx — PC / OpenIM 统一入口HTTP :80反代本机 10001/10002/10008
# ──────────────────────────────────────────────────────────────────────────────
_install_pc_nginx_proxy() {
step "安装 Nginx 并配置 OpenIM/PC 反代"
if [[ "$(id -u)" -ne 0 ]]; then
error " Nginx 安装需 root请执行: sudo $0 nginx"
return 1
fi
local script_dir
script_dir="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)"
local conf_src="${script_dir}/nginx/openim-pc-proxy.conf"
local conf_name="openim-pc-proxy.conf"
if [[ ! -f "$conf_src" ]]; then
error " 找不到配置: $conf_src"
return 1
fi
if ! _has nginx; then
if _has apt-get; then
apt-get update -y
apt-get install -y nginx
elif _has dnf; then
dnf install -y nginx
elif _has yum; then
yum install -y nginx
else
error " 未检测到 apt/dnf/yum请先手动安装 nginx"
return 1
fi
fi
if [[ -d /etc/nginx/sites-available ]]; then
install -m 0644 "$conf_src" "/etc/nginx/sites-available/${conf_name}"
mkdir -p /etc/nginx/sites-enabled
ln -sf "/etc/nginx/sites-available/${conf_name}" "/etc/nginx/sites-enabled/${conf_name}"
if [[ -f /etc/nginx/sites-enabled/default ]]; then
rm -f /etc/nginx/sites-enabled/default
info " 已移除 sites-enabled/default避免与 openim-pc-proxy 冲突"
fi
else
install -m 0644 "$conf_src" "/etc/nginx/conf.d/${conf_name}"
fi
nginx -t
systemctl enable nginx 2>/dev/null || true
systemctl restart nginx
success " Nginx 反代已启用(配置: $conf_src"
info " 请放行 TCP 80curl -sS http://127.0.0.1/nginx-health 应返回 ok"
info " .env.deploy-test 中 PC_BACKEND_ORIGIN=http://<公网IP>(与 DEPLOY_TEST_IP 一致)"
}
# all 时非 root 则跳过(不中断 Go/Node/Docker
_run_nginx_if_root() {
if [[ "$(id -u)" -eq 0 ]]; then
_install_pc_nginx_proxy
else
warn " 当前非 root已跳过 Nginx。需要时在服务器上执行: sudo $0 nginx"
fi
}
# ────────────────────────────────────────────────────────────────────────────── # ──────────────────────────────────────────────────────────────────────────────
# 执行 # 执行
# ────────────────────────────────────────────────────────────────────────────── # ──────────────────────────────────────────────────────────────────────────────
@@ -258,15 +325,19 @@ case "$TARGET" in
docker) docker)
_install_docker _install_docker
;; ;;
nginx)
_install_pc_nginx_proxy
;;
all) all)
_install_go _install_go
_config_goproxy _config_goproxy
_install_node _install_node
_install_docker _install_docker
_run_nginx_if_root
;; ;;
*) *)
error "未知目标: $TARGET" error "未知目标: $TARGET"
echo "用法: $0 [all|go|goproxy|node|docker]" echo "用法: $0 [all|go|goproxy|node|docker|nginx]"
exit 1 exit 1
;; ;;
esac esac
@@ -284,6 +355,7 @@ _has npm && echo " npm: $(npm --version)" || echo
_has pnpm && echo " pnpm: $(pnpm --version)" || echo " pnpm: 未安装" _has pnpm && echo " pnpm: $(pnpm --version)" || echo " pnpm: 未安装"
_has yarn && echo " yarn: $(yarn --version)" || echo " yarn: 未安装" _has yarn && echo " yarn: $(yarn --version)" || echo " yarn: 未安装"
_has docker && echo " Docker: $(docker --version | awk '{print $3}' | tr -d ',')" || echo " Docker: 未安装" _has docker && echo " Docker: $(docker --version | awk '{print $3}' | tr -d ',')" || echo " Docker: 未安装"
_has nginx && echo " Nginx: $(nginx -v 2>&1 | sed 's/^nginx version: //')" || echo " Nginx: 未安装"
echo "" echo ""
echo -e "${BOLD}GOPROXY 配置:${NC}" echo -e "${BOLD}GOPROXY 配置:${NC}"
_has go && go env GOPROXY || echo " (go 未安装)" _has go && go env GOPROXY || echo " (go 未安装)"

View File

@@ -103,6 +103,13 @@ CF_CUSTOMER_CODE=huonxouoa55ent9z
# 来源: livecloud/config/config.yml → cloud.tencent 段 # 来源: livecloud/config/config.yml → cloud.tencent 段
TENCENT_SDK_APP_ID=20033091 TENCENT_SDK_APP_ID=20033091
TENCENT_SDK_SECRET_KEY=cceba44084aaa04f8c48a1858ffd5385875c3a5ec006d34278d9d3714b40e3b0 TENCENT_SDK_SECRET_KEY=cceba44084aaa04f8c48a1858ffd5385875c3a5ec006d34278d9d3714b40e3b0
# ── PC 客户端Vite dev对接的后端公网地址可选───────────────────────────
# 仅 IP在服务器上先部署 Nginx 反代sudo ./deploy-test/00-init-tools.sh nginx
# 填写与下方 DEPLOY_TEST_IP 一致的 http:// 根地址,无末尾斜杠
# ./deploy-test/07-start-frontend.sh 启动 pc 时会 export VITE_*,覆盖 pc/.env无需改 pc 目录
# 若某路径与网关不一致可单独覆盖PC_VITE_API_URL / PC_VITE_WS_URL / PC_VITE_CHAT_URL / PC_VITE_USER_URL
PC_BACKEND_ORIGIN=http://54.116.29.247
EOF EOF
success ".env.deploy-test 已写入: $ENV_FILE" success ".env.deploy-test 已写入: $ENV_FILE"

View File

@@ -8,6 +8,7 @@
# #
# 项目与端口: # 项目与端口:
# pc → 默认 yarn dev:web :5173无 Electron本机要 Electron 时设 PC_ELECTRON=1 使用 yarn dev # pc → 默认 yarn dev:web :5173无 Electron本机要 Electron 时设 PC_ELECTRON=1 使用 yarn dev
# 后端地址:在 .env.deploy-test 设 PC_BACKEND_ORIGIN启动时注入 VITE_*(不改 pc 目录)
# meetingh5 → React + Vite :5188 # meetingh5 → React + Vite :5188
# h5 → Vue + Vite :3003 # h5 → Vue + Vite :3003
# cms → UMI Max :8001 # cms → UMI Max :8001
@@ -123,6 +124,9 @@ _start_fe() {
fi fi
info "启动 ${BOLD}$name${NC} ..." info "启动 ${BOLD}$name${NC} ..."
if [[ "$name" == "pc" ]] && [[ -n "${PC_BACKEND_ORIGIN:-}" ]]; then
info " pc 后端 PC_BACKEND_ORIGIN=${PC_BACKEND_ORIGIN}(注入 VITE_*,不写 pc 目录)"
fi
# 写日志分隔符 # 写日志分隔符
{ {
@@ -133,6 +137,9 @@ _start_fe() {
# 后台启动(带环境变量前缀) # 后台启动(带环境变量前缀)
( (
cd "$dir" cd "$dir"
if [[ "$name" == "pc" ]]; then
pc_export_vite_backend_env
fi
if [[ -n "$env_prefix" ]]; then if [[ -n "$env_prefix" ]]; then
# shellcheck disable=SC2086 # shellcheck disable=SC2086
nohup env $env_prefix $cmd >> "$logfile" 2>&1 & nohup env $env_prefix $cmd >> "$logfile" 2>&1 &

View File

@@ -283,6 +283,21 @@ TENCENT_SDK_SECRET_KEY=xxx
> - `ws` → meetingmsg 弹幕 WebSocket `:8000` > - `ws` → meetingmsg 弹幕 WebSocket `:8000`
> - `liveApi` → livestream 直播间 API `:8081` > - `liveApi` → livestream 直播间 API `:8081`
### Nginx 反代(仅公网 IP供 PC / 浏览器访问后端)
无域名时,在**测试服务器**上部署 Nginx统一监听 **HTTP :80**,把路径转发到本机 `openim-server` / `chat-api`
| 路径前缀 | 后端 |
|----------|------|
| `/api/im/` | `127.0.0.1:10002` |
| `/api/user/``/api/chat/` | `127.0.0.1:10008` |
| `/msg_gateway` | `127.0.0.1:10001`WebSocket |
1. 服务器上已执行 `05-start.sh` 等,保证 `10001/10002/10008` 在监听。
2. 仓库根目录执行:`sudo ./deploy-test/00-init-tools.sh nginx`(会安装 `nginx` 并写入配置 `deploy-test/nginx/openim-pc-proxy.conf`;亦已包含在 `00-init-tools.sh` 无参的 **all** 流程末尾,需 root
3. 云安全组放行 **TCP 80**
4. `.env.deploy-test` 中设置 **`PC_BACKEND_ORIGIN=http://<DEPLOY_TEST_IP>`**(无末尾 `/`),与 `DEPLOY_TEST_IP` 一致;再 `./deploy-test/07-start-frontend.sh pc` 启动 PC 时即注入 `VITE_*`
### Docker 基础设施 ### Docker 基础设施
| 服务 | 端口 | | 服务 | 端口 |

View File

@@ -225,3 +225,25 @@ print_svc_status() {
# ── 所有后端服务名列表 ────────────────────────────────────────────────────────── # ── 所有后端服务名列表 ──────────────────────────────────────────────────────────
ALL_SVCS=(openim-server chat-rpc admin-rpc chat-api admin-api meetingmsg livecloud livestream build-server) ALL_SVCS=(openim-server chat-rpc admin-rpc chat-api admin-api meetingmsg livecloud livestream build-server)
# ── PC 前端 Vite 环境(不写 pc 目录,由 07-start-frontend 在子 shell 内 export────────
# 依赖 .env.deploy-test / .env.deploy-local 中的 PC_BACKEND_ORIGIN及可选 PC_VITE_*
pc_export_vite_backend_env() {
local o="${PC_BACKEND_ORIGIN:-}"
o="${o%/}"
[[ -z "$o" ]] && return 0
local host
host=$(printf '%s' "$o" | sed -E 's#^https?://([^/]+).*#\1#')
[[ -z "$host" ]] && return 0
export VITE_BASE_DOMAIN="${PC_VITE_BASE_DOMAIN:-$host}"
export VITE_API_URL="${PC_VITE_API_URL:-$o/api/im}"
export VITE_CHAT_URL="${PC_VITE_CHAT_URL:-$o/api/chat}"
export VITE_USER_URL="${PC_VITE_USER_URL:-$o/api/user}"
if [[ "$o" == http://* ]]; then
export VITE_WS_URL="${PC_VITE_WS_URL:-ws://${host}/msg_gateway}"
else
export VITE_WS_URL="${PC_VITE_WS_URL:-wss://${host}/msg_gateway}"
fi
}

View File

@@ -0,0 +1,74 @@
# OpenIM / PC 客户端统一入口HTTP :80
# 后端均为本机 deploy-test 单机进程openim-server、chat-api
#
# 安装:在测试服务器上以 root 执行
# sudo ./deploy-test/00-init-tools.sh nginx
#
# 安全组 / 防火墙须放行 TCP 80后端 10001/10002/10008 仅需本机访问127.0.0.1
server {
listen 80;
listen [::]:80;
server_name _;
client_max_body_size 100m;
# OpenIM HTTP API → openim-server :10002
location /api/im/ {
proxy_pass http://127.0.0.1:10002/;
proxy_http_version 1.1;
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header X-Forwarded-Proto $scheme;
proxy_read_timeout 300s;
proxy_send_timeout 300s;
}
# 用户 / 登录相关 → chat-api :10008与 im-cms-nginx 一致)
location /api/user/ {
proxy_pass http://127.0.0.1:10008/;
proxy_http_version 1.1;
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header X-Forwarded-Proto $scheme;
proxy_read_timeout 300s;
proxy_send_timeout 300s;
}
# Chat API → chat-api :10008
location /api/chat/ {
proxy_pass http://127.0.0.1:10008/;
proxy_http_version 1.1;
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header X-Forwarded-Proto $scheme;
proxy_read_timeout 300s;
proxy_send_timeout 300s;
}
# MsgGateway WebSocket → openim-server :10001
location /msg_gateway {
proxy_pass http://127.0.0.1:10001;
proxy_http_version 1.1;
proxy_set_header Upgrade $http_upgrade;
proxy_set_header Connection "upgrade";
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header X-Forwarded-Proto $scheme;
proxy_cache_bypass $http_upgrade;
proxy_buffering off;
proxy_read_timeout 86400s;
proxy_send_timeout 86400s;
}
# 可选:健康检查
location = /nginx-health {
access_log off;
default_type text/plain;
return 200 "ok\n";
}
}