fix: 远程PG用TCP+密码连接, deploy_remote.sh用su postgres+socket

This commit is contained in:
selfrelease
2026-07-15 11:49:37 +08:00
parent 5aad0eb8f1
commit fc6ba087e9
2 changed files with 11 additions and 35 deletions
+10 -34
View File
@@ -18,46 +18,22 @@ if [ -z "$PSQL" ]; then
exit 1
fi
# 远程环境:PG 15 端口 5432,用 postgres 用户连接
PSQL_CMD="$PSQL -h 127.0.0.1 -p 5432 -U postgres -d wxchat_sales"
# 远程环境:PG 15 端口 5432socket 在 /run/postgresql用 postgres 用户连接
PG_SOCKET="/run/postgresql"
# 检查连接方式:优先 su postgres,其次直连
PG_CONN_OK=0
su - postgres -c "$PSQL -h 127.0.0.1 -p 5432 -d wxchat_sales -c 'SELECT 1'" >/dev/null 2>&1 && PG_CONN_OK=1
if [ "$PG_CONN_OK" -eq 0 ]; then
echo "[WARN] postgres 用户连接失败,尝试 root 直连..."
PSQL_CMD="$PSQL -h 127.0.0.1 -p 5432 -d wxchat_sales"
fi
echo "[INFO] 使用 psql: $PSQL"
echo "[INFO] 使用 psql: $PSQL (socket: $PG_SOCKET)"
echo "[INFO] 执行 schema.sql..."
# 执行 schema.sql(幂等,包含迁移语句)
if [ "$PG_CONN_OK" -eq 1 ]; then
su - postgres -c "$PSQL -h 127.0.0.1 -p 5432 -d wxchat_sales -f $DEMO_DIR/db/schema.sql" 2>&1 || {
echo "[WARN] schema.sql 执行有警告,尝试继续..."
}
else
$PSQL_CMD -f "$DEMO_DIR/db/schema.sql" 2>&1 || {
echo "[WARN] schema.sql 执行有警告,尝试继续..."
}
fi
# 执行 schema.sql(幂等,包含迁移语句)— 用 su postgres 通过 socket 连接
su - postgres -c "$PSQL -h $PG_SOCKET -p 5432 -d wxchat_sales -f $DEMO_DIR/db/schema.sql" 2>&1 || {
echo "[WARN] schema.sql 执行有警告,尝试继续..."
}
# 重置序列
if [ "$PG_CONN_OK" -eq 1 ]; then
su - postgres -c "$PSQL -h 127.0.0.1 -p 5432 -d wxchat_sales -c \"SELECT setval('product_id_seq', COALESCE((SELECT max(id) FROM product), 1), true);\"" 2>/dev/null || true
su - postgres -c "$PSQL -h 127.0.0.1 -p 5432 -d wxchat_sales -c \"SELECT setval('salesperson_id_seq', COALESCE((SELECT max(id) FROM salesperson), 1), true);\"" 2>/dev/null || true
else
$PSQL_CMD -c "SELECT setval('product_id_seq', COALESCE((SELECT max(id) FROM product), 1), true);" 2>/dev/null || true
$PSQL_CMD -c "SELECT setval('salesperson_id_seq', COALESCE((SELECT max(id) FROM salesperson), 1), true);" 2>/dev/null || true
fi
su - postgres -c "$PSQL -h $PG_SOCKET -p 5432 -d wxchat_sales -c \"SELECT setval('product_id_seq', COALESCE((SELECT max(id) FROM product), 1), true);\"" 2>/dev/null || true
su - postgres -c "$PSQL -h $PG_SOCKET -p 5432 -d wxchat_sales -c \"SELECT setval('salesperson_id_seq', COALESCE((SELECT max(id) FROM salesperson), 1), true);\"" 2>/dev/null || true
# 验证
if [ "$PG_CONN_OK" -eq 1 ]; then
PRODUCT_COUNT=$(su - postgres -c "$PSQL -h 127.0.0.1 -p 5432 -d wxchat_sales -t -c 'SELECT count(*) FROM product;'" 2>/dev/null | xargs || echo "0")
else
PRODUCT_COUNT=$($PSQL_CMD -t -c "SELECT count(*) FROM product;" 2>/dev/null | xargs || echo "0")
fi
PRODUCT_COUNT=$(su - postgres -c "$PSQL -h $PG_SOCKET -p 5432 -d wxchat_sales -t -c 'SELECT count(*) FROM product;'" 2>/dev/null | xargs || echo "0")
echo "[OK] 产品数量: $PRODUCT_COUNT"
echo "[OK] 数据库迁移完成"
+1 -1
View File
@@ -56,7 +56,7 @@ ssh -o StrictHostKeyChecking=no ${REMOTE_USER}@${REMOTE_HOST} "
fi
# 启动新进程
cd ${REMOTE_DEMO}
DB_HOST=127.0.0.1 DB_PORT=5432 DB_USER=postgres DB_NAME=wxchat_sales \
DB_HOST=127.0.0.1 DB_PORT=5432 DB_USER=postgres DB_PASSWORD=Why_701208 DB_NAME=wxchat_sales \
nohup /usr/bin/python3 -m uvicorn web.server:app --host 127.0.0.1 --port 8770 \
> ${REMOTE_DEMO}/web.log 2>&1 &
sleep 2