Centos部署KBengine

4 篇文章 0 订阅
2 篇文章 0 订阅

Centos部署KBengine

安装Mysql5.7

建议只使用5.7版本,其他版本不建议使用。

添加仓库

sudo rpm -ivh https://dev.mysql.com/get/mysql57-community-release-el7-11.noarch.rpm

确认

sudo yum repolist all | grep mysql | grep enabled

安装

sudo yum -y install mysql-community-server

如果出现这个

The GPG keys listed for the "MySQL 5.7 Community Server" repository are already installed but they are not correct for this package.
Check that the correct key URLs are configured for this repository.


 Failing package is: mysql-community-common-5.7.42-1.el7.x86_64
 GPG Keys are configured as: file:///etc/pki/rpm-gpg/RPM-GPG-KEY-mysql

用这个修复

rpm --import https://repo.mysql.com/RPM-GPG-KEY-mysql-2022

然后从新安装
启动

sudo systemctl start mysqld

设置系统启动时自动启动

sudo systemctl enable mysqld

查看启动状态

sudo systemctl status mysqld

CentOS上的root默认密码可以在文件/var/log/mysqld.log找到,通过下面命令可以打印出来

cat /var/log/mysqld.log | grep -i 'temporary password'

执行下面命令进行安全设置,这个命令会进行设置root密码设置,移除匿名用户,禁止root用户远程连接等

mysql_secure_installation

第一步输入密码,用刚才查到的密码
第二步输入新密码,注意强度
第三步移除匿名用户,回答Y
第四允许远程登录,这个可以后面改。
第五测试数据库,点Y

修改my.cnf

vim /etc/my.cnf

设置数据库编码为utf8
在[mysqld],[client],[mysql]节点下添加编码设置

[client]
default-character-set=utf8

[mysql]
default-character-set=utf8

[mysqld]
collation-server = utf8_unicode_ci
init-connect='SET NAMES utf8'
character-set-server = utf8

如果需要更改保存位置,可以修改datadir的路径

# For advice on how to change settings please see
# http://dev.mysql.com/doc/refman/5.7/en/server-configuration-defaults.html
[client]
default-character-set=utf8
socket=/mnt/mysql/mysql_data/mysql/mysql.sock

[mysql]
default-character-set=utf8

[mysqld]
collation-server = utf8_unicode_ci
init-connect='SET NAMES utf8'
character-set-server = utf8
#
# Remove leading # and set to the amount of RAM for the most important data
# cache in MySQL. Start at 70% of total RAM for dedicated server, else 10%.
# innodb_buffer_pool_size = 128M
#
# Remove leading # to turn on a very important data integrity option: logging
# changes to the binary log between backups.
# log_bin
#
# Remove leading # to set options mainly useful for reporting servers.
# The server defaults are faster for transactions and fast SELECTs.
# Adjust sizes as needed, experiment to find the optimal values.
# join_buffer_size = 128M
# sort_buffer_size = 2M
# read_rnd_buffer_size = 2M
#datadir=/var/lib/mysql
#socket=/var/lib/mysql/mysql.sock
datadir=/mnt/mysql/mysql_data/mysql
socket=/mnt/mysql/mysql_data/mysql/mysql.sock



# Disabling symbolic-links is recommended to prevent assorted security risks
symbolic-links=0

log-error=/var/log/mysqld.log
pid-file=/var/run/mysqld/mysqld.pid



重启Mysql即可

systemctl restart mysqld

如果要设置root远程登录可以:

mysql -u root -p
use mysql
GRANT ALL PRIVILEGES ON *.* TO 'root'@'%' IDENTIFIED BY '你的密码!!' WITH GRANT OPTION;


mysql> FLUSH PRIVILEGES;

执行如下语句,如果能成功连接上就证明远程登录可用,注意把密码和IP换成你实际的密码和IP。

[root@localhost ~]# mysql -uroot -p密码 -h 192.168.170.128
技巧

查询数据库安装位置可以用 where mysql

添加Centos用户

配置用户
添加kbe1用户

adduser kbe1
passwd kbe1

密码设置:kbeuser1234567
设置uid,同组游戏服设置相同的uid
之后我们就可以使用这个密码来登录linux了。

usermod -u 101 kbe1

配置KBEngine

上传kbe引擎
解压

tar -zxvf kbengine-2.5.12.tar.gz  -C /mnt

把kbengine-2.5.12目录改成server
进入server目录
修改vim .bashrc

vim /mnt/server/.bashrc

放入如下内容

ulimit -c unlimited
export KBE_ROOT=/mnt/server/
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/

生效

source /mnt/server/.bashrc

添加数据库用户:

grant all privileges on . to kbe1@'%' identified by 'Pd123456';
grant select,insert,update,delete,create,drop on . to kbe1@'%' identified by 'Pd123456';
FLUSH PRIVILEGES;
set password for kbe1 = password('Pd123456'); 
quit;

测试是否可以连接可以用下面的语法

mysql -ukbe1 -p'Pd123456 -hlocalhost -P3306

优化Centos网络

用引擎自带的py脚本优化
kbe\tools\server\linux\socket_optimization.sh

服务端脚本

把最新代码(scripts)从assets拷贝到assets-server
修改游戏配置
asserts-server/res/server/kbengine.xml

            <externalAddress> 你的IP地址 </externalAddress>                                                        <!-- Type: String -->
            <!-- 自动备份的时间(秒)
                    (Automatic backup time period(secs)) 
            -->
            <backupPeriod> 500 </backupPeriod>

    </baseapp>
    <loginapp>
            <externalAddress> 你的IP地址 </externalAddress>                                                        <!-- Type: String -->
    
    </loginapp>

还有数据库部分的用户kbe1和密码
还要批量修改kbe引擎目录配表kbe\res\server\kbengine_defaults.xml,更改其他pwd123456的默认密码为用户密码。

编译引擎

查看openssl version -a,是否安装, 如果没有自行安装
如果没有gcc,需要安装

yum -y install gcc
yum -y install gcc-c++

安装auto

yum install autoconf

安装automake

yum install automake

安装libtool

yum install libtool

安装mysql-devel

yum install mysql-devel

安装zlib-devel

yum install zlib-devel

进入引擎的src目录

cd /mnt/server/kbe/src

chmod -R 755 .

开始编译

make

注意:

1: 如果使用了其他版本的编译器最好重编译openssl、log4cxx与其他(kbengine/kbe/src/libs/*a.)。
2: mysql_config在某些操作系统版本上可能不是这个路径地址 /usr/bin/mysql_config
你可以手动修改kbengine/kbe/src/build/common.mak其中MYSQL_CONFIG_PATH=/usr/bin/mysql_config。
3: 在Linux上编译之后可能会出现Python解释器无法初始化而导致无法启动服务端的问题 (这是一个Python的bug,参看:http://bugs.python.org/issue11320)
你可以执行如下命令解决这个问题

[root @ localhost ~] cd kbengine/src/lib/python
[root @ localhost ~] ./configure
[root @ localhost ~] make
[root @ localhost ~] make install

开服的sh脚本,首行添加

cd /mnt/server/assets

开服请使用kbe1用户开服,另外使用xshell方便快捷,可以编辑按钮执行命令。
开服指令

sh /mnt/server/assets/start_server.sh

关服指令

sh /mnt/server/assets/safe_kill.sh

查询指令

python /mnt/server/kbe/tools/server/pycluster/cluster_controller.py

杀死服务

sh /mnt/server/assets/kill_server.sh

技巧

查看某个端口谁使用 netstat -alnp |grep 20005

LOG4配置
正式开服后。log太大,可以修改kbe/res/server/log4xx_properties_defaults/baseapp等
把log4j.rootLogger=debug, R改为更高级的log4j.rootLogger=WARN, R

部署完毕后,要把目录权限给kbe,之后的维护最好使用kbe用户来操作,防止kbe没文件读写权限。

对于配置文件UDP设置,我们可以增大BUF的大小到512(默认128),根据自己的需求。

			<readPacketsQueueSize>
				<internal>				1024		</internal>
				<external>				512			</external>
			</readPacketsQueueSize>

			<!-- Equivalent to TCP SND_BU, unit is the number of UDP-packages -->
			<writePacketsQueueSize>
				<internal>				1024		</internal>
				<external>				512			</external>
			</writePacketsQueueSize>

windowOverflow的大小也可以增加receive的bytes/external

常见错误

防火墙错误

machine-1: [ERROR]: BundleBroadcast::receive: failed! It can be caused by the firewall, the broadcastaddr, etc.Maybe broadcastaddr is not a LAN ADDR, or the Machine process is not running.
   machine-1: [ERROR]: Machine::findBroadcastInterface: Broadcast discovery [0.0.0.0] not a valid interface. available interfaces:	[127.0.0.1, 172.31.126.28, ]
   machine-1: [ERROR]: Machine::initNetwork: Failed to determine default broadcast interface. Make sure that your broadcast route is set correctly. e.g. /sbin/ip route add broadcast 255.255.255.255 dev eth0, eth0 is internalInterface!
   machine-1: [ERROR]: app::initialize(): initialization failed!

出现这个可能是防火墙,你可以关闭

systemctl stop firewalld
systemctl disable firewalld

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值