您当前的位置:首页 > 其他技术 > 征途技术

正途服务端架设教程

本文出处:网游动力作者:本站发布时间:2008-08-17阅读次数:
征途服务端架设教程

本说明不涉及任何责任,提供本说明给技术爱好者学习了解服务器环境概况,所有资料来源与网络与本站无任何关系.  
 
游戏服务器注意事项  
一、硬件的安装  
1、保证服务器风扇正常转动。  
2、保证服务器各个提示灯是否正常。  
3、开机察看服务器有无报警情况。  
4、开机察看服务器能否正常启动(不插鼠标键盘的情况下)  
 
二、系统的安装  
1、 安装RHEL 4.1  
2、 选择自动分区。  
3、 分别给2块网卡配置ip,方便以后配置,其中eth0配内网ip,eth1配外网ip。  
4、 不启用防火墙。  
5、 增加中文语言包。  
6、 选择软件包时,只选择开发包.  
7、 征途私服服务器端
 
三、系统的简单设置  
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 ztgame@192.168.102.108:~/.ssh/authorized_keys  
   
在其它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>>MySQL Database of Zebra by Yhc> /etc/profile && export PATH="/usr/local/mysql/bin:$PATH"  
 
#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 ztgame@192.168.104.% IDENTIFIED BY WITH GRANT OPTION;  
GRANT ALL PRIVILEGES ON *.* TO ztgame@localhost IDENTIFIED BY WITH GRANT OPTION;  
GRANT ALL PRIVILEGES ON *.* TO ztgame@218.80.198.234 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号决定场景服务器上面跑几个国家。