[KBEngine] 云服务器搭建KBEngine v1.1.0与远程连接调试 —— 详细流程记录

《目录》

    • 说明
      •  11 声明
      •  12 服务器
      •  13 工具
    • 云服务器准备
      •  21 选购服务器
      •  22 实现windows端远程控制与管理云服务器
      •   221 Linux端安装ssh server并设置
      •   222 开启ssh的22端口
      •   223 在windows端登陆putty并连接
      •   224 在windows端登陆WinSCP并连接
      •  23 安装常用工具与开发环境
    • 编译KBEngine
      •  31 下载与解压源代码
      •   311 使用git克隆源码
      •  32 编译
      •   321 编译KBEngine源码
      •   322 安装Python
      •  33 编译错误的解决方法
      •   331 方案一
      •   332 方案二
    • 配置KBEngine
      •  41 搭建KBEngine开发环境
      •   411 设置环境变量
      •   412 配置数据库
      •  42 KBEngine配置文件
      •   421 配置文件
      •   422 添加云服务器安全组规则
    • 客户端配置与连接
      •  51 开启服务器
      •  52 客户端测试


1. 说明

 1.1 声明

  基于自己这两天搭建服务器时所遇到大量的坑,本博文仅作为这次搭建过程的记录,方便自己之后回头再看,不还原所遇到的问题,仅给出可行的解决方案(能运行就行);
  希望对于第一次在云上搭建自己的游戏服务器的同学能有所帮助,避免在众坑上花太多的时间,能够一次性搞定;如有更好的建议,欢迎交流;

 1.2 服务器

系统:CentOS6.9 (64位)
cpu:1GHz
ram:1GB
rom:40GB
带宽:1Mbps
KBEngine版本:1.1.0
MySQL版本:5.7

 1.3 工具

《windows》
Putty(远程连接服务器)、WinSCP(图形化SFTP客户端)
《Linux》
nano(用于文件编辑,类似于vim)、wget/axel/axel2(用于下载)、screen(用于把进程放到后台运行)、zip/unzip(压缩用具和解压工具)、sudo(让普通用户可以执行系统级命令)、Git(用于将clone GitHub上的代码)

2. 云服务器准备

 2.1 选购服务器

   上阿里云(华为/腾讯)购买云服务器ECS,低配如下:

[KBEngine] 云服务器搭建KBEngine v1.1.0与远程连接调试 —— 详细流程记录_第1张图片

   【实例】:这里可以更改你的实例名称,它会对应到系统中的名称;同时,注意这么一个ip地址,后面标注了(公),后面就要通过这个ip来访问这个服务器;点击实例的ID(蓝色字)进入“实例详情”;
[KBEngine] 云服务器搭建KBEngine v1.1.0与远程连接调试 —— 详细流程记录_第2张图片

   【实例详情】:点击(2)“更换系统”可以更换其他的系统,但要确定(1)“状态”是已停止的情况下;我这里的系统是CentOS6.9 64位,可以点击(3)处“更多”,重置一下密码,这里进入远程连接时需要用到;然后点击(3)“远程连接“进入远程终端,注意,必需启动了服务器才能远程连接,观察(1)处是否启动;
[KBEngine] 云服务器搭建KBEngine v1.1.0与远程连接调试 —— 详细流程记录_第3张图片

 2.2 实现windows端远程控制与管理云服务器

  2.2.1 Linux端安装ssh server并设置

   【远程终端】:账户名 root ,然后输入密码,密码是看不见的;

[KBEngine] 云服务器搭建KBEngine v1.1.0与远程连接调试 —— 详细流程记录_第4张图片

   依次输入:

// 更新源
yum update

// 安装ssh server(有可能已经安装了)
yum install openssh-server

// 开机启动ssh server(否则把on改为off)
chkconfig sshd on

//rpm -qa | grep ssh 可以查询是否安装了
//netstat -antp | grep ssh 查询是否开启了22端口

   遇到这个直接输入y,回车;

[KBEngine] 云服务器搭建KBEngine v1.1.0与远程连接调试 —— 详细流程记录_第5张图片

   更改sshd配置,否则windows端上的putty无法连接到该服务器,如:  

// 编辑sshd_config文件
vim /etc/ssh/sshd_config
按下键,拉到最低端,然后按字母键"i",进入insert状态,在PasswordAuthentication no前面加上#号,如下图所示;
然后按ESC键退出编辑模式,然后按Shift+“:”号键,进入指令模式,输入wq,回车;

[KBEngine] 云服务器搭建KBEngine v1.1.0与远程连接调试 —— 详细流程记录_第6张图片

[KBEngine] 云服务器搭建KBEngine v1.1.0与远程连接调试 —— 详细流程记录_第7张图片

// 配置完后,一定要重启sshd
service sshd restart

  2.2.2 开启ssh的22端口

   返回【实例详情】:点击“本实例安全组”,进入【本实例安全组】然后点击“配置规则”,进入“安全组规则”,点击“添加安全组规则”,如下图设置;


[KBEngine] 云服务器搭建KBEngine v1.1.0与远程连接调试 —— 详细流程记录_第8张图片

[KBEngine] 云服务器搭建KBEngine v1.1.0与远程连接调试 —— 详细流程记录_第9张图片

  2.2.3 在windows端登陆putty并连接

   【Windows端】本系统是win10,可用;

下载PuTTY:https://the.earth.li/~sgtatham/putty/latest/w64/putty.exe

   启动Putty,并输入相关参数,这里的ip就是公网ip了(上文有说)


[KBEngine] 云服务器搭建KBEngine v1.1.0与远程连接调试 —— 详细流程记录_第10张图片

[KBEngine] 云服务器搭建KBEngine v1.1.0与远程连接调试 —— 详细流程记录_第11张图片

之后就可以使用这个来替代阿里云的远程连接了;

  2.2.4 在windows端登陆WinSCP并连接

下载WinSCP:https://winscp.net/download/WinSCP-5.11.3-Setup.exe

   启动WinSCP,输入参数,如下图:


[KBEngine] 云服务器搭建KBEngine v1.1.0与远程连接调试 —— 详细流程记录_第12张图片

[KBEngine] 云服务器搭建KBEngine v1.1.0与远程连接调试 —— 详细流程记录_第13张图片

之后从本地windows端传输到服务器的文件,就可以通过这个来完成了。也可以对服务器的文件进行很方便的管理;

 2.3 安装常用工具与开发环境

   按顺序输入:

// 安装一些工具
yum install nano wget axel screen zip unzip sudo git

// 更改系统语言
// (将LANG=en_US.UTF-8改成LANG=zh_CN.UTF-8)
// (按ctrl+x退出,按y确定保存,按回车;)
nano /etc/sysconfig/i18n

// 重启系统
// (重启会断开putty,需要重新连接)
shutdown -r now

// 安装开发环境
// (gcc 和 perl 可能已安装,不影响)
yum install gcc glib gcc-c++ esound-devel ncurses-devel perl  zlib-devel openssl-devel mysql-server mysql-devel

[KBEngine] 云服务器搭建KBEngine v1.1.0与远程连接调试 —— 详细流程记录_第14张图片
[KBEngine] 云服务器搭建KBEngine v1.1.0与远程连接调试 —— 详细流程记录_第15张图片

3. 编译KBEngine

 3.1 下载与解压源代码

  3.1.1 使用git克隆源码

   输入如下:

// 通过 git clone https:/XXXX
//(不要直接通过Windows把代码传给Linux,编译有可能会出错)
git clone https://github.com/kbengine/kbengine

   找到目标代码,获取该网址即可;

[KBEngine] 云服务器搭建KBEngine v1.1.0与远程连接调试 —— 详细流程记录_第16张图片
[KBEngine] 云服务器搭建KBEngine v1.1.0与远程连接调试 —— 详细流程记录_第17张图片
[KBEngine] 云服务器搭建KBEngine v1.1.0与远程连接调试 —— 详细流程记录_第18张图片
[KBEngine] 云服务器搭建KBEngine v1.1.0与远程连接调试 —— 详细流程记录_第19张图片

   下载完后,可以在WinSCP中查找到;
[KBEngine] 云服务器搭建KBEngine v1.1.0与远程连接调试 —— 详细流程记录_第20张图片

 3.2 编译

  3.2.1 编译KBEngine源码

// 重启系统
shutdown -r -now

// 进入kbengine源码文件
cd kbengine/kbe/src

// 改变文件的权限
chmod -R 755 .

// 使用make编译
make

[KBEngine] 云服务器搭建KBEngine v1.1.0与远程连接调试 —— 详细流程记录_第21张图片

  3.2.2 安装Python

// 进入python源码文件
cd kbengine/kbe/src/lib/python
./configure
make
make install

 3.3 编译错误的解决方法

  3.3.1 方案一

    重新下载源码包,地址为:https://github.com/kbengine/kbengine/releases/latest,
    可以下载zip或tar.gz任意一个压缩包,并删除从github上clone下来的包,使用刚刚下载的源码进行编译;

// 这里下载的是tar.gz这个包
// (必须要安装了wget这个工具,上文有)
wget https://github.com/kbengine/kbengine/archive/v1.1.0.tar.gz

// 进入root文件夹
cd ~
// 删除之前从GitHub上clone下来的源码
rm -rf kbengine

// 解压刚刚下载好的压缩包
tar -zxvf v1.1.0.tar.gz

// 将解压出来的包重命名为kbengine
// 解压出来的包名为kbengine-1.1.0
mv kbengine-1.1.0 kbengine

// 重启系统
shutdown -r now

// 调到源代码文件处,并编译
cd kbengine/kbe/src
chmod -R 755 .
make

[KBEngine] 云服务器搭建KBEngine v1.1.0与远程连接调试 —— 详细流程记录_第22张图片

  3.3.2 方案二

    如果还是失败,则重装系统,CentOS 6.9,然后下载新的源码压缩包,进行编译;如下操作:

// 重装系统后
// (重装系统的方法上文已提及)

// 安装开发环境 与 工具
yum update
yum install wget
yum install openssl-devel
yum install mysql-server
yum install mysql-devel
yum install gcc
yum install gcc-c++
yum install glib

// 下载源码压缩包
wget https://github.com/kbengine/kbengine/archive/v1.1.0.tar.gz

// 重启系统
shutdown -r -now

// 解压刚刚下载好的压缩包
tar -zxvf v1.1.0.tar.gz

// 将解压出来的包重命名为kbengine
// 解压出来的包名应该为kbengine-1.1.0
mv kbengine-1.1.0 kbengine

// 跳到源代码文件处,并编译
cd kbengine/kbe/src
chmod -R 755 .
make

// 编译完成后,之后的操作,如上文的操作补充上即可

4. 配置KBEngine

 4.1 搭建KBEngine开发环境

  4.1.1 设置环境变量

// 打开.bashrc文件
nano ~/.bashrc

// 在文后添加如下代码
ulimit -c unlimited
export KBE_ROOT=~/kbengine/
export KBE_RES_PATH=$KBE_ROOT/kbe/res/:$KBE_ROOT/assets/:$KBE_ROOT/assets/scripts/:$KBE_ROOT/assets/res/
export KBE_BIN_PATH=$KBE_ROOT/kbe/bin/server/

// 按ctrl + x保存, 然后输入Y确认,按回车键退出;

// 使环境变量生效
source ~/.bashrc

[KBEngine] 云服务器搭建KBEngine v1.1.0与远程连接调试 —— 详细流程记录_第23张图片

  4.1.2 配置数据库

// 设定为开机自动启动
chkconfig mysqld on

// 启动mysql服务
/etc/init.d/mysqld start

// 检查是否启动成功
/etc/init.d/mysqld status
// mysqld (pid  9234) is running... 表示已经运行

// 进入mysql
mysql -uroot -p
// 会请求输入密码,root用户密码默认为空,直接回车即可;
// **以上的所有指令输入都是 [root@username ~]# 的形式,
// 而接下来进入mysql后,则是 mysql> 的形式输入;

// 创建数据库,假设是数据库名为”kbe”
create database kbe;
// 删除匿名用户
// (一些系统中不删除匿名用户会出现使用kbe账号用本地IP登录mysql被拒绝访问)
mysql> use mysql 
mysql> delete from user where user=''; 
mysql> FLUSH PRIVILEGES;

// 创建数据库用户,用户名是”kbe”,密码假设是”pwd123456”
mysql> grant all privileges on *.* to kbe@'%' identified by 'pwd123456';
mysql> grant select,insert,update,delete,create,drop on *.* to kbe@'%' identified by 'pwd123456';
mysql> FLUSH PRIVILEGES;

// 然后退出mysql
quit

// 再以kbe账户登录试试,看是否能够登陆
mysql -ukbe -ppwd123456 -hlocalhost -P3306

[KBEngine] 云服务器搭建KBEngine v1.1.0与远程连接调试 —— 详细流程记录_第24张图片

 4.2 KBEngine配置文件

  4.2.1 配置文件

   windows端创建文件kbengine.xml,然后打开,复制如下内容:

<root>
    
    <gameUpdateHertz> 10 gameUpdateHertz>

    
    <bitsPerSecondToClient> 20000 bitsPerSecondToClient>

    
    <packetAlwaysContainLength> 0 packetAlwaysContainLength>

    
    <debugEntity> 0 debugEntity>

    <publish>
        
        <state> 0 state>

        
        <script_version> 0.1.0 script_version>
    publish>

    <channelCommon> 
        
        <timeout> 
            <internal> 60.0 internal>
            <external> 60.0 external>
        timeout>

        
        <readBufferSize> 
            <internal>  16777216    internal> 
            <external>  0           external> 
        readBufferSize>
        <writeBufferSize> 
            <internal>  16777216    internal> 
            <external>  0           external> 
        writeBufferSize>

        
        <encrypt_type> 1 encrypt_type>
    channelCommon> 

    
    <shutdown_time> 30.0 shutdown_time>

    
    <shutdown_waittick> 1.0 shutdown_waittick>

    
    <callback_timeout> 300.0 callback_timeout>

    
    <email_service_config>server/email_service.xmlemail_service_config>

    <interfaces>
        
        <entryScriptFile> kbemain entryScriptFile>

        
        <host> localhost host>
        <port> 30099    port>

        
        <orders_timeout> 3600   orders_timeout>


        
        <SOMAXCONN> 128 SOMAXCONN>
    interfaces>

    <dbmgr>
        
        <entryScriptFile> kbemain entryScriptFile>

        
        <debug> false debug>

        
        <allowEmptyDigest> false allowEmptyDigest> 

        
        <internalInterface>  internalInterface>

        
        <InterfacesServiceAddr>
            
            <enable> true       enable>
            <host>   localhost  host>
            <port>   30099      port>
        InterfacesServiceAddr>

        
        <databaseInterfaces>
            
            <default>
                
                <pure> false pure> 
                
                <type> mysql type>  
                
                <host> localhost host> 
                <port> 3306 port>  

                
                <auth>  
                    <username> kbe username> 
                    <password> pwd123456 password>  
                    
                    <encrypt> true encrypt>
                auth>

                
                <databaseName> kbe databaseName>  

                
                <numConnections> 5 numConnections> 

                
                <unicodeString>
                    <characterSet> utf8 characterSet> 
                    <collation> utf8_bin collation>  
                unicodeString>
            default>
        databaseInterfaces>

        
        <account_system>
            
            <accountEntityScriptType> Account accountEntityScriptType>

            
            <accountDefaultFlags> 0 accountDefaultFlags> 

            
            <accountDefaultDeadline> 0 accountDefaultDeadline> 

            
            <account_resetPassword>
                
                <enable> false enable>
            account_resetPassword>

            
            <account_registration> 
                
                <enable> true enable>
                
                <loginAutoCreate> true loginAutoCreate>
            account_registration>
        account_system> 

        
        <ids>
            <increasing_range> 2000 increasing_range> 
        ids>
    dbmgr>

    <cellapp>
        
        <entryScriptFile> kbemain entryScriptFile>

        
        <defaultAoIRadius>          
            <radius> 80.0 radius>
            <hysteresisArea> 5.0 hysteresisArea>
        defaultAoIRadius>

        
        <aliasEntityID> true aliasEntityID>

        
        <entitydefAliasID>trueentitydefAliasID>

        
        <internalInterface>  internalInterface>

        
        <profiles>
            
            <cprofile> false cprofile>
            <pyprofile> false pyprofile>
            <eventprofile> false eventprofile>
            <networkprofile> false networkprofile>
        profiles>

        
        <loadSmoothingBias> 0.01 loadSmoothingBias>

        <ghostDistance> 500.0 ghostDistance>
        <ghostingMaxPerCheck> 64 ghostingMaxPerCheck> 

        
        <ghostUpdateHertz> 30 ghostUpdateHertz> 

        
        <coordinate_system> 
            <enable> true enable>

            
            <rangemgr_y> false rangemgr_y>

            
            <entity_posdir_additional_updates> 2 entity_posdir_additional_updates>
        coordinate_system> 

        
        <shutdown>
            
            <perSecsDestroyEntitySize> 100 perSecsDestroyEntitySize>
        shutdown>

        
        <witness>
            
            <timeout> 15 timeout> 
        witness>
    cellapp>

    <baseapp>
        
        <entryScriptFile> kbemain entryScriptFile>

        
        <internalInterface>  internalInterface>
        <externalInterface>  externalInterface> 

        
        <externalAddress> 120.78.128.135 externalAddress> 

        
        <externalPorts_min> 20015 externalPorts_min> 
        <externalPorts_max> 20019 externalPorts_max>   

        
        <archivePeriod> 300 archivePeriod> 

        
        <backupPeriod> 300 backupPeriod> 

        
        <backUpUndefinedProperties> 0 backUpUndefinedProperties> 

        
        <loadSmoothingBias> 0.01 loadSmoothingBias>

        
        <downloadStreaming>
            <bitsPerSecondTotal> 1000000 bitsPerSecondTotal> 
            <bitsPerSecondPerClient> 100000 bitsPerSecondPerClient> 
        downloadStreaming>

        
        <ids>
            <criticallyLowSize> 1000 criticallyLowSize> 
        ids>

        
        <entityRestoreSize> 32 entityRestoreSize>

        
        <profiles>
            
            <cprofile> false cprofile>
            <pyprofile> false pyprofile>
            <eventprofile> false eventprofile>
            <networkprofile> false networkprofile>
        profiles>

        
        <SOMAXCONN> 128 SOMAXCONN> 

        
        <shutdown>
            
            <perSecsDestroyEntitySize> 100 perSecsDestroyEntitySize>
        shutdown>
    baseapp>

    <loginapp>
        
        <entryScriptFile> kbemain entryScriptFile>

        
        <internalInterface>  internalInterface>
        <externalInterface>  externalInterface> 

        
        <externalAddress> 120.78.128.135 externalAddress> 

        
        <externalPorts_min> 20013 externalPorts_min> 
        <externalPorts_max> 0 externalPorts_max> 

        
        <encrypt_login> 2 encrypt_login>

        
        <SOMAXCONN> 128 SOMAXCONN>

        
        <account_type> 3 account_type>

        
        <http_cbhost> localhost http_cbhost>
        <http_cbport> 21103 http_cbport>
    loginapp>     

    <machine>
        
        <externalPorts_min> 20099 externalPorts_min> 
        <externalPorts_max> 0 externalPorts_max> 

        
        <addresses>
            
            
        addresses>
    machine>
root>

注意:
baseappp->externalAddress 的ip地址为服务器的公网地址;
loginapp->externalAddress 的ip地址为服务器的公网地址;
将kbengine.xml拉入服务器的$KBE_ROOT/assets/res/server文件夹中,当启动kbe服务器时,会自动加载该配置文件;可以使用WinSCP将其拉入指定目录中;

[KBEngine] 云服务器搭建KBEngine v1.1.0与远程连接调试 —— 详细流程记录_第25张图片

  4.2.2 添加云服务器安全组规则

   如下图: (上文有说明)

[KBEngine] 云服务器搭建KBEngine v1.1.0与远程连接调试 —— 详细流程记录_第26张图片
[KBEngine] 云服务器搭建KBEngine v1.1.0与远程连接调试 —— 详细流程记录_第27张图片

5. 客户端配置与连接

 5.1 开启服务器

// 进入assets目录
cd $KBE_ROOT
cd assets

// sh 启动服务器(关闭服务器,则sh kill_server.sh)
sh start_server.sh
// 一般来说,不报错即成功

// 查看是否有9个kbengine进程
ps -aux | grep $KBE_ROOT

[KBEngine] 云服务器搭建KBEngine v1.1.0与远程连接调试 —— 详细流程记录_第28张图片

 5.2 客户端测试

服务器的连接ip是服务器的公网ip

[KBEngine] 云服务器搭建KBEngine v1.1.0与远程连接调试 —— 详细流程记录_第29张图片

[KBEngine] 云服务器搭建KBEngine v1.1.0与远程连接调试 —— 详细流程记录_第30张图片

刚刚在客户端中登陆且自动注册了账号,可以在数据库中查到该账号信息;

[KBEngine] 云服务器搭建KBEngine v1.1.0与远程连接调试 —— 详细流程记录_第31张图片

你可能感兴趣的:(Unity3d)