Linux下征途私服架设详细教程_征途
    本说明不涉及任何责任,提供本说明给技术爱好者学习了解服务器环境概况,请勿用于非法用途。所有资料来源与网络与本站无任何关系.
    Linux下征途游戏服务注意事项
    一、硬件的安装
    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 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号决定场景服务器上面跑几个国家。