地方网

搜索

[征途服务端] 征途1.04完整官方服务端+征途私服架设录像教程

[复制链接]
admin 发表于 2008-8-18 16:07:57 | 显示全部楼层 |阅读模式
软件简介:9 g8 `- [3 F* `6 A7 T
服务器要求Intel 64位CPU 2G以上内存!本人测试一台INTEL 3.2CPU 2G内存服务器三个国家300人左右不卡!
- f4 k1 Q& o! ]& n8 S1 @* T此端差一个帐号管理程序,希望有能力的朋友研究出来!本版本为1.04完整官方征途服务端( r6 w) S$ C! J% Y
游戏服务器注意事项; p% O5 X' _' U) Y$ t
一、硬件的安装
  o1 R- |! W! ?) q3 L2 P1、保证服务器风扇正常转动。5 c% W$ A; Y5 j) O, y/ v
2、保证服务器各个提示灯是否正常。( d1 d3 J1 F( y% i
3、开机察看服务器有无报警情况。" L2 k% ?; w3 {
4、开机察看服务器能否正常启动(不插鼠标键盘的情况下)* Y9 Y+ ^! P: [, b, s6 N3 Z
二、系统的安装
+ J3 d6 n9 C* @8 x4 t. p- M安装RHEL 4.0
( p9 G+ [. S) L/ ~: B( S选择自动分区。
0 L7 [: m' x& Y# f0 ?  `分别给2块网卡配置ip,方便以后配置。. O" [5 T8 _. C* t8 b  _
不启用防火墙。
2 U) ^  s# k# D( G( i增加中文语言包。/ {4 w/ ]$ M% ~9 t& \
选择软件包时,只选择开发包.+ l4 \. h6 h7 q2 f7 _
三、系统的简单设置9 v. R2 s, F1 }3 W) \! I& N
1、防火墙的简单设置:
' D( C4 n, o% U+ ^  m vi /etc/rc.d/forward. S6 ~$ |$ o" B" b5 z$ _0 r
内容:% I+ U# g% }! |2 V1 C( R6 z/ ]
#!/bin/bash
. z" T: q2 k3 t& q/sbin/iptables -F
  g+ S+ [+ p/ A6 t+ U- t% Z  {/sbin/iptables -F -t nat) u0 K8 E. ]  a5 Y
/sbin/depmod -a
/ E) g* s+ r4 }1 Z' n3 D/sbin/modprobe ip_tables
  ^9 _) A; F- t& T! y7 y( L/sbin/modprobe ip_conntrack- ^! h8 u. R' w% l) q$ k0 f" D
/sbin/modprobe ip_nat_ftp
9 [: v; G: _2 b/sbin/modprobe ip_conntrack_ftp4 B/ a" _# C7 B, v
/sbin/iptables -A INPUT -m state --state ESTABLISHED,RELATED -j ACCEPT5 I' @/ d( W) S$ d$ a1 D+ V
#sshd/ p& U3 \+ N) K
/sbin/iptables -A INPUT -s 218.80.198.0/24 -p tcp -m state --state NEW -m tcp --dport 22 -j ACCEPT
$ Z) G  r* c+ B: o' n% S1 B% |/sbin/iptables -A INPUT -s 192.168.0.0/16 -p tcp -m state --state NEW -m tcp --dport 22 -j ACCEPT- F6 I9 ^! G" n: z7 l% O8 G
#ftp server
: N+ x; l4 H( ~* b0 s#/sbin/iptables -A INPUT -p tcp -m state --state NEW -m tcp --dport 21 -j ACCEPT$ ?% P, y& j6 G; O8 G* ]3 R- y2 O
#/sbin/iptables -A INPUT -p tcp -m state --state NEW -m tcp --dport 80 -j ACCEPT; ^$ K( j# J4 @8 ]0 i6 k
, _& I( C! K* K  L' b( z
/sbin/iptables -A INPUT -j DROP# t; \2 C4 r2 s* y- @( V& Q
保存后退出。. {* f. d7 e/ A
chmod 744 /etc/rc.d/forward' \* O& k- p! }' q, \
然后运行防火墙脚本,以后根据需求修改脚本。$ a; C, k1 B& f% Y& R8 C
2、设置系统自动启动防火墙! x3 N- L8 c& e
vi /etc/rc.d/rc.local2 S: F: N* L+ w/ y' L3 J
增加一行
3 |# R5 K! F: Z; U$ [5 I /etc/rc.d/forward9 P9 }8 n; i+ z( ]+ D
保存后退出
  U4 e3 X# O& A2 ?3、设置文件打开数
1 N! d# v5 x0 |7 b1) 修改/etc/security/limits.conf 增加2行:. E- C( T3 B; I- C9 i
* soft nofile 4096
& d2 u8 @4 X' b  g* hard nofile 65535. O3 m3 C6 x& a
2) 修改/etc/pam.d/login 增加1行
2 n5 D8 S/ A% w. M3 |# C5 Psession required pam_limits.so5 C) |3 u8 G: Y5 V& s. q) a
可用:
% D' F; L. ?' f8 U0 k( n( S6 gecho * soft nofile 4096 /etc/security/limits.conf
: A: }1 ~" N" G! ^8 \" \' n& n& Vecho * hard nofile 65535 /etc/security/limits.conf
& @: S: Z1 W3 y2 wecho session required pam_limits.so /etc/pam.d/login
4 s, x: }9 U  Q* z& Z$ l" i) T4、修改默认语言
  ~, H3 N0 R) L( y vi /etc/sysconfig/i18n 修改; J! d. N! d. Q6 ?
LANG=zh_CN.GB2312
: d5 Q+ {" _( `: g2 Y! S% F- ]; `新建游戏运行用户ztgame,设置密码
- s0 ^: i" t; B& n* h' Juseradd ztgame
! i7 g3 `8 F* D  `3 G3 E# N5 m, Upasswd ztgame$ x# ]8 h, [! Y6 D" \
用ztgame用户登录服务器,修改vi /home/ztgame/.bash_profile增加一行
( A, Q( c3 j, C  M* pulimit c unlimited+ j# E: Y3 Y& u1 P/ y# x* |
保存后退出。6 s+ G7 `9 q8 c) ^) ~. O5 Y4 o, [4 o
四、游戏环境的搭建(按照4台网关服务器,5台场景服务器,1台数据库服务器的构架)
, f7 V5 N5 j. D+ I/ z. [1 T+ j, }1、服务器IP设置& L8 ^- t  F8 S. H4 m, D& l2 i
4台网关服务器配置外网ip和内网ip,5台场景服务器和数据库服务器只配置内网ip,并且服务器默认网关为第一台网关服务器的内网ip。) x, O' \: a9 S$ y2 _
服务器以服务器应用-序号-机房序号命名(例GWServer01-CHJ01)。! t* b- O( ]$ M# y( j6 ^1 Z$ ^
修改/etc/hosts。
* u& W  C$ _' {. i' }/ I2 C例子:% x$ c" [; D& Z1 C4 w" c
127.0.0.1 GWServer01-CHJ01 localhost.localdomain localhost
% J9 U  f# U( f192.168.100.101 GWServer02-CHJ01! P" N4 w+ P( R4 Y7 i  P, k9 m

" |. n" G; t, {( B" O9 ~192.168.100.104 ScenServer01-CHJ01
2 e/ l3 v  Z( P5 |2 ]2 E* y: T6 c+ e! d
192.168.100.109DBServer-CHJ01
4 T! p2 V& f' V4 W( l2、公钥的生成
3 J5 B7 a+ r2 t4 Y. U在ztgame的用户下登陆第一台网关服务器,输入ssh-keygen -t dsa( V* u7 E" q" x2 K$ U) n; k3 k
接受 ~/.ssh/id_dsa 的默认位置。输入一个与你的帐号口令不同的口令句,再输入一次来确认。公钥被写入 ~/.ssh/id_dsa.pub。密钥被写入 ~/.ssh/id_dsa。/ n) M5 w' M# J
使用以下命令改变你的 .ssh 目录的许可权限:
+ X% Q' R1 @/ I# N1 |: W. M/ xchmod 755 ~/.ssh
/ \/ k' ~9 o& m, J& |+ U把 ~/.ssh/id_dsa.pub用scp命令传到其它剩余9台服务器
* l9 Q. e; p" E' [* |; N- fscp~/.ssh/id_dsa.pub ztgame@192.168.102.108:~/.ssh/authorized_keys
2 |  T: ?$ z5 ~在其它9台服务器下使用以下命令改变你的 authorized_keys 文件的许可权限: 7 u, [  Y4 l: Z7 L% `( q8 I" _
chmod 755 ~/.ssh
) N1 ^/ o( }. g+ J! a7 b% Fchmod 644 ~/.ssh/authorized_keys
' i3 a. s+ @8 D$ Q5 L3、数据库服务器的安装0 N  G* ]4 f- N% k3 c  N
#首先确定你是root用户! ]9 r1 o$ B3 j" G. t
获得mysql-4.1.*.tar包,用tar zxvf mysql-4.1.*tar解开压缩包,然后进入mysql-4.1.*目录
- e" v  \; j. i' ^4 m+ ]* S3 w#根据体统类型选择编译方式
, s2 V8 s. Q1 R1 R6 E  I) ]1 d! Y#i386体系结构的
/ i1 e: y. ~8 ^% R7 F( j' G! ECFLAGS=-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
6 {) h4 Q6 p( t9 ~, e6 I* [# r#64位系统,x86_648 d+ p! N2 L  {6 x4 O: c
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-bench0 B% p( y$ N  Z; `4 _% g$ I
#然后根据CPU数量进行编译
8 e( A% x3 J; ^+ v" p- @make -j 4 PATH=\/usr/local/mysql/bin:\$PATH\  /etc/profile /usr/local/mysql/bin:$PATH( o# n7 n; ], ?8 G' ]% Q7 m) O
#strip可执行文件; d# E9 f# e9 v3 M9 R
strip /usr/local/mysql/libexec/mysqld
8 I& \# _0 p- C2 u" h' Y7 y#添加LIB PATH
) Q7 L7 Z' o) a1 m/ R# lecho /usr/local/mysql/lib  /etc/ld.so.conf mysql_install_db
  M; K+ g7 t  n+ L: `6 G4 }#启动服务器9 k1 m+ \7 ^2 h' U7 b. a
su - mysql -c mysqld_safe --skip-name-resolve --open-files-limit=4096
' t: t, b. x+ N/ J#创建数据库和用户: j% w9 d* u/ E- p  _
GRANT ALL PRIVILEGES ON *.* TO ztgame@'192.168.1.%' IDENTIFIED BY '' WITH GRANT OPTION;+ t. A/ {. Q3 O4 n. T+ b7 |
GRANT ALL PRIVILEGES ON *.* TO ztgame@'localhost' IDENTIFIED BY '' WITH GRANT OPTION;
4 J# m5 K9 `( Q$ _. oGRANT ALL PRIVILEGES ON *.* TO ztgame@'222.212.121.119' IDENTIFIED BY '' WITH GRANT OPTION;
2 p& X4 u# O) t9 O& T8 _GRANT ALL PRIVILEGES ON *.* TO ztgame@'222.212.121.119' IDENTIFIED BY '' WITH GRANT OPTION;
$ f: j; g2 N: T1 O' ^2 ?2 o7 @+ i4、数据库配置( {, U- ]1 L& L& }" F  `8 C! @
用mysql进入,然后用create database dbname创建数据库。分别创建SuperServer、RecordServer、Bill数据库,然后用安装包目录下的*.sql的文件建立相应的表。(SessionServer.sql也导入到RecordServer库中)。
$ C* _$ l" U, Z$ O( {9 \在SuperServer数据库SERVERLIST表内添加服务器配置信息。0 X+ w, I( \" }% h' e6 p* |
例子:( Q- F4 U6 Q1 `6 c! _. b# ~
INSERT INTO `SERVERLIST` VALUES (1,1,'SuperServer','192.168.1.130',10000,'192.168.1.130',10000);" B) d7 {2 I( r
INSERT INTO `SERVERLIST` VALUES(20,20,'SessionServer','192.168.1.130',6000,'192.168.1.130',6000);3 S8 @5 z" k: W7 Y9 d' r. L
INSERT INTO `SERVERLIST` VALUES(21,21,'SceneServer','192.168.1.130',6010,'192.168.1.130',6010);* f9 S' k' C+ f( R2 F
INSERT INTO `SERVERLIST` VALUES(22,21,'SceneServer','192.168.1.130',6011,'192.168.1.130',6011);0 r" M5 @, o' j
INSERT INTO `SERVERLIST` VALUES(23,21,'SceneServer','192.168.1.130',6012,'192.168.1.130',6012);
3 u2 m& n+ `$ o6 ~! dINSERT INTO `SERVERLIST` VALUES(24,21,'SceneServer','192.168.1.130',6013,'192.168.1.130',6013);$ y! [- `4 y4 \/ g; U
INSERT INTO `SERVERLIST` VALUES(25,21,'SceneServer','192.168.1.130',6014,'192.168.1.130',6014);
+ r% l4 E/ m  }6 F7 p7 a9 lINSERT INTO `SERVERLIST` VALUES(2200,22,'GatewayServer','192.168.1.130',6020,'192.168.1.130',6020);( Y: |; y: O  Q5 m! Y, R
INSERT INTO `SERVERLIST` VALUES(2201,22,'GatewayServer','192.168.1.130',6020,'192.168.1.130',6020);
$ g2 H( x- ?+ QINSERT INTO `SERVERLIST` VALUES(2202,22,'GatewayServer','192.168.1.130',6020,'192.168.1.130',6020);7 Q! R" m7 X4 i) E- l, U' ]
INSERT INTO `SERVERLIST` VALUES(2203,22,'GatewayServer','192.168.1.130',6020,'192.168.1.130',6020);9 [+ v7 [5 g1 z7 z
INSERT INTO `SERVERLIST` VALUES(11,11,'RecordServer','192.168.1.130',7010,'192.168.1.130',7010);
! K3 J& F# O) `' UINSERT INTO `SERVERLIST` VALUES(12,12,'BillServer','192.168.1.130',7020,'192.168.1.130',7020);9 Y6 n6 D5 J7 \3 W* Y. i
数据库服务器上跑SuperServer、SessionServer、RecordServer、BillServer四个服务,4个网关服务器分别跑4个网关服务,5个场景服务器分别跑5个场景服务。场景服务器对应的ID就是国家配置的ID号,这个ID号决定场景服务器上面跑几个国家。
5 u5 n$ Y, ^& |. D& a- u五、服务端的配置和安装6 g) G7 H0 ], _9 T3 C
1、获得安装包:
6 |/ G* k9 }1 c; E# Vrelease-version.tar.bz2
! J1 m. Q5 s* Zmap-version.tar.bz22 {" c* O: g" o$ a$ d
在/home/ztgame下建立以时间为名字的目录(game20050928),压缩包放入此目录,然后用tar jxvf release-version.tar.bz2 和tar jxvf map-version.tar.bz2解开压缩包
: z8 L/ L! E' B# C进入release目录,cp rf ../map .* K7 x% F+ _0 Y; H2 a( v, s
按照config.xml.example格式创建文件config.xml% _5 L' D" j. c0 Y2 {
配置文件主要定义了服务器的各种参数:
  Z( V2 }/ D! [[global]这段主要定义了通用参数,如服务器本地网络设备名称,扩展网络设备名称,日志级别,SuperServer的服务器地址,端口等参数。
2 f/ t- I+ y* r1 L) G* G3 O  x其他各个段定义了具体的服务参数,主要是指定该服务对应的数据库,数据库的连接地址,端口,用户名,密码等数据库连接字符串。每个服务可以定义日志文件的存放位置,如果没有指定,缺省放置在/tmp/目录下面。
5 ]3 C$ w/ q+ b- s: `如SuperServer服务+ d( G3 c: W7 A
SuperServer
, ~8 b, b0 H7 q& Z, o !--MySQL database connection[mysql://user:passwd@host:port/dbName]--
* a$ E- P% Y1 R& i* I( |7 G mysqlmysql://test:123456@192.168.2.14:3306/SuperServer/mysql
) [2 ?$ Q6 P' ? logfilename/home/test/tmp/superserver.log/logfilename
- p2 ]6 h- B0 w, A6 f/SuperServer; T( r# p: K6 I
上面配置指明SuperServer服务,采用连接串用户名test,密码123456,访问192.168.2.14服务器上3306端口下SuperServer数据库,日志文件存放在/home/test目录下。其他服务配置类似。8 v8 o9 N# h: M
例子:5 A# j9 a" z- |. y
?xml version=1.0 encoding=GB2312?
/ K/ |) y6 d1 M5 l* z6 a0 i!--所有各种服务器参数--. E, M3 E& |6 A- M
Zebra
8 G! a# U! m0 F9 \# V) w) }  j: o0 Y  Kglobal
  \3 |  Q0 V, f0 \+ G!-- Specify the log level[debug,info,warning,error,fatal,always]. --
8 T) t; E9 ~- r& u3 b1 m& }logdebug/log
+ B9 G7 K$ W# l3 y: Q!--MySQL database connection[mysql://user:passwd@host:port/dbName]--" _  g& b  n. @
!-- Use the specified local network device. --
4 h+ q. G9 x, x! mifnameeth0/ifname' u% D3 U! I% Y0 h0 Z) R' C. n2 i
!-- Connected to the specified supserserver, property 'port' default value is 10000. --6 x' ?; @8 l4 @5 n" s
superserver port=10000192.168.104.109/superserver
& R0 ~6 L% b3 L: P; I5 N* t0 g# _! N: ?/global4 G7 c* k1 e9 w+ e7 _
SuperServer$ j! a0 {/ V' V* ?
!-- 统一用户平台登陆服务器列表文件 --
; A) S, S, W9 d* V8 h7 ~- x% P8 d& H loginServerListFileloginServerList.xml/loginServerListFile
9 \2 _  C# w- ]% \4 @) W !-- 角色名称唯一性验证服务器的地址 --' v3 f. S2 N/ T9 @
RoleregServer port=9901218.80.198.252/RoleregServer
+ v8 Z% W" U* f% D7 T! d !-- 服务器信息采集的服务器地址 --$ ^" n0 ~8 i! F. \2 J) p8 J; z6 v! A
InfoServer port=9903218.80.198.252/InfoServer
/ ~: C/ b, ?$ d* T! @2 _ !--MySQL database connection[mysql://user:passwd@host:port/dbName]--3 o7 s$ i. a1 h( [
mysqlmysql://ztgame:yS29wahvCH@192.168.104.109:3306/SuperServer/mysql. ~) ~0 d  s! z  }. i, h
!-- 如果要编码mysql连接字符串请使用工具,配置如下面的例子8 u7 `8 \9 X& L  \+ V3 `7 h$ W
mysql encode=yeslmOf.1kySwS0a09j11xyCdI1ySujl1hnCvT0hDitT0hjzv00gzSv00gDSw91tS9fE1/mysql4 D( \" |4 {5 I+ C
--! i- c" }% q5 X9 {+ x8 f8 w% e
logfilename/log/superserver.log/logfilename
! b; q! q! z5 q5 F; b# m6 L /SuperServer1 u# X  D6 q, U/ A
RecordServer
2 Q- _' k' p$ r7 a!--MySQL database connection[mysql://user:passwd@host:port/dbName]--
1 c" u$ N6 `: M7 ~4 Nmysqlmysql://ztgame:yS29wahvCH@192.168.104.109:3306/RecordServer/mysql  i) ?) S4 Q" m* L8 F* c( [; n9 U
logfilename/log/recordserver.log/logfilename
# S& c+ K2 ]) t2 b$ E/RecordServer
, H. g8 q4 o0 e  e+ V  JBillServer
, @4 j7 h+ H' v" w; z  g8 V9 b !--MySQL database connection[mysql://user:passwd@host:port/dbName]--2 Z9 E3 y; r0 N( K* b
mysqlmysql://ztgame:yS29wahvCH@192.168.104.109:3306/Bill/mysql
& R$ X. i7 ?' s8 m& d% ~8 q& Vlogfilename/log/billserver.log/logfilename
: t5 A* |1 e- Q+ g" t/BillServer
& j" k4 X' f. r0 }' j: @BillClient! K/ }0 x1 x3 D0 U
!-- 交易记录log文件路径 --8 k0 L7 B/ B0 ]' `( U
tradelogfilename/log/clienttrade.log/tradelogfilename! C: w- Z: x5 O- m* \0 b$ i& L
/BillClient
, ?2 _! |, m4 f8 x3 z- c# m: xSessionServer' e( P6 v, Z) q; s4 H2 ?% p0 [
!--MySQL database connection[mysql://user:passwd@host:port/dbName]--
' w6 o# `% N5 M2 a: J mysqlmysql://ztgame:yS29wahvCH@192.168.104.109:3306/RecordServer/mysql/ k; x( Z$ V( M6 d( X
logfilename/log/sessionserver.log/logfilename
/ ^' J0 z9 a) H  idare_active_time3600/dare_active_time
+ I* R, S5 [1 z8 H. B' ^1 {5 S3 AofflineMsgPath/log/offlineMessages/offlineMsgPath
# {  G! w0 [1 q  G, |/SessionServer
& i+ e# @; B6 g/ f/ f. d( [ScenesServer( X* f) N( D( W6 r1 }: ~! \
sceneinfofilescenesinfo.xml/sceneinfofile% x3 b! e0 g7 d
npctradefilenpctrade.xml/npctradefile
/ k$ ^. o) C3 ~3 x: r8 R& I! w+ o messageSystemFilemessageSystem.xml/messageSystemFile+ i" X. W. v9 |- a
charinitinfoFileinitcharinfo.xml/charinitinfoFile
5 [3 G! X/ v8 b' y+ E- G- T* VmagicrangeFilemagicrangefile.xml/magicrangeFile
& A. Y9 X9 H3 h7 Q+ \  M9 uquestdirquest//questdir4 O/ i0 x9 R* S/ B4 T$ V  j
mapdirmap//mapdir
! |+ t+ q- a, p' F6 L tbldirmap//tbldir5 j; J# i& n) c* _4 h. Z1 C
gm_logfile/log/gm_log.log/gm_logfile
; p+ Y4 _1 b  h) A !--回写档案平率(单位是秒) --
: @" z' }) b' l, h5 D( @4 mwritebacktimer300/writebacktimer
5 f$ @3 u+ L& n* K9 ?# |$ Z2 Bossdir/log//ossdir
2 Y8 S) v  V, |* W6 I4 ?. j; ologfilename/log/scenesserver.log/logfilename
6 b: V/ x  [5 x/ScenesServer
6 s( i+ X3 G; j) |- o: h* a6 oGatewayServer
; F3 H5 @. Q+ A !-- 国家排序方式 0:不排序 , 1:在线人数排序 , 2:注册人数排序 --" M- b9 {/ B2 b& F" w; r- q' r
countryorder2/countryorder+ a# b/ [7 B/ t4 I4 s( e
logfilename/log/gatewayserver.log/logfilename
9 p7 a$ q  w/ p" `7 [ sceneinfofilescenesinfo.xml/sceneinfofile ) \2 U; i4 N( v& j
rolereg_verify1/rolereg_verify
5 ?  ?9 E6 P8 C# ` forbidWordsFileforbidWords/forbidWordsFile
! w% T' }  q: ~  n) P" v/GatewayServer2 [9 _# x0 g+ e# g  \7 P
/Zebra
5 N' ]* @" ~1 H" M注意存放日至的目录是否建立,以及建立session服务所要求的日志存放子目录offlineMessages。
3 T; {- Y% c; I- R9 r$ G  P8 q' g( n修改loginServerList.xml,填入平台中心的FLServer服务器ip以及端口。
/ O  z" o) F2 i; b例子:) O6 [' n" y# o$ W: p
?xml version=1.0 encoding=GB2312?
) _$ S, W- A  E# b( WLoginServerList9 S; A' q6 z* E* L: z# q
server ip=218.80.198.252 port=7001/
" c4 U8 t8 O6 c# V, [3 u* `4 h6 L" T' | server ip=210.22.188.20 port=7001/
* x$ `* i' v4 ^$ {# `5 m/LoginServerList
1 m6 c" K6 D' q' ~% r+ g3 `) a然后将修改好的版本传至其它9台服务器。并启动服务
  t6 N* X! ?; ^1 e7 W3 l+ C$ V* u六、服务器的启动,停止和更新
. I2 N! y0 A+ S# U" u+ z' i) g1、将运行脚本传至各个服务器。9 j  P$ V2 h( v
2、开启游戏服务, |6 W& j/ w  F9 }# M
通过ssh使用ztgame用户远程连接至第一台网关服务器,再通过网关服务器连接其他9台服务器,2 c) m! c% t) P4 j) v/ r
10个窗口内分别进入最新的服务端存放目录/home/ztgame/game200508**/release/6 V' s# E/ M, N
数据库服务器 启动服务./SuperServer -d 和 ./SessionServer -d 和 ./RecordServer -d 和 ./BillServer -d
- @: x9 {3 G4 _1 t. k+ ~场景服务器 启动服务./ScenesServer -d
  ?  o0 D9 h! @网关服务器 启动服务./GatewayServer -d4 t! [& F- K6 s
以上操作可以通过/home/ztgame/tools/allstart game200508**来启动(由于程序是后台运行,所以如发现程序运行时间过长,可以CTRL+c中断,并不影响程序的正常运行。)
# J- ], f- i0 [+ h' W( g9 X* E- B$ q; a0 G6 G
3、停止游戏服务
) T' I3 I6 U. S1 G. u3 B通过ssh使用ztgame用户远程连接至第一台网关服务器,运行/home/ztgame/tools/allstop,中止所有服务9 Y& ^+ u! u# o7 t& i
,此脚本是并不是强行杀进程,所以如果发现进程无法kill的情况,用/home/ztgame/tools/allstop_9来强行杀死进程。
+ [- L; R# k5 u  W* J9 o8 h9 Y  n9 v4、查看游戏服务
/ F( s( l1 v& x! u& U$ m5 u通过ssh使用ztgame用户远程连接至第一台网关服务器,运行/home/ztgame/tools/allview,查看所有服务运行状态。
  j2 j  U6 m5 O4 y  `& F; K8 f  @& O- L
5、更新游戏服务/ U* B% P3 i2 ~1 m: g
通过ssh使用ztgame用户远程连接至第一台网关服务器,再通过服务器连接其他9台服务器,
( X- L1 E7 D& e分别在/home/ztgame目录下面建立最新的服务端存放目录game200508**.
6 e0 y+ }  ^# M: O0 R8 g然后将服务器端安装包通过scp传到第一台网关服务器,在game200508**下解压。, D/ j6 E: F+ p+ A
tar jxvf zebra-release-*****0 M3 a7 o# P. N4 R; D
tar jxvf zebra-release-*****
* h; n7 K0 l( R2 F/ H/ n. W1 Qcp map release/ -rf
+ ^' Z0 w1 C- I% g+ e6 y; D7 f& G然后从上一个版本里拷贝出一些配置文件覆盖源文件& T8 u0 a3 D3 k, k/ q1 h$ }4 l: y
cp /home/ztgame/game_old/release/config.xml /home/ztgame/game_new/release/
' t8 X! l3 M; r& R! P9 Fcp /home/ztgame/game_old/release/loginServerList.xml /home/ztgame/game_new/release/
3 f. p2 ?+ V; E( tcp /home/ztgame/game_old/release/messageSystem.xml /home/ztgame/game_new/release/: @' |  J: @4 W* D5 V
以上工作准备好后就可以将网关服务器上的版本传到其他服务器
- F3 c) P" i$ }. J+ {scp -r /home/ztgame/game_new/* ztgame@192.168.100.111:/home/ztgame/game_new
' R% N: Q6 h4 G/ ?: q+ i% p以上操作可以通过shell脚本来实现
# B( q9 n; j& M+ g7 |" q/ l/home/ztgame/tools/installPackage game_new game-old2 I8 N6 `( [" a3 D( X% y
七、服务器数据的备份
9 A2 N' U/ H# S& p4 O1、数据备份8 ~2 K# V; V9 U% ?
为了防止意外情况的发生造成数据的丢失,关键数据或整个系统或对有选择的系统部分,在本地和异地进行定时备份,以保证系统全部或部分在灾害出现时也能持续运行。
5 i8 O2 y; D. N" W( u2、具体方案% y% u( z  N2 \
1)、数据库每日备份
5 I: h  T) q. r, J0 X5 u; L$ n: u 每天4:00,将RecordServer数据库拷贝至/root/back后进行压缩,然后上传至192.168.1.9服务器上,/root/back留有压缩版本
. J& D( B% S& v- Q/ U8 L: g; X 运行脚本/root/scripts/back.sh
  z% G! W( C8 c$ g例子:" |9 c. d  N& ?
#!/bin/bash
) e" U/ T4 _' K3 m# x! C; I; z2 Krm /root/back/RecordServer/* -rf& C; q; S( y- w! v: s  O% V
/usr/local/mysql/bin/mysqlhotcopy RecordServer /root/back/RecordServer -u ztgame -p yS29wahvCH
7 a5 I" N+ V8 @sleep 5& K! o) z. T4 b) n. p" a2 y5 N
cd /root/back8 d, S, z2 W# d; X9 m1 G9 H
tar zcf `hostname`-RecordServer`date +%Y%m%d`.tar.gz RecordServer0 i  [. Y1 G% W3 v; |. z8 v
sleep 5/ k* Y6 u3 q1 D/ d8 j$ H4 P! Y
echo tar ok!$ F. ]* N& m+ t
/usr/local/bin/ncftpput -u gamebak -p gamebak@ztgame 218.80.198.234 / /root/back/`hostname`-RecordServer`date +%Y%m%d`.tar.gz, h9 O1 l$ d5 W* q3 Y. O0 W
sleep 200 ?6 |5 g. k5 J+ J7 g$ p
echo upload RecordServer ok!: R: d3 S2 v4 ?+ w. W
2)、数据库即时备份
, H1 P' c" P( @8 \0 \$ G9 v( F. y每隔半小时,将RecordServer数据库拷贝至/root/back/hour目录进行备份,然后将压缩文件传给特定服务器。
1 Y9 k$ ~; D, v- ^" G( ]1 ]. y例子:0 J; c  Z/ A9 _5 J
#!/bin/bash3 z+ u0 Z/ E9 C: u% @
hottime=`date +%Y%m%d%H%M`0 x* D/ ^) I/ s! s( b2 y- S
mkdir /root/back/hour/RecordServer$hottime
( q/ b' P& ], W% o% V/usr/local/mysql/bin/mysqlhotcopy RecordServer /root/back/hour/RecordServer$hottime -u ztgame -p yS29wahvCH/ M) @, }5 D9 u$ `0 v* \) x
sleep 53 _% o* N$ [% e; S, h5 j
cd /root/back/hour! }) B% L5 K' T/ L! L4 n
tar zcf `hostname`-RecordServer$hottime.tar.gz RecordServer$hottime( \% N( A# J- C( a( N9 w
sleep 5# Y# P4 u4 S" q. F; C, ^8 g
echo tar ok!
4 P1 W* ?5 ?! Q3 P6 y, @$ U/usr/local/bin/ncftpput -u backupdb -p backupdb 192.168.102.119 / /root/back/hour/`hostname`-RecordServer$hottime.tar.gz8 m5 H" M" E9 A" y, Q8 Q8 [
sleep 20$ Z& m. I( ^% Y( W  q
echo upload RecordServer ok!$ m' o- m6 A& @& h0 T* W
rm `hostname`-RecordServer$hottime.tar.gz -f3 F" f# m; e' \7 c- y# z9 q# i
3)、日志备份: r8 n$ |* j! o  ^
每天02:00,将/log/下前一天的日志,进行压缩,然后上传至192.168.1.9服务器。2 |( y0 G7 O- ^8 t
运行脚本/root/scripts//upload_daily% ~& l" |# @+ J$ y  p
例子:
; t, d% F7 J0 v( h/ i5 B#!/bin/bash9 I! t6 n7 ]" x3 q* |, z  I& l9 z
cd /log/9 z: {7 T; [4 ]; t! a
mkdir log`date --date '1 days ago' +%Y%m%d`
( @* R! a. e$ e7 \/ Mmv *.log.`date --date '1 days ago' +%y%m%d`-* log`date --date '1 days ago' +%Y%m%d`' K1 u4 o) G" S# Z; B  I2 A
sleep 10
  J, S3 @! J2 p* W' m9 }% etar zcvf `hostname`-log`date --date '1 days ago' +%Y%m%d`.tar.gz log`date --date '1 days ago' +%Y%m%d`9 w  \( p0 }4 K4 M  ?
/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% E/ y) h+ v$ |. U
rm `hostname`-log`date --date '1 days ago' +%Y%m%d`.tar.gz
: X% u: S" I) G+ d& I4 V8 P* r  o注:计划任务通过/etc/crontab e来进行设置' J; f4 G. B. I+ V4 ~. i1 F1 s
4)、即时日志备份7 M8 [) n" y+ D  x5 q
直接运行/home/ztgame/tools/upload 将最新日志上传至192.168.1.9服务器,方便研发部门查看。
3 H8 c3 r! h# m 运行脚本/home/ztgame/tools/upload,(如果所有服务器的日志都需要上传,可以运行网关服务器上的/home/ztgame/tools/allupload)4 s& V3 T+ T1 y7 V' |

$ Z$ D; t) |8 ^$ k$ R# d% n; W================================外网架设===========================9 O' E* P. @$ p8 X, J  i1 u7 P7 o
重起完服务器,先要启动MySQL
( ?* s( M$ [/ w8 O  vsu - mysql -c mysqld_safe --skip-name-resolve --open-files-limit=4096/ G; g' R( D. `
cd /home/ztgame, |# Q  z4 A( ^: A- b
./SuperServer3 W: N8 _1 H7 _
./RecordServer. U0 [  S$ v$ a) R( z4 D  q6 g
./SessionServer
% @5 q6 B. U0 c' a9 [, Q' G./BillServer* x9 O  L) m/ G' i. O/ J
./MiniServer4 t; w& A3 X; o2 n7 T! j" N
./ScenesServer
4 M5 M) P: F' A3 l4 }$ T) G% i./ScenesServer
) R4 p5 q% V6 q./GatewayServer4 N0 T$ C( g, C- A3 I/ E
./GatewayServer# z7 @# c4 O* a9 @+ O
./GatewayServer
5 {5 p/ F9 y1 P& g重起服务器命令
/ G) d8 ]8 C' R' d) k% Breboot. E  X$ h1 z3 g# E# i9 h/ w8 X8 {
查找进程ID# r& w6 ?; d4 U; ?( ~
ps -x
5 ]' d9 g$ h8 H" X结束进程
1 H, n; T9 S# f7 _0 g9 v( P# bkill -9 进程ID! T* i$ J7 \1 i. c1 L2 w: o
3 Y" T  R1 g6 ]! E( n
================================内网架设===========================
' v, h6 N8 f4 e# u0 e首先 192装MYSQL 配置文件 config.xml 所有带帐号的都用内网 还有superserver port=10000125.89.63.7/superserver
$ V; z7 U& }( V. |然后 把数据库内serverlist 全设置成内网192的IP (有可能有几个得设置成另一台机器的内网IP): h* |2 U9 T7 u5 M4 ?
然后 把另一台机器装上数据库和服务端,执行:3 P& o) E3 L  ~3 x

$ E  G! T0 l8 W" D/ i; ?su - mysql -c mysqld_safe --skip-name-resolve --open-files-limit=4096  h% |4 W0 d7 ?( v+ p
cd /home/ztgame
, I" t; {: F5 P8 |8 w. M./SuperServer" a+ m  y6 s* m3 h$ D1 a. j5 c
./RecordServer
+ J9 s9 C% A- U4 ~./SessionServer' N2 J; |! k# @2 b
./BillServer
4 @/ W+ ^/ T9 R% C+ h3 j./MiniServer1 `' o4 q( Y9 b0 E0 M3 }7 p* a
./ScenesServer
: G5 Z6 E% H/ a  S3 g- U./ScenesServer' C- }% U, {/ \) C
./GatewayServer: \4 C( n/ k2 c' }1 R
./GatewayServer4 t+ s( D* P0 d; T* E  i$ y
./GatewayServer& {7 G  `  ]3 f
这样应该另一台机器就能运行了。
% F4 ]: r0 Y) G8 x& t* J5 U明天进行尝试,同样适用与一个IP架设(估计)) u7 k& G( r4 ^3 z( P
下载地址:
2008-8-18 16:07 上传
文件大小:
未知
下载次数:
0
下载权限:
版本vip会员
VIP专享 检测资源
有些游戏资源需要vip下载开通请点击开通vip
回复

使用道具 举报

全部回复0 显示全部楼层

发表回复

您需要登录后才可以回帖 登录 | 欢迎注册

本版积分规则

联系客服 关注微信 下载APP 返回顶部 返回列表