归档 紫溪涧 关于
手机端部署 mangos 项目 返回首页

序号: /2020/02/01/005

mangos 是一个开源的自由软件项目,
是用 c++ 和 C# 编程语言实现,
支持大型多人在线角色扮演游戏服务器的程序框架。

目前用于模拟魔兽世界游戏 60 服务端的有:

本文选择 cmangos 的【mangclassic】 项目。

1.手机准备

准备闲置手机一个,
我用的是:红米note4x,4+64,骁龙625。

获取 root 权限后,
安装 linuxdeploy ,
部署 Debian9 arm64 版本。
推荐连接 ssh 软件 Juicessh

充电策略管理:

2.编译程序

SSH连接手机ip:192.168.31.2,
先安装一下编译所需的工具。

apt-get install grep build-essential gcc g++ automake git-core autoconf make patch cmake libmysql++-dev mysql-server libtool libssl-dev binutils zlibc libc6 libbz2-dev subversion libboost-all-dev vim screen -y

由于手机上是 chroot 方式运行的 linux,所以我们就暂时跳过使用其他用户,就用 root 用户权限即可,然后进入 /home目录创建我们的工作目录。

mkdir -p /home/mangos
cd /home/mangos

克隆项目文件及数据库,以及汉化项目。

git clone git://github.com/cmangos/mangos-classic.git mangos
git clone git://github.com/cmangos/classic-db.git
git clone https://github.com/MangosExtras/MangosZero_Localised.git

准备工作做完,开始编译,建立编译目录build,安装目录run。

mkdir -p /home/mangos/build
mkdir -p /home/mangos/run

进入到 build 目录使用 cmake 生成项目文件。

cd /home/mangos/build
cmake ../mangos -DCMAKE_INSTALL_PREFIX=\../run -DPCH=1 -DDEBUG=0
cmake ../mangos -DCMAKE_INSTALL_PREFIX=\../run -DBUILD_EXTRACTORS=ON -DPCH=1 -DDEBUG=0
cmake ../mangos -DCMAKE_INSTALL_PREFIX=\../run -DBUILD_EXTRACTORS=ON -DPCH=1 -DDEBUG=0 -DBUILD_PLAYERBOT=ON

由于提取地图不是很方便,可以不生成地图工具。
-DBUILD_EXTRACTORS=ON这个参数可以删掉,然后直接使用官方发布的【Releases】版本的地图工具解压。

生成项目后使用 make 指令编译,完成后使用 make install 指令复制生成的文件及配置文件到我们指定的 run 目录。

可以使用后台及多线程编译。

nohup make -j4 &

cat nohup.out 查看日志,这样服务端就编译安装完成在 /home/mangos/run 目录,成功后进入 run 目录会有以下几个文件夹:bin、etc。

bin 里是服务器执行程序,里边的tools是地图解压工具。
etc 里是配置文件,进入etc文件夹,然后复制去掉.dist后缀

cp mangosd.conf.dist mangosd.conf
cp realmd.conf.dist realmd.conf
cp playerbot.conf.dist playerbot.conf
cp /home/mangos/mangos/src/game/AuctionHouseBot/ahbot.conf.dist.in ./ahbot.conf

使用官方下载的地图解压工具(把ad等工具复制到游戏目录)。

这里电脑上需要安装 git 软件,
右键游戏目录 git bash,
输入 ExtractResources.sh 解压地图文件。

然后在 run 目录建立 data 目录,把解压后的地图文件复制到此处。

同时配置 etc 目录里的 mangsd.conf

data="/home/mangos/run/data"

顺便把 loglevel 设为 1。

3.配置数据环境

配置网站环境,Debian9 默认是 php7、 mariadb,我这选的 nginx 配合。

参考:
『树莓派安装 Nginx + PHP7.0 + Pi Dashboard』

apt-get update

apt-get install nginx php7.0-fpm php7.0-cli php7.0-curl php7.0-gd php7.0-mcrypt php7.0-mysql php7.0-cgi -y

service nginx start

service php7.0-fpm restart

然后修改 nginx 配置以支持 php。

vim /etc/nginx/sites-available/default
找到下列内容:
location / {
                # First attempt to serve request as file, then
                # as directory, then fall back to displaying a 404.
                try_files $uri $uri/ =404;
        }
        
替换为:
location / {
index  index.html index.htm index.php default.html default.htm default.php;
}
 location ~\.php$ {
fastcgi_pass unix:/run/php/php7.0-fpm.sock;
#fastcgi_pass 127.0.0.1:9000;
fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
include fastcgi_params;
}

保存后重启 nginx,service nginx restart

这里还需要添加 mysql 用户到 aid_inet 组,手机上有自己的一套权限,然后启动 mariadb。

usermod -aG aid_inet mysql
/etc/init.d/mysql start

下一步配置注册页:【注册页下载】

将注册页移动到 /var/www/html 目录,我这里添加了一个修改服务器列表的 php 文件,输入192.168.31.2/md.php 修改即可,高级操作密码在 conf.php 内。

导入数据及汉化项目,先创建数据库及添加用户 mangos。

mysql -u root -p /home/mangos/mangos/sql/create/db_create_mysql.sql

然后依次导入数据库框架

mysql classicmangos < /home/mangos/mangos/sql/base/mangos.sql
mysql classiccharacters < /home/mangos/mangos/sql/base/characters.sql
mysql classicrealmd < /home/mangos/mangos/sql/base/realmd.sql

然后将世界库 classic-db 下的世界库数据导入 (cmangos自带一个安装脚本InstallFullDB.sh)。

进入 classic-db 执行 InstallFullDB.sh 生成 InstallFullDB.config 并编辑

cd /home/mangos/classic-db
./InstallFullDB.sh
vim InstallFullDB.config

修改
CORE_PATH="/home/mangos/mangos"
MYSQL="mysql"

然后执行./InstallFullDB.sh导入。

下一步导入ScriptDev2 数据,

mysql classicmangos < /home/mangos/mangos/sql/scriptdev2/scriptdev2.sql

然后进行汉化工作,
进入汉化项目目录,
按顺序将 1 2 3 开头的sql文件导入,
然后进入到 Translations 的 Chinese 目录,使用下列命令导入汉化数据:

for f in *.sql;do mysql classicmangos < $f;done

3.启动服务

screen -dmS mangosd /home/mangos/run/bin/mangosd -c /home/mangos/run/etc/mangosd.conf -a /home/mangos/run/etc/ahbot.conf
screen -dmS realmd /home/mangos/run/bin/realmd -c /home/mangos/run/etc/realmd.conf

访问局域网址注册个账号,
将客户端内 realmlist.wtf 内容修改为局域网地址。

有条件使用内网穿透服务(例如frp,花生壳)就可以让小伙伴们一起玩耍了!

讨论群『 75902909 』

END


本作品采用“CC BY-SA 4.0”进行许可。


如果你觉得本文对你有帮助,请我喝杯咖啡吧。