写点什么

白鹭游戏引擎网络棋牌搭建步骤

作者:北桥苏
  • 2023-05-12
    广东
  • 本文字数:2153 字

    阅读完需:约 7 分钟

前言:

​ 项目是一个游客登录型的棋牌联网游戏,前端是白鹭引擎,后端 PHP 开发。分为登录和获取基本信息的 Http 层和 websocket 通信的游戏层。后台需要有一个分布式网关服务器(php 游戏网关)。以下为了搭建更快捷,使用宝塔进行操作,前提已经通过宝塔安装完毕了 LNMP。

环境:

  1. CentOS7

  2. PHP7.3,至少要大于 5

  3. 宝塔

  4. Nginx

步骤:

  1. 下载完源码地址的源码,解压得到以下四个目录,分别的用途见标注。



\2. EgretWing 工具导入 client 中的代码,web 整个文件夹的代码放入服务器(我是本地使用 VM 搭的 centOS 虚拟机)。


\3. 宝塔中的使用的 PHP 安装 yaf 扩展,重启 PHP 后访问查看 phpinfo()可能找不到 yaf



\4. 通过宝塔的创建网站添加 web 中的代码,使得能通过域名请求到 web 目录下的 api.php 就行。主要是三个接口,分别返回登录信息,websocket 的地址和端口,图片代理等。



\5. 代码 client 文件中的代码修改”src/scene/Login.ts”的 onLoginTouch 方法中请求网络接口为上面 web 中配置的域名,”src/Main.ts”中的 initGame 方法同样修改网络请求地址为上面 web 配置的域名。接口分别是昵称和登录 token,另一个是 websocket 地址和端口。



\6. 下载上面的 Fooking 的源代码,并将代码放入服务器中,目录结构如下。



\7. 打开服务器命令面板,cd 进入 fooking 目录(以我的为例,名字可以自定义)。然后 make 进行编译。Src 目录中多出后缀为 0 的文件,面板也会显示编译结束。



\8. 打开 fooking 目录下的 router.lua 文件。PROT 可以自行定义,确定下了这个端口,我的是 8015。就需要在 centOS 防火墙中对其放行,宝塔是直接点击安全添加 8015 进行放行。



\9. 依然是同级目录,打开 config.lua 文件,端口就是游戏中 webscket 进行连接的端口。


主要配置的有路由服务器地址(上面 router 设置的端口和地址),后端服务器列表的“BACKEND_SERVER”,以及 fastcgi params,配置标注如下。



--监听IP和端口HOST = "0.0.0.0";PORT = 9005;
--守护进行--DAEMONIZE = 1;
--日志文件(为空则不输出日志, stdout-输出到标准输出上, 其它则按文件处理)LOG_FILE = "stdout";--直接屏幕打印--LOG_FILE = "/tmp/fooking-gateway.log";--输出到文件
--1: 仅error--2: error与info--3: 所有LOG_LEVEL = 3;
--是否路由服务器(0-否, 1-是)--如果是路由,ROUTER以下的配置将被忽略)ROUTER = 0;
--服务器IDSERVER_ID = 1;
--工作进程WORKER_NUM = 2;
--最大连接数MAX_CLIENT_NUM = 10000;
--缓冲区大小MAX_BUFF_SIZE = 4096;
--路由服务器ROUTER_HOST = "192.168.234.128";ROUTER_PORT = 8015;
--SSL配置--SSL = 1--SSL_CERT = "/tmp/cert.pem"--SSL_PKEY = "/tmp/pkey.pem"
--指定时间内连接没有数据包请求,将会踢掉连接(单位秒),为0不处理IDLE_TIME = 0;
--脚本SCRIPT_FILE = "../scripts/Websocket.lua";
--后端服务器列表BACKEND_CONNECT_TIMEOUT = 5;--连接超时时间(单位秒)BACKEND_READ_TIMEOUT = 10;--数据接收超时间(单位秒)BACKEND_KEEPALIVE = 10;--最大维持长连接数量BACKEND_SERVER = { ["unix:/tmp/php-cgi-73.sock"] = 5,--第一列是socket选项,第二列是权重(跟nginx的upstream差不多一个意思)};
--新连接是否通知(0-不通知, 1-通知)--请求头会有EVENT=1EVENT_CONNECT = 0;
--关闭连接是否通知(0-不通知, 1-通知)--请求头会有EVENT=2EVENT_CLOSE = 1;
--fastcgi paramsFASTCGI_PREFIX = "";--go下要使用HTTP_作为前缀,否则拿不了SESSIONID和EVENTFASTCGI_ROOT = "/www/wwwroot/san_zhang_pai/server/";--必须以/结尾FASTCGI_FILE = "server.php";FASTCGI_PARAMS = { ["SERVER_SOFTWARE"] = "fooking", ["SERVER_PROTOCOL"] = "HTTP/1.1", ["GATEWAY_INTERFACE"] = "CGI/1.1", ["REQUEST_METHOD"] = "POST", ["SCRIPT_FILENAME"] = FASTCGI_ROOT..FASTCGI_FILE, ["SCRIPT_NAME"] = FASTCGI_FILE, ["DOCUMENT_ROOT"] = FASTCGI_ROOT, ["SERVER_NAME"] = "server.yafgame.com/", ["QUERY_STRING"] = "a=10&b=20",};
复制代码



\10. 启动 router.lua。 Cd src,然后./fooking ../router.lua




\11. 查看 php-fpm 配置文件方法,命令输入, ps -ef | grep fpm。可以看到 php-fpm 的配置文件。



\12. 找到并打开 php-fpm.conf 文件,可以看到监听的通信方法以及通信的具体地址,还有 fpm 的错误日志存放地址。宝塔 Nginx 与 fpm 默认是以 unix socket 方法,如果 fpm 修改成了 tcp,那 nginx 也要修改。



\13. 查看 fpm.conf 后与 fooking 的 config 设置完毕后,就可以开始启动 config 了。Cd fooking, 然后./fooking ../config.lua。



如果出现 Can't found available backend server, Please check BACKEND_SERVER,多是因为 config 的后端配置填的通信方式与 fpm 的不一致。其他的就是 FASTCGI_ROOT 没填对地址。



\14. 最后打开 EgretWing 导入的 client 中的源码,点击调试,弹出游戏界面,登录后正常的话就会进入游戏界面了。




Fooking 分布式游戏服务器网关结构图--



\15. 启动的 config.lua 出现“stream_socket_client(): unable to connect to tcp://127.0.0.1:9010”时,修改 server 的“config”中的 router,IP 和端口换成 router.lua 中配置启动的地址和端口。



\16. 修改 server 的 redis 中的为自己安装的地址和端口,web 的 api/api/api/include/config.inc.php,修改 redis 地址和微信公众号 APPID 等地址。



用户头像

北桥苏

关注

公众号:ZERO开发 2023-05-08 加入

专注后端实战技术分享,不限于PHP,Python,JavaScript, Java等语言,致力于给猿友们提供有价值,有干货的内容。

评论

发布
暂无评论
白鹭游戏引擎网络棋牌搭建步骤_php_北桥苏_InfoQ写作社区