用户登录  | 
首 页技术文章软件发布广告价格
当前位置:传奇游戏服务端下载站传奇站长论坛资源网站程序技术文章文章资讯游戏架设教程征途架设教程

征途服务端安装全教程(linux版)

减小字体 增大字体 作者:佚名  来源:本站整理  发布时间:2014-10-04 11:53:56

一、硬件的安装
1、保证风扇正常转动。
2、保证各个提示灯是否正常。
3、开机察看有无报警情况。
4、开机察看能否正常启动(不插鼠标键盘的情况下)

二、系统的安装
1、 安装RHEL 4.1
2、 选择自动分区。
3、 分别给2块网卡配置ip,方便以后配置,其中eth0配内网ip,eth1配外网ip。
4、 不启用。
5、 增加中文语言包。
6、 选择软件包时,只选择开发包.

三、系统的简单设置
1、的简单设置:
vi /etc/rc.d/forward
内容:(例子)
#!/bin/bash
echo 1 >/proc/sys/net/ipv4/ip_forward
if [ -e /proc/sys/net/ipv4/tcp_ecn ]
then
echo 0 > /proc/sys/net/ipv4/tcp_ecn
fi
/sbin/iptables -F
/sbin/iptables -F -t nat
/sbin/depmod -a
/sbin/modprobe ip_tables
/sbin/modprobe ip_conntrack
/sbin/modprobe ip_nat_ftp
/sbin/modprobe ip_conntrack_ftp
/sbin/iptables -A INPUT -i  lo -j ACCEPT
/sbin/iptables -A INPUT -i  eth0 -j ACCEPT
/sbin/iptables -A INPUT -m state --state ESTABLISHED,RELATED -j ACCEPT
#/sbin/iptables -A INPUT -i eth0 -p tcp -j REJECT --reject-with tcp-reset
/sbin/iptables -A INPUT -i eth0 -p udp -j REJECT --reject-with icmp-port-unreachable

#sshd
/sbin/iptables -A INPUT -s 218.80.198.234 -p tcp -m state --state NEW -m tcp --dport 22 -j ACCEPT
/sbin/iptables -A INPUT -s 218.80.198.250 -p tcp -m state --state NEW -m tcp --dport 22 -j ACCEPT
/sbin/iptables -A INPUT -s 210.22.188.21 -p tcp -m state --state NEW -m tcp --dport 22 -j ACCEPT

#ftp server
#/sbin/iptables -A INPUT -p tcp -m state --state NEW -m tcp --dport 21 -j ACCEPT

#game server
/sbin/iptables -A INPUT  -p tcp -m state --state NEW -m tcp --dport 6020 -j ACCEPT

#db server
/sbin/iptables -t nat -A PREROUTING -s 218.80.198.234  -d 203.110.165.30 -p tcp --dport 3306 -j DNAT --to 192.168.102.158:3306
/sbin/iptables -t nat -A PREROUTING -s 218.80.198.234  -d 203.110.165.30 -p tcp --dport 3307 -j DNAT --to 192.168.102.159:3306

/sbin/iptables -P INPUT DROP

/sbin/iptables -t nat -A POSTROUTING -o eth1 -s 192.168.102.0/24 -j MASQUERADE
保存后退出。
chmod 744 /etc/rc.d/forward
然后运行脚本,以后根据需求修改脚本。

再vi /etc/rc.d/only_forward
#!/bin/bash
echo 1 >/proc/sys/net/ipv4/ip_forward
if [ -e /proc/sys/net/ipv4/tcp_ecn ]
then
echo 0 > /proc/sys/net/ipv4/tcp_ecn
fi
/sbin/iptables -F
/sbin/iptables -F -t nat
/sbin/depmod -a
/sbin/modprobe ip_tables
/sbin/modprobe ip_conntrack
/sbin/modprobe ip_nat_ftp
/sbin/modprobe ip_conntrack_ftp
/sbin/iptables -A INPUT -i  lo -j ACCEPT
/sbin/iptables -A INPUT -i  eth0 -j ACCEPT
/sbin/iptables -A INPUT -m state --state ESTABLISHED,RELATED -j ACCEPT
#/sbin/iptables -A INPUT -i eth0 -p tcp -j REJECT --reject-with tcp-reset
/sbin/iptables -A INPUT -i eth0 -p udp -j REJECT --reject-with icmp-port-unreachable


#sshd
/sbin/iptables -A INPUT -s 218.80.198.234 -p tcp -m state --state NEW -m tcp --dport 22 -j ACCEPT
/sbin/iptables -A INPUT -s 218.80.198.250 -p tcp -m state --state NEW -m tcp --dport 22 -j ACCEPT
/sbin/iptables -A INPUT -s 210.22.188.21 -p tcp -m state --state NEW -m tcp --dport 22 -j ACCEPT

#ftp server
#/sbin/iptables -A INPUT -p tcp -m state --state NEW -m tcp --dport 21 -j ACCEPT

#game server
/sbin/iptables -A INPUT  -s 218.80.198.234 -p tcp -m state --state NEW -m tcp --dport 6020 -j ACCEPT

#db server
/sbin/iptables -t nat -A PREROUTING -s 218.80.198.234  -d 203.110.165.30 -p tcp --dport 3306 -j DNAT --to 192.168.102.158
/sbin/iptables -t nat -A PREROUTING -s 218.80.198.234  -d 203.110.165.30 -p tcp --dport 3307 -j DNAT --to 192.168.102.159:3306

/sbin/iptables -P INPUT DROP

/sbin/iptables -t nat -A POSTROUTING -o eth1 -s 192.168.102.0/24 -j MASQUERADE

此只允许公司的电脑可以登录。

2、设置系统自动启动
vi /etc/rc.d/rc.local
增加一行
/etc/rc.d/forward
  保存后退出
3、设置文件打开数
1) 修改/etc/security/limits.conf 增加2行:

*      soft    nofile  4096
*      hard    nofile  65535

2) 修改/etc/pam.d/login 增加1行

session required  pam_limits.so
可用:
echo “*    soft    nofile  4096” >>/etc/security/limits.conf
echo “*      hard    nofile  65535” >>/etc/security/limits.conf
echo “session required  pam_limits.so” >>/etc/pam.d/login
4、修改默认语言
vi /etc/sysconfig/i18n 修改

LANG="zh_CN.GB2312"

7、 新建运行用户ztgame,设置密码
useradd ztgame
passwd ztgame

8、 用ztgame用户登录,修改vi /home/ztgame/.bash_profile增加一行
ulimit –c unlimited
保存后退出。


四、环境的搭建(按照4台网关服务器,5台场景服务器,1台数据库的构架)
1、IP设置
4台网关服务器配置外网ip和内网ip,5台场景服务器和数据库服务器只配置内网ip,并且服务器默认网关为第一台网关的内网ip。
服务器以应用-序号-机房序号命名(例GWServer01-CHJ01)。
修改/etc/hosts。
例子:
127.0.0.1              GWServer01-CHJ01 localhost.localdomain localhost
192.168.100.101        GWServer02-CHJ01
………
192.168.100.104        ScenServer01-CHJ01
………
192.168.100.109 DBServer-CHJ01

2、公钥的生成
在ztgame的用户下登陆第一台网关,输入ssh-keygen -t dsa
接受 ~/.ssh/id_dsa 的默认位置。输入一个与你的帐号口令不同的口令句,再输入一次来确认。公钥被写入 ~/.ssh/id_dsa.pub。密钥被写入 ~/.ssh/id_dsa。
使用以下命令改变你的 .ssh 目录的许可权限:
chmod 755 ~/.ssh
把 ~/.ssh/id_dsa.pub用scp命令传到其它剩余9台
scp~/.ssh/id_dsa.pub

在其它9台下使用以下命令改变你的 authorized_keys 文件的许可权限:
chmod 755 ~/.ssh
chmod 644 ~/.ssh/authorized_keys

3、数据库的安装
#首先确定你是root用户
#确定你有以下包
perl-DBD-MySQL-2.9004-3.1
perl-DBI-1.40-5
mysql-4.1.7-4.RHEL4.1
获得mysql-4.1.*.tar包,用tar –zxvf mysql-4.1.*tar解开压缩包,然后进入mysql-4.1.*目录
#根据体统类型选择编译方式
#i386体系结构的
CFLAGS="-O3 -mcpu=pentiumpro" CXX=gcc CXXFLAGS="-O3 -mcpu=pentiumpro -felide-constructors -fno-exceptions -fno-rtti" ./configure --with-raid --enable-thread-safe-client --enable-assembler  --with-server-suffix =" for >>>MySQL Database of Zebra by Yhc<<<" --without-debug --with-extra-charsets=none --without-isam --disable-shared --with-mysqld-ldflags=-all-static --prefix=/usr/local/mysql --without-bench
#64位系统,x86_64
CFLAGS="-O3 -m64" CXX=gcc CXXFLAGS="-O3 -m64 -felide-constructors -fno-exceptions -fno-rtti" ./configure --with-raid --enable-thread-safe-client --enable-assembler  --with-server-suffix =" for >>>MySQL Database of Zebra by Yhc<<<" --without-debug --with-extra-charsets=none --without-isam --disable-shared --with-mysqld-ldflags=-all-static --prefix=/usr/local/mysql --without-bench

#然后根据CPU数量进行编译
make -j 2 && make install

#添加用户
groupadd mysql && useradd -g mysql mysql

#创建目录
mkdir /usr/local/mysql/data && mkdir /usr/local/mysql/run && mkdir /usr/local/mysql/log && mkdir /usr/local/mysql/var

#更改mysql目录所有者
chgrp mysql -R /usr/local/mysql && chown mysql -R /usr/local/mysql

#增加打开文件数量
ulimit -n 4096

#添加PATH
echo "PATH=\"/usr/local/mysql/bin:\$PATH\"" >> /etc/profile && export PATH="/usr/local/mysql/binPATH"

#strip可执行文件
strip /usr/local/mysql/libexec/mysqld

#添加LIB PATH
echo "/usr/local/mysql/lib" >> /etc/ld.so.conf && ldconfig

#将my.cnf文件cp到/etc目录下
cp support-files/my-huge.cnf /etc/my.cnf

#修改my.cnf
datadir=/db/mysql

#创建数据库存放路径
mkdir /db
chown mysql.mysql /db -R

#初始化Mysql表
su - mysql -c "mysql_install_db"

#启动
su - mysql -c "mysqld_safe --skip-name-resolve --open-files-limit=4096&"

#创建数据库和用户
GRANT ALL PRIVILEGES ON *.* TO IDENTIFIED BY WITH GRANT OPTION;
GRANT ALL PRIVILEGES ON *.* TO IDENTIFIED BY WITH GRANT OPTION;
GRANT ALL PRIVILEGES ON *.* TO IDENTIFIED BY WITH GRANT OPTION;

4、数据库配置
用mysql进入,然后用create database dbname创建数据库。分别创建SuperServer、RecordServer、Bill数据库,然后用安装包目录下的*.sql的文件建立相应的表。(SessionServer.sql也导入到RecordServer库中)。
在SuperServer数据库SERVERLIST表内添加配置信息。
例子:
INSERT INTO `SERVERLIST` VALUES (1,1,SuperServer,192.168.104.109,10000,192.168.104.109,10000);
INSERT INTO `SERVERLIST` VALUES(20,20,SessionServer,192.168.104.109,6000,192.168.104.109,6000);
INSERT INTO `SERVERLIST` VALUES(21,21,SceneServer,192.168.104.104,6010,192.168.104.104,6010);
INSERT INTO `SERVERLIST` VALUES(22,21,SceneServer,192.168.104.105,6011,192.168.104.105,6011);
INSERT INTO `SERVERLIST` VALUES(23,21,SceneServer,192.168.104.106,6012,192.168.104.106,6012);
INSERT INTO `SERVERLIST` VALUES(24,21,SceneServer,192.168.104.107,6013,192.168.104.107,6013);
INSERT INTO `SERVERLIST` VALUES(25,21,SceneServer,192.168.104.108,6014,192.168.104.108,6014);
INSERT INTO `SERVERLIST` VALUES(2200,22,GatewayServer,192.168.104.100,6020,210.51.23.132,6020);
INSERT INTO `SERVERLIST` VALUES(2201,22,GatewayServer,192.168.104.101,6020,210.51.23.133,6020);
INSERT INTO `SERVERLIST` VALUES(2202,22,GatewayServer,192.168.104.102,6020,210.51.23.134,6020);
INSERT INTO `SERVERLIST` VALUES(2203,22,GatewayServer,192.168.104.103,6020,210.51.23.135,6020);
INSERT INTO `SERVERLIST` VALUES(11,11,RecordServer,192.168.104.109,7010,192.168.104.109,7010);
INSERT INTO `SERVERLIST` VALUES(12,12,BillServer,192.168.104.109,7020,192.168.104.109,7020);
在RecordServer数据库上初始化某些表格,目前有ANSWER,TECH,COUNTRY,NPCDARE,ACCPRIV。
数据库服务器上跑SuperServer、SessionServer、RecordServer、BillServer四个服务,4个网关服务器分别跑4个网关服务,5个场景服务器分别跑5个场景服务。场景服务器对应的ID就是国家配置的ID号,这个ID号决定场景上面跑几个国家。

五、服务端的配置和安装
1、获得安装包:
release-version.tar.bz2
map-version.tar.bz2
在/home/ztgame下建立以时间为名字的目录(game20050928),压缩包放入此目录,然后用tar –jxvf  release-version.tar.bz2 和tar –jxvf map-version.tar.bz2解开压缩包

进入release目录,cp –rf ../map .
按照config.xml.example格式创建文件config.xml
配置文件主要定义了的各种参数:
[global]这段主要定义了通用参数,如服务器本地网络设备名称,扩展网络设备名称,日志级别,SuperServer的地址,端口等参数。

其他各个段定义了具体的服务参数,主要是指定该服务对应的数据库,数据库的连接地址,端口,用户名,密码等数据库连接字符串。每个服务可以定义日志文件的存放位置,如果没有指定,缺省放置在/tmp/目录下面。
如SuperServer服务
<SuperServer>
              <!--MySQL database connection[mysql://user:passwd@host:port/dbName]-->
              <mysql>mysql://test:123456@192.168.2.14:3306/SuperServer</mysql>
              <logfilename>/home/test/tmp/superserver.log</logfilename>
</SuperServer>
上面配置指明SuperServer服务,采用连接串用户名test,密码123456,访问192.168.2.14上3306端口下SuperServer数据库,日志文件存放在/home/test目录下。其他服务配置类似。
例子:
<?xml version="1.0" encoding="GB2312"?>
<!--所有各种参数-->
<Zebra>
<global>
<!-- Specify the log level[debug,info,warning,error,fatal,always]. -->
<log>debug</log>
<!--MySQL database connection[mysql://user:passwd@host:port/dbName]-->
<!-- Use the specified local network device. -->
<ifname>eth0</ifname>
<!-- Connected to the specified supserserver, property port default value is 10000. -->
<superserver port="10000">192.168.104.109</superserver>
</global>
<SuperServer>
              <!-- 统一用户平台登陆列表文件 -->
              <loginServerListFile>loginServerList.xml</loginServerListFile>
              <!-- 角色名称唯一性验证的地址 -->
              <RoleregServer port="9901">218.80.198.252</RoleregServer>
              <!-- 服务器信息采集的地址 -->
              <InfoServer port="9903">218.80.198.252</InfoServer>
              <!--MySQL database connection[mysql://user:passwd@host:port/dbName]-->
<mysql>mysql://ztgame:yS29wahvCH@192.168.104.109:3306/SuperServer</mysql>
              <!-- 如果要编码mysql连接字符串请使用工具,配置如下面的例子
              <mysql encode="yes">lmOf.1kySwS0a09j11xyCdI1ySujl1hnCvT0hDitT0hjzv00gzSv00gDSw91tS9fE1</mysql>
              -->
              <logfilename>/log/superserver.log</logfilename>
      </SuperServer>
<RecordServer>
<!--MySQL database connection[mysql://user:passwd@host:port/dbName]-->
<mysql>mysql://ztgame:yS29wahvCH@192.168.104.109:3306/RecordServer</mysql>
<logfilename>/log/recordserver.log</logfilename>
</RecordServer>
<BillServer>
              <!--MySQL database connection[mysql://user:passwd@host:port/dbName]-->
              <mysql>mysql://ztgame:yS29wahvCH@192.168.104.109:3306/Bill</mysql>
<logfilename>/log/billserver.log</logfilename>
</BillServer>


<BillClient>
<!-- 交易记录log文件路径 -->
<tradelogfilename>/log/clienttrade.log</tradelogfilename>
</BillClient>
<SessionServer>
<!--MySQL database connection[mysql://user:passwd@host:port/dbName]-->
              <mysql>mysql://ztgame:yS29wahvCH@192.168.104.109:3306/RecordServer</mysql>
<logfilename>/log/sessionserver.log</logfilename>
<dare_active_time>3600</dare_active_time>
<offlineMsgPath>/log/offlineMessages</offlineMsgPath>
</SessionServer>
<ScenesServer>
<sceneinfofile>scenesinfo.xml</sceneinfofile>
              <npctradefile>npctrade.xml</npctradefile>
              <messageSystemFile>messageSystem.xml</messageSystemFile>


              <charinitinfoFile>initcharinfo.xml</charinitinfoFile>
<magicrangeFile>magicrangefile.xml</magicrangeFile>
<questdir>quest/</questdir>
              <mapdir>map/</mapdir>
              <tbldir>map/</tbldir>
              <gm_logfile>/log/gm_log.log</gm_logfile>
              <!--回写档案平率(单位是秒) -->
<writebacktimer>300</writebacktimer>
<ossdir>/log/</ossdir>
<logfilename>/log/scenesserver.log</logfilename>  
</ScenesServer>
<GatewayServer>
              <!-- 国家排序方式 0:不排序 , 1:在线人数排序 , 2:注册人数排序 -->
              <countryorder>2</countryorder>
              <logfilename>/log/gatewayserver.log</logfilename>
              <sceneinfofile>scenesinfo.xml</sceneinfofile>                
              <rolereg_verify>1</rolereg_verify>
              <forbidWordsFile>forbidWords</forbidWordsFile>
</GatewayServer>
</Zebra>
注意存放日至的目录是否建立,以及建立session服务所要求的日志存放子目录offlineMessages。

修改loginServerList.xml,填入平台中心的FLServerip以及端口。
例子:
<?xml version="1.0" encoding="GB2312"?>
<LoginServerList>
      <server ip="218.80.198.252" port="7001"/>
      <server ip="210.22.188.20" port="7001"/> 
</LoginServerList>

然后将修改好的传至其它9台。并启动服务

六、的启动,停止和更新
1、将运行脚本传至各个。

2、开启服务

通过ssh使用ztgame用户远程连接至第一台网关服务器,再通过网关服务器连接其他9台, 
10个窗口内分别进入最新的服务端存放目录/home/ztgame/game200508**/release/

数据库 启动服务./SuperServer -d 和 ./SessionServer -d 和 ./RecordServer -d  和 ./BillServer -d
场景 启动服务./ScenesServer -d
网关 启动服务./GatewayServer -d

以上操作可以通过/home/ztgame/tools/allstart game200508**来启动(由于程序是后台运行,所以如发现程序运行时间过长,可以CTRL+c中断,并不影响程序的正常运行。)


3、停止服务

通过ssh使用ztgame用户远程连接至第一台网关,运行/home/ztgame/tools/allstop,中止所有服务 
,此脚本是并不是强行杀进程,所以如果发现进程无法kill的情况,用/home/ztgame/tools/allstop_9来强行杀死进程。

4、查看服务

通过ssh使用ztgame用户远程连接至第一台网关,运行/home/ztgame/tools/allview,查看所有服务运行状态。


5、更新服务

通过ssh使用ztgame用户远程连接至第一台网关服务器,再通过服务器连接其他9台, 
分别在/home/ztgame目录下面建立最新的服务端存放目录game200508**.

然后将服务器端安装包通过scp传到第一台网关,在game200508**下解压。
tar jxvf zebra-release-*****
tar jxvf zebra-release-*****
cp map release/ -rf
然后从上一个里拷贝出一些配置文件覆盖源文件
cp /home/ztgame/game_old/release/config.xml /home/ztgame/game_new/release/
cp /home/ztgame/game_old/release/loginServerList.xml /home/ztgame/game_new/release/
cp /home/ztgame/game_old/release/messageSystem.xml /home/ztgame/game_new/release/

以上工作准备好后就可以将网关服务器上的传到其他
scp -r /home/ztgame/game_new/*  218.80.198.234 /  /root/back/`hostname`-RecordServer`date +%Y%m%d`.tar.gz
sleep 20
echo "upload RecordServer ok!"
2)、数据库即时备份
每隔1小时,将RecordServer数据库拷贝至/root/back/hour目录进行备份,然后将压缩文件传给特定。
例子:
#!/bin/bash
hottime=`date +%Y%m%d%H%M`
mkdir /root/back/hour/RecordServer"$hottime"
/usr/local/mysql/bin/mysqlhotcopy RecordServer /root/back/hour/RecordServer"$hottime" -u ztgame -p yS29wahvCH
sleep 5
cd /root/back/hour
tar zcf `hostname`-RecordServer"$hottime".tar.gz RecordServer"$hottime"
sleep 5
echo "tar ok!"
/usr/local/bin/ncftpput -u backupdb -p backupdb 192.168.102.119 /  /root/back/hour/`hostname`-RecordServer"$hottime".tar.gz
sleep 20
echo "upload RecordServer ok!"
rm `hostname`-RecordServer"$hottime".tar.gz -f
3)、日志备份
每天02:00,将/log/下前一天的日志,进行压缩,然后上传至192.168.1.9。
运行脚本/root/scripts//upload_daily
例子:
#!/bin/bash
cd /log/
mkdir log`date --date 1 days ago +%Y%m%d`
mv *.log.`date --date 1 days ago +%y%m%d`-*  log`date --date 1 days ago +%Y%m%d`
sleep 10
tar zcvf `hostname`-log`date --date 1 days ago +%Y%m%d`.tar.gz log`date --date 1 days ago +%Y%m%d`
/usr/local/bin/ncftpput -u log -p  218.80.198.234 /  /log/`hostname`-log`date --date 1 days ago +%Y%m%d`.tar.gz
rm `hostname`-log`date --date 1 days ago +%Y%m%d`.tar.gz

注:计划任务通过/etc/crontab –e来进行设置

4)、即时日志备份
直接运行/home/ztgame/tools/upload 将最新日志上传至192.168.1.9,方便研发部门查看。
运行脚本/home/ztgame/tools/upload,(如果所有服务器的日志都需要上传,可以运行网关上的/home/ztgame/tools/allupload) 

发布站程序下载:www.98youx.com发布站程序下载:www.98youx.com

Tags:

作者:佚名

文章评论评论内容只代表网友观点,与本站立场无关!

   评论摘要(共 0 条,得分 0 分,平均 0 分) 查看完整评论
传奇资源网提供最新传奇开区一条龙版本下载,本站声明:只更新最新最好的传奇服务端分享给大家。