linux下游戏服务器的启动

来源:互联网 发布:04年总决赛科比数据 编辑:程序博客网 时间:2024/05/01 05:48

接上篇《linux下游戏服务器的搭建》。在启动我们的游戏服务器前,先要增加一些配置,用于各服务器进程的启动。我们的游戏服务器分为server,session,gateway,db,logger,center这几个服务器进程。这里需要配置一下ip,端口等连接信息。配置信息如下:

  1. session_cfg:   copy
  1. [2001] = {name = "session_myTest", loginAddr = '10.19.173.180:20023', dbAddr = '127.0.0.1:3010', gatePort = 2310, worldPort= 2510, gameiD = 'drj', appKey = 'i6nZ7DuAa2HUFVsNYoqrMJOxBc1IwS0W', logFile = "session_900"},  
  1. gateway_cfg:   c
  1. [1] = {name = "gateway_myTest", connectAddr = '123.59.131.127', loginAddr = '10.19.173.180:20025',sessionAddr = '127.0.0.1:2310', worldPort= 2210, logFile = "gateway_300900"},  
  1. dbx_cfg:   cop
  1. [400800] = {name = "myTest", dbAddr = '127.0.0.1:3010', config = 21, logFile = "dbx_400800"},  
  1. world_cfg:   copy
  1. [1] = {name = "myTest", sessionAddr = '127.0.0.1:2510', dbAddr = '127.0.0.1:3010',loggerAddr='127.0.0.1:4010', 
其中 loginAddr:内网登录ip(端口) connectAddr:外网连接ip  dbAddr:本地数据库连接ip.其中dbx_cfg中的config对应DBConfig.xml中的configid

<database databaseid = '1' configid = '21'>
        <baseinfor servername = '10.19.86.209' port = '3306' databasename = 'd4' databasenickname = 'd4'></baseinfor>
        <popedom username = 'root' password = 'Tcp123456' charset = 'utf8'></popedom>
        <asynqueue num = '4'></asynqueue>
        <retry retrylevel = '30' retryinternal = '2' retrymaxnum = '3' retryqueuemaxsize = '128'></retry>
        <throw throwlevel = '12' throwqueuemaxsize = '16384'></throw>
</database>

这个是用来连接数据库的。刚开始servername = '127.0.0.1“用的是本地ip,但发现游戏客户端登录时,请求数据库没返回,最后发现是因为mysql中没设置localhost的账户权限,导致用本地ip会连接不上,后面改成内网ip就可以登录了。这里关于localhost的权限设置可以看上一篇文章,mysql server的安装配置最好在服务器搭建时就弄好,不然后面会有点麻烦。启动服务器MakeFile文件配置如下:

_gate180:
        ./GameGateway_d -c 13 &


_session180:
        ./SessionServer_d -c 2001 &

_dbx80:
        ./DBAServer_d -c 400800 &

_world180:
        ./WorldFrame_d -c 13 &

_listen:
        ./ListenServer_d -c 1 &


_center:
        ./CenterServer_d -c 1 &


这里的参数2001对应session_cfg中的id,需要注意的是world跟gateway的参数跟id的关系是 id = 参数/10,这个在服务器代码中有特殊处理。另外需要配置数据库表server_status,设置worldID=1,startTime=2015-09-11 14:00:00(开服时间),realID=1。一个realId对应多个worldID,这跟我们的世界服务器架构有关,一个世界服务器进程包含了三个world,这个其实有点没那么实用。这下可以启动服务器了,启动后,客户端登录游戏发现session收不到消息,先查看下是否能telnet上。

1)telnet 123.59.131.127

telnet: connect to address123.59.131.127: No route to host

连不上,那就检查下防火墙是否开启

2)查看防火墙状态
chkconfig iptables --list

iptables        0:off   1:off   2:off   3:off   4:off   5:off   6:off

如果有on的说明是开启的,需要关闭。

3)清楚防火墙所有规则(关闭防火墙)

iptables -F

在telnet发现成功了,然后客户端再次登录,数据库还是没返回。最后发现是mysql没启动,去启动它。

# service mysqld stop

# service mysqld start


做完这些,发现客户端可以正常进入游戏了,这里就算完成了整个启动过程。

最后记录一下一些需要用到的命令:

mysql -h10.19.86.209 -uroot -p123456   登录制定ip的mysql数据库


启动listen server时没有权限  用  chmod 777 *


另外客户端loginScene.lua需要修改登录配置,找到searchServer函数,将以下代码

   self.serverInfo.servers["901"] = {real=900,status=1}  --worldID realID status为1
    self.suggestSever = 901  --worldID
    self.serverInfo.ips = {}
    self.serverInfo.ips["900"]="192.168.0.144"  --realID

改为

self.serverInfo.servers["1"] = {real=1,status=1}
    self.suggestSever = 1
    self.serverInfo.ips = {}
    self.serverInfo.ips["1"]="123.59.131.127"


0 0
原创粉丝点击