如何部署sqproxy服务(一)
作者
隔壁老韩
一位Squad游戏玩家
目前从事于游戏客户端开发,担任UE开发工程师
一、前言
近日有Squad服主找到我称,希望能够通过技术手段实现修改Squad服务器在游戏大厅列表中显示的信息
包括延迟、游戏人数、甚至于游戏内TPS等。
我从事于游戏客户端开发,对于此技术并不了解。随后其向我推荐了sqproxy并希望我帮忙研究一下部署方式。我研究了一下sqproxy,并成功使其运行起来。这里仅介绍sqproxy的部署方式,对于其是否能够修改状态信息、其运行原理、以及其中的重定向参数设置如何设置,我这里不做验证。
由于sqproxy是一个开源软件,并且中文互联网上近乎没有帮助文档,所以对sqproxy的部署过程做一个简单讲解。由于本人并非从事网络工程师,对于原理及技术用语一知半解,可能有些自造词,看官勿怪。
有空再去研究一下具体的参数配置表,届时我会将其介绍放在文章二中。先鸽了~~~
二、介绍
sqproxy是一个用来给某些包体响应自动重定向的工具
至少看起来是这样的,比如A2S包体
功能实现上看起来似乎是修改并缓存响应包体
不清楚,没时间看源码,有大佬可以给补充一下
github网址: https://github.com/sqproxy/sqproxy
1.环境
sqproxy仅能运行于Linux环境下
以下以阿里云下默认Centos为例
Python3.8.1
我一开始用的311没跑出来
需要gcc环境
2.准备工作
一台Linux机器,root权限
github上有作者对于其在非root环境下运行的方法介绍,这里不做赘述
三、开始
1.连接到目标服务器
我这里用的ssh,win10以上默认集成ssh,相对来说比较方便
2.跳转到
/usr/local/src
个人习惯,存到一个自己能找得到的地方就可以了
3.下载Python3.8.1包体
wget https://www.python.org/ftp/python/3.8.1/Python-3.8.1.tgz
阿里云Centos默认集成Py3.6,这个版本是不够的,需要自己下载高版本
4.解压Python3.8.1
tar -xzvf Python-3.8.1.tgz
5.进入解压目录
cd ./Python-3.8.1
6.生成
./configure --prefix=/usr/local/python3.8
后面的
--prefix=/usr/local/python3.8
指的是设定Python的安装路径
7.编译并安装
make && make install
8.将新下载的Python3.8.1指定为默认python3指向
ln /usr/local/python3.8/bin/python3 /usr/bin/python3
加环境变量,这一步可做可不做
若提示python3已经存在那么就
mv /usr/bin/python3 /usr/bin/python3.bak
然后再添加
9.将系统默认的pip3指向新下载的python3.8.1的pip3
ln /usr/local/python3.8/bin/pip3.8 /usr/bin/pip3
10.使用pip安装sqproxypip3
install source-query-proxy==2.1.2
这里一定是2.1.2版本的,找不到对应版本或者仅能找到0.15.0版本,说明你使用的Python版本低于3.7
如果提示你的pip版本过低,仅有8.1,说明使用的pip版本没有指向Python3.8
11.找到刚刚设置的Python3.8安装目录
cd /usr/local/python3.8/bin
这里运行
ll
应当可以看到一个文件叫sqproxy可以将其添加到环境变量以方便运行
ln ./sqproxy /usr/bin/sqproxy
下面的教程默认这里已经添加了环境变量
12.配置参数文件,sqproxy会从以下两个目录/etc/sqproxy/conf.d
./conf.d
中查找配置文件,具体参
数作用请参考作者的example,本人没有研究
参数文件一共四个,似乎都不可缺少
00-globals.yaml
01-dummy-game.yaml
02-hlds-game.yaml
dummy_hlds_entrypoint.py
具体设置参考官方GitHub
example/conf.d/
13.随后即可运行sqproxy
sqproxy run
也可以通过运行系统服务的方式启动,具体请参考官方GitHub
三、问题
部署过程中遇到的几个问题
-
缺少Ctype
pip install Cython
-
缺少openssl或者缺少zlib
wget http://www.openssl.org/source/openssl-3.0.8.tar.gz
如果提示无法验证
wget http://www.openssl.org/source/openssl-3.0.8.tar.gz --no-check-certificate
openssl安装与Python没有区别,只需要暴露出zlib库即可
./config --prefix=$HOME/openssl shared zlib
随后安装Python时添加参数
./configure --prefix=/usr/local/python3 --with-ssl
-
缺少libffi
yum install -y libffi-devel
-
缺少编译器
yum install -y gcc