站内搜索

搜索

一起来砍树,ai简单部署

zhajx

zhajx 性别不明 当前离线 『新手萌新』

『新手萌新』 发表于 2026-5-10 12:41:21 | 显示全部楼层 |阅读模式
本帖付费内容售价10钻石  本帖部分内容需要扣减钻石,您尚未登录,请 登录注册

🔥UVWXYZ » X-寻道大千服务端🔥

UVWXYZ » X-寻道大千

💥UVWXYZ » X-寻道大千Ubuntu服务端💯

UVWXYZ » X-寻道大千手游名称:

UVWXYZ » X-寻道大千

Ubuntu操作系统:

Ubuntu

放置挂机手游玩法:

放置挂机

手工架设端架设难度:

手工架设端

服务端主题类型:

服务端

安卓苹果双端游戏平台:

安卓苹果双端

古风仙侠画面类型:

古风仙侠

4253文件大小: 4253MB
解压密码解压密码: 您所在的用户组暂无权查看,请登录后查看。
# 寻道大千 Ubuntu 服务端部署与安卓 APK 修改流程

压缩包里面还有一份架设教程,这个是自己部署的全流程以及踩坑点,你可以直接让ai帮你部署,结合文档即可

本文记录一次完整部署流程,目标是让别人拿到同样的目录后可以复现部署。

本次示例服务器公网 IP:

```text
122.51.27.223
```

本次本地目录结构:

```text
服务端/xddq.zip
服务端/架设教程.txt
客户端/安卓.apk
客户端/苹果.ipa
```

> iOS 本次未处理。

## 1. 准备服务器

系统建议:

```text
Ubuntu Server 22.04 LTS 64 位
```

确认本机 SSH 公钥已经添加到服务器,可以直接免密登录:

```bash
ssh root@122.51.27.223
```

如果首次连接,需要接受 host key。

## 2. 安装基础环境

原教程使用宝塔,指定环境为:

```text
Nginx 1.26
MySQL 5.7
PHP 7.2
Redis 7.4
Node.js 18.19.1
```

本次实际部署没有安装宝塔,而是在干净 Ubuntu 上安装系统包与 Node 18:

```bash
apt-get update
apt-get install -y unzip curl wget build-essential nginx mysql-server redis-server php-fpm php-mysql php-cli php8.1-curl net-tools lsof nodejs npm
```

安装 Node 18.19.1 和 PM2:

```bash
npm config set registry https://registry.npmmirror.com
npm install -g n pm2
n 18.19.1
hash -r
node -v
npm -v
pm2 -v
```

期望 Node 版本:

```text
v18.19.1
```

启动并设置基础服务自启:

```bash
systemctl enable --now mysql redis-server nginx php8.1-fpm
```

确认 PHP curl 扩展已经启用。GM 后台发送邮件会调用区服 `/sendMail` 接口,如果没有 curl 扩展,页面会看起来没有反应,Nginx 错误日志里会出现 `Call to undefined function curl_init()`:

```bash
php -m | grep -i curl
systemctl restart php8.1-fpm
```

关闭系统防火墙:

```bash
ufw disable
```

## 3. 上传并解压服务端

服务器创建目录:

```bash
mkdir -p /home/ubuntu
```

本地上传服务端压缩包:

```bash
scp 服务端/xddq.zip root@122.51.27.223:/home/ubuntu/xddq.zip
```

服务器移动并解压:

```bash
mv /home/ubuntu/xddq.zip /xddq.zip
cd /
unzip -o -q /xddq.zip
chmod 777 -R /data /www/wwwroot/game
```

解压后关键目录:

```text
/data
/data/server/d_acc
/data/server/zone1
/data/server/zone2
/www/wwwroot/game
```

## 4. 设置 MySQL root 密码

原脚本 `/data/sk` 默认 MySQL root 密码是 `123123`。

Ubuntu 22.04 默认 MySQL 8 使用 socket 登录,需要先改 root 密码:

```bash
mysql -uroot <<'SQL'
ALTER USER 'root'@'localhost' IDENTIFIED WITH mysql_native_password BY '123123';
FLUSH PRIVILEGES;
SQL
```

验证:

```bash
mysql -uroot -p123123 -e "SHOW DATABASES;"
```

## 5. 替换服务端公网 IP

原教程建议使用类似命令:

```bash
sed -i "s/122.51.27.223/你的IP/g" `grep 122.51.27.223 -rl /data`
```

这里有大坑:不要对整个 `/data` 目录无差别替换。

原因:

```text
/data/server/zone1/server1
/data/server/zone2/server2
```

这两个是 Go 编译后的二进制文件。无差别 grep/sed 可能会把二进制文件里的 IP 字符串也替换掉。如果新 IP 长度不同,会破坏二进制,启动时可能直接 core dump,表现为:

```text
segfault at 8 ip ... in ld-linux-x86-64.so.2
timeout: the monitored command dumped core
```

正确做法是只改教程列出的文本配置文件:

```bash
sed -i "s/122.51.27.223/122.51.27.223/g" \
  /data/server/d_acc/config/config.ddg.js \
  /data/server/zone1/configs/app.ini \
  /data/server/zone2/configs/app.ini \
  /www/wwwroot/game/crazy_android/resource/v110/project.manifest \
  /www/wwwroot/game/crazy_android/resource/v110/version.manifest \
  /www/wwwroot/game/crazy_ios/resource/v110/project.manifest \
  /www/wwwroot/game/crazy_ios/resource/v110/version.manifest
```

如果已经误替换了二进制,恢复方式:

```bash
cd /
unzip -o -q /xddq.zip data/server/zone1/server1 data/server/zone2/server2
chmod 777 /data/server/zone1/server1 /data/server/zone2/server2
```

## 6. 导入数据库

执行服务端自带脚本:

```bash
cd /data
./sk
```

导入后应该看到这些库:

```bash
mysql -uroot -p123123 -e "SHOW DATABASES;"
```

应包含:

```text
cps_account
ddg_1
ddg_2
x_account
```

## 7. 安装运行环境

执行:

```bash
cd /data
./install
```

这个脚本会做几件事:

```text
安装编译依赖
编译 Python 3.10.9
解压并 npm install 注册服依赖
安装 pkg
安装 Go 1.22.2
```

注意:

```text
Python 编译开启了 --enable-optimizations,会跑 PGO 测试和二次编译,耗时较长。
中间出现大量 gcc、npm warning 属正常现象,只要最终出现“运行环境安装成功”即可。
```

## 8. 配置 Nginx 81 端口

原教程后台与资源地址都走 `http://IP:81`。如果不用宝塔,需要自己加 Nginx 站点:

```bash
cat > /etc/nginx/sites-available/xddq-game.conf <<'EOF'
server {
    listen 81 default_server;
    listen [::]:81 default_server;
    server_name _;
    root /www/wwwroot/game;
    index index.php index.html index.htm;

    client_max_body_size 100m;

    location / {
        try_files $uri $uri/ /index.php?$query_string;
    }

    location ~ \.php$ {
        include snippets/fastcgi-php.conf;
        fastcgi_pass unix:/run/php/php8.1-fpm.sock;
    }

    location ~ /\.ht {
        deny all;
    }
}
EOF

ln -sf /etc/nginx/sites-available/xddq-game.conf /etc/nginx/sites-enabled/xddq-game.conf
nginx -t
systemctl reload nginx
```

验证:

```bash
curl -I http://127.0.0.1:81/reg.php
curl -I http://127.0.0.1:81/crazy_android/resource/v110/project.manifest
```

应返回 `200 OK`。

## 9. 启动注册服 d_acc

首次启动:

```bash
cd /data/server/d_acc
pm2 start npm --name "d_acc" -- run dev
```

保存 PM2 状态并设置自启:

```bash
pm2 save
pm2 startup systemd -u root --hp /root
pm2 save
```

验证:

```bash
pm2 status
curl -s http://127.0.0.1:7001/
```

正常返回:

```text
hi, egg
```

## 10. 处理区服内置地址坑

恢复区服二进制后,直接启动一区可能出现:

```text
listen tcp 103.192.209.71:56000: bind: cannot assign requested address
```

这个地址不在普通配置文件里,而是在区服二进制内部:

```bash
strings /data/server/zone1/server1 | grep "103.192.209.71:56000"
```

由于这是二进制,不建议把它直接替换成长度不同的公网 IP。

本次处理方式:

1. 用等长 hostname 替换二进制里的 `103.192.209.71:56000`
2. 在 `/etc/hosts` 把 hostname 映射到本地地址
3. 一区和二区用不同 loopback IP,避免两个区服同时绑定 `56000` 冲突

原字符串长度:

```text
103.192.209.71:56000
```

替换为同长度:

```text
zone1.localhos:56000
zone2.localhos:56000
```

注意 `localhos` 少一个 `t`,这是为了严格保持长度一致。

执行:

```bash
cat >> /etc/hosts <<'EOF'
127.0.0.1 zone1.localhos
127.0.0.2 zone2.localhos
EOF

perl -0pi -e "s/103\.192\.209\.71:56000/zone1.localhos:56000/g" /data/server/zone1/server1
perl -0pi -e "s/103\.192\.209\.71:56000/zone2.localhos:56000/g" /data/server/zone2/server2
```

二区还有一个端口坑:

```text
zone1 和 zone2 的 [webserver] addr 默认都是 :8001
```

如果两个区服都开,会冲突。把二区改成 `8002`:

```bash
sed -i "s/addr = :8001/addr = :8002/" /data/server/zone2/configs/app.ini
```

## 11. 使用 systemd 管理一区和二区

比 `nohup ./server1 &` 更稳定,也方便开机自启。

一区服务:

```bash
cat > /etc/systemd/system/xddq-zone1.service <<'EOF'
[Unit]
Description=XDDQ Zone 1
After=network.target mysql.service redis-server.service

[Service]
Type=simple
WorkingDirectory=/data/server/zone1
ExecStart=/data/server/zone1/server1
Restart=on-failure
RestartSec=5
StandardOutput=append:/data/server/zone1/server1.log
StandardError=append:/data/server/zone1/server1.log

[Install]
WantedBy=multi-user.target
EOF
```

二区服务:

```bash
cat > /etc/systemd/system/xddq-zone2.service <<'EOF'
[Unit]
Description=XDDQ Zone 2
After=network.target mysql.service redis-server.service

[Service]
Type=simple
WorkingDirectory=/data/server/zone2
ExecStart=/data/server/zone2/server2
Restart=on-failure
RestartSec=5
StandardOutput=append:/data/server/zone2/server2.log
StandardError=append:/data/server/zone2/server2.log

[Install]
WantedBy=multi-user.target
EOF
```

启动:

```bash
systemctl daemon-reload
systemctl enable --now xddq-zone1 xddq-zone2
```

查看状态:

```bash
systemctl status xddq-zone1 xddq-zone2 --no-pager
```

正常监听端口:

```bash
ss -lntp | grep -E ":(3250|3251|3252|3253|56000|7001|81)"
```

应看到:

```text
127.0.0.1:56000  server1
127.0.0.2:56000  server2
*:3250           server1
*:3251           server1
*:3252           server2
*:3253           server2
0.0.0.0:7001     node
0.0.0.0:81       nginx
```

## 12. 公网访问验证

在本机执行:

```bash
curl -I http://122.51.27.223:81/reg.php
curl -I http://122.51.27.223:81/gm/gmadmin.php
curl -I http://122.51.27.223:81/crazy_android/resource/v110/project.manifest
curl -s http://122.51.27.223:7001/
```

端口连通性:

```bash
for p in 3250 3251 3252 3253 7001 81; do
  nc -vz -G 5 122.51.27.223 "$p"
done
```

## 13. 常用地址

注册地址:

```text
http://122.51.27.223:81/reg.php
```

GM 后台:

```text
http://122.51.27.223:81/gm/gmadmin.php
```

GM 密码:

```text
123123
```

物品后台:

```text
http://122.51.27.223:81/gm/wupin.php
```

CDK 自助后台:

```text
http://122.51.27.223:81/gm/index.php
```

### 后台授权和发送邮件用法

GM 后台的“授权系统”不是游戏内 VIP,而是给网页后台写授权文件:

```text
/www/wwwroot/game/gm/user/xundao-10001.json
```

按钮含义:

```text
无限:写入 level=0,只是普通授权
物品:写入 level=1,物品后台发邮件需要这个权限
取消:删除授权
修改:修改授权密码
```

给账号开物品权限:

```text
GM 后台:http://122.51.27.223:81/gm/gmadmin.php
GM 校验码:123123
区服:魔道1区
账号:填写登录账号或 UID,不要填角色昵称
授权密码:自定义,例如 123123
点击:物品
```

物品后台发送邮件:

```text
物品后台:http://122.51.27.223:81/gm/wupin.php
授权密码:上一步填写的授权密码,例如 123123
区服:魔道1区
账号:填写登录账号或 UID,不要填角色昵称
选择物品
填写数量
点击:发送邮件
```

账号填写规则很容易踩坑:

```text
可以填登录账号,例如 zhajx1
也可以填 UID,例如 10787880961
不要填角色昵称,例如 冷鱼黑2世
```

如果点击“发送邮件”没有反应,先看 Nginx 错误日志:

```bash
tail -n 120 /var/log/nginx/error.log
```

如果看到:

```text
Call to undefined function curl_init()
```

说明 PHP curl 扩展没装或 PHP-FPM 没重启,执行:

```bash
apt-get update
apt-get install -y php8.1-curl
systemctl restart php8.1-fpm
php -m | grep -i curl
```

可用 curl 直接验证邮件接口:

```bash
curl -sS -X POST http://127.0.0.1:81/gm/user/wupin.php \
  --data-urlencode "type=mail" \
  --data-urlencode "uid=10787880961" \
  --data-urlencode "qu=10001" \
  --data-urlencode "pwd=123123" \
  --data-urlencode "item=1" \
  --data-urlencode "num=1000"
```

正常返回:

```text
成功
```

区服日志里应能看到类似:

```text
do test mail 10787880961 1#1#1000
```

查看日志:

```bash
tail -n 40 /data/server/zone1/server1.log
```

物品后台默认前端数量上限只有 `99`,后端允许更大。本次已改成 `1-999999999`。如果新部署也要放开限制,修改:

```bash
perl -0pi -e "s/mailnum>99/mailnum>999999999/g; s/道具数量范围:1-99/道具数量范围:1-999999999/g" \
  /www/wwwroot/game/gm/js/wupin.js

perl -0pi -e "s/max=\"99999999\"/max=\"999999999\"/g" \
  /www/wwwroot/game/gm/wupin.php
```

如果页面仍提示旧上限,浏览器强制刷新缓存:

```text
Windows:Ctrl + F5
macOS:Command + Shift + R
```

## 14. 修改安卓 APK

教程中安卓客户端要改三处:

```text
assets/assets/main/index.js
assets/remote/resources/native/0b/0bfa8219-158a-4ed5-b555-de82bce41c62.manifest
assets/remote/resources/native/97/97d3205d-b982-4e32-aafd-20abb172514a.manifest
```

原始 APK:

```text
客户端/安卓.apk
```

建议生成新 APK,不覆盖原文件:

```text
客户端/安卓_122.51.27.223.apk
```

示例流程:

```bash
WORK="$(mktemp -d)"
APK="/Users/jensenzz/Downloads/寻道大千/客户端/安卓.apk"
OUT="/Users/jensenzz/Downloads/寻道大千/客户端/安卓_122.51.27.223.apk"
UNSIGNED="$WORK/安卓_unsigned.apk"

cp "$APK" "$UNSIGNED"
cd "$WORK"

unzip -q "$UNSIGNED" \
  assets/assets/main/index.js \
  assets/remote/resources/native/0b/0bfa8219-158a-4ed5-b555-de82bce41c62.manifest \
  assets/remote/resources/native/97/97d3205d-b982-4e32-aafd-20abb172514a.manifest

perl -0pi -e 's/122\.51\.27\.223/122.51.27.223/g; s/103\.192\.209\.71/122.51.27.223/g' \
  assets/assets/main/index.js \
  assets/remote/resources/native/0b/0bfa8219-158a-4ed5-b555-de82bce41c62.manifest \
  assets/remote/resources/native/97/97d3205d-b982-4e32-aafd-20abb172514a.manifest

zip -q -d "$UNSIGNED" 'META-INF/*' || true
zip -q -u "$UNSIGNED" \
  assets/assets/main/index.js \
  assets/remote/resources/native/0b/0bfa8219-158a-4ed5-b555-de82bce41c62.manifest \
  assets/remote/resources/native/97/97d3205d-b982-4e32-aafd-20abb172514a.manifest
```

生成签名证书:

```bash
KEYSTORE="/Users/jensenzz/Downloads/寻道大千/客户端/android-deploy.keystore"

keytool -genkeypair -v \
  -keystore "$KEYSTORE" \
  -storepass 123456 \
  -keypass 123456 \
  -alias xddq \
  -keyalg RSA \
  -keysize 2048 \
  -validity 10000 \
  -dname "CN=xddq, OU=Codex, O=Local, L=Shanghai, ST=Shanghai, C=CN"
```

重新签名:

```bash
cp "$UNSIGNED" "$OUT"
jarsigner \
  -keystore "$KEYSTORE" \
  -storepass 123456 \
  -keypass 123456 \
  -signedjar "$OUT.signed" \
  "$OUT" \
  xddq

mv "$OUT.signed" "$OUT"
jarsigner -verify -certs "$OUT"
```

验证 APK 内地址:

```bash
for p in \
  'assets/assets/main/index.js' \
  'assets/remote/resources/native/0b/0bfa8219-158a-4ed5-b555-de82bce41c62.manifest' \
  'assets/remote/resources/native/97/97d3205d-b982-4e32-aafd-20abb172514a.manifest'
do
  echo "== $p =="
  unzip -p "$OUT" "$p" | strings | grep -E '121\.41\.207\.4|122\.51\.27\.223|103\.192\.209\.71' | head
done
```

注意:

```text
重新签名后,手机如果已安装原包,可能需要先卸载旧包再安装新包。
```

## 15. 上传 APK 到服务器提供下载

服务器创建下载目录:

```bash
ssh root@122.51.27.223 'mkdir -p /www/wwwroot/game/download'
```

上传:

```bash
scp 客户端/安卓_122.51.27.223.apk \
  root@122.51.27.223:/www/wwwroot/game/download/xddq_android_122.51.27.223.apk
```

设置权限:

```bash
ssh root@122.51.27.223 'chmod 644 /www/wwwroot/game/download/xddq_android_122.51.27.223.apk'
```

下载地址:

```text
http://122.51.27.223:81/download/xddq_android_122.51.27.223.apk
```

验证:

```bash
curl -I http://122.51.27.223:81/download/xddq_android_122.51.27.223.apk
```

应返回:

```text
HTTP/1.1 200 OK
Content-Length: ...
Accept-Ranges: bytes
```

## 16. 常用运维命令

查看注册服:

```bash
pm2 status
pm2 logs d_acc
```

重启注册服:

```bash
pm2 restart d_acc
```

查看区服:

```bash
systemctl status xddq-zone1 xddq-zone2 --no-pager
```

重启区服:

```bash
systemctl restart xddq-zone1
systemctl restart xddq-zone2
```

看区服日志:

```bash
tail -f /data/server/zone1/server1.log
tail -f /data/server/zone2/server2.log
```

查看端口:

```bash
ss -lntp | grep -E ":(81|7001|3250|3251|3252|3253|56000)"
```

查看 Nginx:

```bash
nginx -t
systemctl status nginx --no-pager
```

查看数据库:

```bash
mysql -uroot -p123123 -e "SHOW DATABASES;"
```

## 17. 本次关键坑点总结

1. 不要对 `/data` 全目录执行无差别 `sed` 替换 IP,否则会破坏区服二进制。
2. 区服二进制内置 `103.192.209.71:56000`,不能直接替换成不同长度字符串。
3. 一区和二区都要用 `56000`,需要映射到不同 loopback IP,避免绑定冲突。
4. 二区默认 `[webserver] addr = :8001`,需要改成 `:8002`,避免和一区冲突。
5. `/data/install` 编译 Python 很慢,看到大量 gcc 和 npm warning 不代表失败。
6. 不用宝塔时,需要自己配置 Nginx 81 端口和 PHP-FPM。
7. APK 修改后需要移除旧 `META-INF` 签名并重新签名。
8. 新签名 APK 如果和旧包签名不同,安卓设备可能要先卸载旧包。
9. GM/物品后台发送邮件依赖 PHP curl 扩展,缺少时会 500,页面可能表现为点击没有反应。
10. 物品后台账号栏要填登录账号或 UID,不要填角色昵称。
11. 物品后台默认 JS 把邮件数量限制为 `1-99`,需要按需求改大。


一起来砍树,ai简单部署2936 作者:zhajx 帖子ID:6827 一起来砍树,ai简单部署,简单部署,
一起来砍树,ai简单部署3169 作者:zhajx 帖子ID:6827 一起来砍树,ai简单部署,简单部署,
一起来砍树,ai简单部署1537 作者:zhajx 帖子ID:6827 一起来砍树,ai简单部署,简单部署,
一起来砍树,ai简单部署8277 作者:zhajx 帖子ID:6827 一起来砍树,ai简单部署,简单部署,

一起来砍树, ai简单部署, 简单部署

520013

520013 性别不明 当前离线 『新手萌新』

『新手萌新』 发表于 2026-5-10 18:53:32 | 显示全部楼层
帮顶一下早日解决
tsabo_gh

tsabo_gh 性别不明 当前离线 『初窥门径』

『初窥门径』 发表于 2026-5-10 22:13:01 | 显示全部楼层
虽说AI,但是……感觉一个脚本搞定
萌萌的白白

萌萌的白白 性别不明 当前离线 『新手萌新』

『新手萌新』 发表于 2026-5-10 22:20:41 | 显示全部楼层
感谢分享
3334391297

3334391297 性别不明 当前离线 『新手萌新』

『新手萌新』 发表于 2026-5-10 23:59:18 | 显示全部楼层
感谢分享
吼吼小超人

吼吼小超人 性别不明 当前离线 『初窥门径』

『初窥门径』 发表于 2026-5-11 06:31:54 | 显示全部楼层
谢谢分享一起来砍树,ai简单部署
520013

520013 性别不明 当前离线 『新手萌新』

『新手萌新』 发表于 2026-5-11 21:05:32 | 显示全部楼层
帮顶一下早日解决
lck123

lck123 性别不明 当前离线 『新手萌新』

『新手萌新』 发表于 2026-5-12 06:40:11 | 显示全部楼层
谢谢分享
娱乐而已

娱乐而已 性别不明 当前离线 『新手萌新』

『新手萌新』 发表于 2026-5-13 16:44:42 | 显示全部楼层
谢谢分享
520013

520013 性别不明 当前离线 『新手萌新』

『新手萌新』 发表于 2026-5-13 19:08:03 | 显示全部楼层
帮顶一下
您需要登录后才可以回帖 登录 | 立即注册 QQ登录

本版积分规则

Powered by 教私服论坛 © 2016-2024