#!/usr/bin/env bash # 宇森游戏 · 线上服务器一键更新(请在 81.70.146.51 上执行) # 用法:sudo bash deploy_server.sh set -e # ===== 按实际情况修改这几个变量 ===== REPO_DIR="/opt/yuthon/game" # git 仓库目录(含 world.html 与 addons/) ODOO_CONF="/etc/odoo/odoo.conf" # odoo.conf 路径 ODOO_DB="game" # 线上数据库名(务必与前端 ?db= 一致) ODOO_SERVICE="odoo" # systemctl 服务名 ODOO_BIN="/usr/bin/odoo" # odoo-bin 路径(或 which odoo) # =================================== echo "== [1/5] 拉取最新代码 ==" cd "$REPO_DIR" git pull --ff-only origin main echo "== [2/5] 钉死 odoo.conf 数据库 ==" if grep -q "^[[:space:]]*db_name" "$ODOO_CONF"; then sed -i "s/^[[:space:]]*db_name.*/db_name = $ODOO_DB/" "$ODOO_CONF" else echo "db_name = $ODOO_DB" >> "$ODOO_CONF" fi if ! grep -q "^[[:space:]]*dbfilter" "$ODOO_CONF"; then echo "dbfilter = ^$ODOO_DB\$" >> "$ODOO_CONF" fi echo "当前 db_name=$(grep '^db_name' "$ODOO_CONF")" echo "== [3/5] 升级模块(数据库 $ODOO_DB)==" "$ODOO_BIN" -c "$ODOO_CONF" -d "$ODOO_DB" -u game_base,yt_world --stop-after-init # 若模块从未安装过,把上行的 -u 改成 -i 执行一次即可 echo "== [4/5] 重启 Odoo ==" systemctl restart "$ODOO_SERVICE" sleep 3 systemctl is-active "$ODOO_SERVICE" || { echo "Odoo 未起来,检查: journalctl -u $ODOO_SERVICE -n 50"; exit 1; } echo "== [5/5] 冒烟验证 ==" curl -s -o /dev/null -w "codex 接口 HTTP %{http_code}\n" "https://game.pengyuthon.cn/game/api/codex?db=game" echo "完成。前端为静态文件,nginx 指向 $REPO_DIR 即可,无需构建。"