找回密码
 立即注册
查看: 105|回复: 0

[端游] 征途源代码 - 网游单机下载 站

[复制链接]
  • TA的每日心情
    开心
    2024-6-17 00:34
  • 签到天数: 7 天

    [LV.3]略有小成

    灌水成绩
    47582
    10
    143951
    主题
    帖子
    积分

    等级头衔

    ID : 2

    超级版主

    积分成就 威望 : 6
    贡献 : 0
    杰币 : 1185
    在线时间 : 170 小时
    注册时间 : 2022-1-8
    最后登录 : 2024-7-8

    发表于 2024-3-12 11:36:25 | 显示全部楼层 |阅读模式
    [ 本帖最后由 bfdz49 于 2019-12-20 14:16 编辑 ]\n\n 编辑 配置高亮
    使用SecureCRT登录linux服务器用VIM时显示彩色语法高亮的方法
    链接:https://pan.baidu.com/s/1PB373gOBDte9D8V-y-45zQ提取码:55cz1

    :在$HOME 目录下 vim   ~/.vimrc 建立一个文件
    2:在最后面添两句:syntax on   和 set nocp ,然后保存
    3:在SecureCRT中设置 选项->会话选项->终端->仿真->终端:Linux
    4:重新登录linux服务器,打开 vim,现在就可自动对语法进行加亮了。
    Mysql还原数据库
    source 数据名.sq

    服务器架设
    游戏服务器注意事项
    一、硬件的安装
    1、保证服务器风扇正常转动。
    2、保证服务器各个提示灯是否正常。
    3、开机察看服务器有无报警情况。
    4、开机察看服务器能否正常启动(不插鼠标键盘的情况下)
    二、系统的安装
    安装RHEL 4.0
    选择自动分区。
    分别给2块网卡配置ip,方便以后配置。
    不启用防火墙。
    增加中文语言包。
    选择软件包时,只选择开发包.
    三、系统的简单设置
    1、防火墙的简单设置:
      vi /etc/rc.d/forward
    内容:
    #!/bin/bash
    /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 -m state --state ESTABLISHED,RELATED -j ACCEPT
    #sshd
    /sbin/iptables -A INPUT -s 218.80.198.0/24 -p tcp -m state --state NEW -m tcp --dport 22 -j ACCEPT
    /sbin/iptables -A INPUT -s 192.168.0.0/16 -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
    #/sbin/iptables -A INPUT -p tcp -m state --state NEW -m tcp --dport 80 -j ACCEPT

    /sbin/iptables -A INPUT -j DROP

    保存后退出。
       chmod 744 /etc/rc.d/forward
       然后运行防火墙脚本,以后根据需求修改脚本。
    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"
    新建游戏运行用户ztgame,设置密码
    useradd ztgame
    passwd ztgame
    用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 [email protected]:~/.ssh/authorized_keys
    在其它9台服务器下使用以下命令改变你的 authorized_keys 文件的许可权限:
    chmod 755 ~/.ssh
    chmod 644 ~/.ssh/authorized_keys
    3、数据库服务器的安装
    #首先确定你是root用户
    获得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 4 && 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/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
    #关闭binary logging
    #log-bin

    #创建数据库存放路径
    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;
    GRANT ALL PRIVILEGES ON *.* TO ztgame@'210.22.188.21' 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);
    数据库服务器上跑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:[email protected]: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:[email protected]: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:[email protected]:3306/RecordServer</mysql>
                    <logfilename>/log/recordserver.log</logfilename>
            </RecordServer>
            <BillServer>
                    <!--MySQL database connection[mysql://user:passwd@host:port/dbName]-->
                    <mysql>mysql://ztgame:[email protected]: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:[email protected]: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,填入平台中心的FLServer服务器ip以及端口。
    例子:
    <?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/* [email protected]:/home/ztgame/game_new

    以上操作可以通过shell脚本来实现
    /home/ztgame/tools/installPackage game_new game-old

    七、服务器数据的备份
    1、数据备份
    为了防止意外情况的发生造成数据的丢失,关键数据或整个系统或对有选择的系统部分,在本地和异地进行定时备份,以保证系统全部或部分在灾害出现时也能持续运行。
    2、具体方案
    1)、数据库每日备份
       每天4:00,将RecordServer数据库拷贝至/root/back后进行压缩,然后上传至192.168.1.9服务器上,/root/back留有压缩版本。
       运行脚本/root/scripts/back.sh
    例子:
    #!/bin/bash
    rm /root/back/RecordServer/* -rf
    /usr/local/mysql/bin/mysqlhotcopy RecordServer /root/back/RecordServer -u ztgame -p yS29wahvCH
    sleep 5
    cd /root/back
    tar zcf `hostname`-RecordServer`date +%Y%m%d`.tar.gz RecordServer
    sleep 5
    echo "tar ok!"
    /usr/local/bin/ncftpput -u gamebak -p gamebak@ztgame 218.80.198.234 /  /root/back/`hostname`-RecordServer`date +%Y%m%d`.tar.gz
    sleep 20
    echo "upload RecordServer ok!"
    2)、数据库即时备份
            每隔半小时,将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 log@ztgame 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)
    链接:https://pan.baidu.com/s/1nr9CO2YGlMBMd0k5a-HvxA
    提取码:pile

    回复

    使用道具 举报

    您需要登录后才可以回帖 登录 | 立即注册

    本版积分规则

    小黑屋|手机版|Archiver|RSS|藏宝游 ( 豫ICP备2021017492号 )

    GMT+8, 2024-7-19 16:40

    Powered by Discuz! X3.5

    Copyright © 2001-2020, Tencent Cloud.

    快速回复 返回顶部 返回列表