On this page... (hide)
其实编译 Servatrice 服务器挺简单的,只是官方没专门写这部分的文档。基本上可以完全参考 Cockatrice 客户端的编译文档 Compiling Cockatrice (Linux) 。
- 只要在 cmake 步骤时注意加上 -DWITH_SERVER=1 参数就行,这样服务器端就会随着客户端一起完成编译(服务器端似乎不能独立完成编译)。
- 再就是注意编译环境的准备,提前安装必要的类库就行,其中最重要的是 libqt5sql5-mysql 和 libmysqlclient-dev ,因为服务器端的大量高级功能都依赖 MySQL 服务。
- 最后根据 Setting up Servatrice 调整一下配置文件设置就差不多了。
1. 在 Debian Stable 下安装 Servatrice 的完整过程
源代码获取及目录准备:
- 从 https://github.com/Cockatrice/Cockatrice/releases 下载最新版本的源代码压缩包,并解压。
- 进入解压出来的目录,执行以下代码
mkdir build
cd build
编译环境准备:
- 基本编译环境和类库依赖:
apt-get install git build-essential g++ cmake \
libprotobuf-dev protobuf-compiler \
qt5-default qttools5-dev qttools5-dev-tools \
qtmultimedia5-dev libqt5multimedia5-plugins libqt5svg5-dev libqt5sql5-mysql - 补充 MySQL 连接类库:
apt-get install libmysqlclient-dev
- 升级 cmake 版本(Servatrice 要求 cmake 版本大于 3.10,Stable 环境不满足要求,所以得把 Testing 环境的 cmake 弄进来):
- 在文件 /etc/apt/sources.list 最后加入如下两行:
deb http://ftp.us.debian.org/debian/ stretch main contrib
deb-src http://ftp.us.debian.org/debian/ stretch main contrib - 更新 apt-get 依赖树:
apt-get update
- 重新安装 cmake 新版本:
apt-get install cmake
- 删除刚才在 /etc/apt/sources.list 添加的两行,更新依赖树回到标准的 Stable 版本,以防其他软件包的版本受到污染。
apt-get update
- 在文件 /etc/apt/sources.list 最后加入如下两行:
开始编译软件:
- 这时已经在刚才建立的 build 目录中了。
- 制作同时包含客户端和服务器端的软件包:
cmake .. -DWITH_SERVER=1
make package - 编译完成得到一个 deb 格式文件,安装它:
dpkg -i Cockatrice*.deb
- 执行 servatrice 指令,已经可以得到一个默认配置的匿名鸡蛇服务器端运行在 4747 端口了。
调整配置文件设置:
- 使用源代码自带的参考配置文件作为调整基础:
cp /usr/share/servatrice/servatrice.ini.example /etc/servatrice.ini
- 参考 Setting up Servatrice 文档,启用用户注册、游戏录像保存等功能。
- 指定以新的配置文件来启动服务:
servatrice --config /etc/servatrice.ini
2. 利用 Supervisor 配置 Servatrice 自动启动
更多详细操作,参考 Supervisor 使用笔记 。
- 所使用的 /etc/supervisor/conf.d/servatrice.conf 文件,内容如下:
[program:servatrice]
command=servatrice --config /etc/servatrice.ini
autorestart=true
user=nobody - 在 /etc/default/supervisor 最后要加一行:
ulimit -n 51200
3. 其他可以考虑调整的
- 配置一下各种定时维护脚本,比如定期删除历史数据,以维持 MySQL 数据库在体积比较精简的状态。(脚本在 cockatrice 源代码中能找到)
- 删除 gcc 包和 cmake 包,以避免服务器万一被黑时,黑客能比较容易地编译自己的工具包。
apt-get remove gcc make
apt-get auto remove