地方网

搜索

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

[复制链接]
admin 发表于 2008-8-18 16:07:57 | 显示全部楼层 |阅读模式
软件简介:6 z6 k" x8 Z" X, D! \# V2 V. n
服务器要求Intel 64位CPU 2G以上内存!本人测试一台INTEL 3.2CPU 2G内存服务器三个国家300人左右不卡!$ D, M% S# W, b7 d
此端差一个帐号管理程序,希望有能力的朋友研究出来!本版本为1.04完整官方征途服务端$ U7 Y2 `. ~  ^- I1 R* Q+ ^
游戏服务器注意事项8 p% F, n/ ]# ~5 C( E
一、硬件的安装
( I. i1 k; j. G0 w6 j1、保证服务器风扇正常转动。
  O) j& q' Q8 K* r( h0 n' \; s; E2、保证服务器各个提示灯是否正常。
* U  i, E# }+ M5 n7 f9 @+ M3、开机察看服务器有无报警情况。
- I) e+ V9 D/ d0 N: K4、开机察看服务器能否正常启动(不插鼠标键盘的情况下)
+ y1 b# {& ]! K$ i, k1 t/ o3 N二、系统的安装8 O+ E# B; J) ~
安装RHEL 4.02 [  I9 Q1 p+ G- L$ L& d; _8 e0 ?
选择自动分区。
3 p% X( I5 a1 U* y  Y0 `) ^分别给2块网卡配置ip,方便以后配置。
  E9 J' P( N" p- x" K不启用防火墙。$ \8 d5 v- n6 E5 ~2 z! [- p
增加中文语言包。
1 O" t" w6 E" L+ T- i: p9 h8 `选择软件包时,只选择开发包.
. ]" h* p1 j9 g$ u三、系统的简单设置+ O3 ?, w  j" B# L& A4 c+ E% z+ D
1、防火墙的简单设置:* h' @& E+ ^! ]0 a! y  z: n& ?
vi /etc/rc.d/forward
5 U( W- y7 C& r6 c% c5 p2 J. P+ _内容:
4 }. s  m" {5 D' i1 C5 r' V/ b- N#!/bin/bash
1 }, a7 O0 z! x6 o" |1 Z/sbin/iptables -F3 a4 q' ~. W* s2 N! k
/sbin/iptables -F -t nat+ Z0 i* K+ F. ?3 g7 C& D( z
/sbin/depmod -a
3 k0 q! N2 W; c/sbin/modprobe ip_tables# Q7 s4 V3 S: Q- z
/sbin/modprobe ip_conntrack
( B: \5 l3 w( K; x1 e0 x/sbin/modprobe ip_nat_ftp0 E* p& r! j; p
/sbin/modprobe ip_conntrack_ftp
2 z4 v1 W' D3 t" v5 {/sbin/iptables -A INPUT -m state --state ESTABLISHED,RELATED -j ACCEPT: U6 L0 I* r* H# w. J7 n3 o
#sshd
6 W9 {0 a; R# \- W% n4 p8 j; }/ ?/sbin/iptables -A INPUT -s 218.80.198.0/24 -p tcp -m state --state NEW -m tcp --dport 22 -j ACCEPT
$ S& e2 ^0 D, C3 o5 z: ?& s/sbin/iptables -A INPUT -s 192.168.0.0/16 -p tcp -m state --state NEW -m tcp --dport 22 -j ACCEPT, e. f  X5 d& w7 a
#ftp server
/ ]; P5 K& v8 w3 _3 v8 l#/sbin/iptables -A INPUT -p tcp -m state --state NEW -m tcp --dport 21 -j ACCEPT/ z5 x9 Q: v/ t& E
#/sbin/iptables -A INPUT -p tcp -m state --state NEW -m tcp --dport 80 -j ACCEPT
/ R' w( C" u1 i5 K  G+ m! z* b! A
! G( y9 ?2 |! V5 X0 e9 d& K/sbin/iptables -A INPUT -j DROP
/ A0 ]6 ^: `% _6 G( m$ n$ V" b保存后退出。
3 n" S3 @( N2 C: `* `) N1 ? chmod 744 /etc/rc.d/forward
5 c2 h1 l/ B+ k: l9 s1 y& q' ^ 然后运行防火墙脚本,以后根据需求修改脚本。4 J8 v& e4 ]/ |4 F8 |/ z
2、设置系统自动启动防火墙4 X8 N" _4 n$ r! R. a  F
vi /etc/rc.d/rc.local
9 U1 A( e( f$ o增加一行# q5 {! R$ f& p
/etc/rc.d/forward* F% Y3 H( T! [2 y# l$ y2 k3 H
保存后退出0 z* _: @. E, N( h$ C% a6 `1 W
3、设置文件打开数
2 w4 w+ A, i+ R4 @+ ~; \2 v1) 修改/etc/security/limits.conf 增加2行:
5 ^, k5 g, p  X4 C4 B. A7 L7 r: L* soft nofile 4096
6 q! c. P2 Y6 f" @8 w) y* hard nofile 65535
  X+ V- F) W! ?' O. P) V$ x+ F2) 修改/etc/pam.d/login 增加1行# R5 n  t3 l% a) T1 }
session required pam_limits.so4 K2 P% L) Y2 W, J* f8 q
可用:7 _( b! J; w1 {' j) n% M
echo * soft nofile 4096 /etc/security/limits.conf* f9 A! U# z) i' V4 s  K8 O9 S# y
echo * hard nofile 65535 /etc/security/limits.conf, W0 b! s1 }( q# U
echo session required pam_limits.so /etc/pam.d/login
9 W. ]5 }& k& n' X: J% K  K4、修改默认语言
8 d4 r4 @4 ?# L' M2 a" o( ` vi /etc/sysconfig/i18n 修改" N- K- F7 T5 C" h3 Q8 s
LANG=zh_CN.GB2312
" S/ a2 L: s& l6 P% H1 ^新建游戏运行用户ztgame,设置密码
  |0 D: E% s' ?. quseradd ztgame
) \8 k9 v, l( Tpasswd ztgame
* V% O2 @, m5 a5 z用ztgame用户登录服务器,修改vi /home/ztgame/.bash_profile增加一行
! j  N; o  m( B  Uulimit c unlimited
- e. x# s/ x# H9 ^0 X5 `* |& ~ 保存后退出。
/ v2 v1 r( ?8 o* m' a# h' o3 a四、游戏环境的搭建(按照4台网关服务器,5台场景服务器,1台数据库服务器的构架)3 e5 w! G% V. I/ i3 E& B
1、服务器IP设置3 k+ `4 W( y1 M, A0 U- F  [
4台网关服务器配置外网ip和内网ip,5台场景服务器和数据库服务器只配置内网ip,并且服务器默认网关为第一台网关服务器的内网ip。
. z) R8 c  ?! l; O服务器以服务器应用-序号-机房序号命名(例GWServer01-CHJ01)。
9 `' Z6 Q+ N% m% v5 T: M% S% o修改/etc/hosts。
9 F+ |9 I$ m8 O- j( r' T例子:
: }) x) ^! r$ I8 O- ^. N127.0.0.1 GWServer01-CHJ01 localhost.localdomain localhost! P6 q. x' D, I; o
192.168.100.101 GWServer02-CHJ01+ |+ m( q& ]& o$ W# R3 R
" y. H# ]/ x" O- `
192.168.100.104 ScenServer01-CHJ01/ x! k2 I+ T; w+ |2 @

( ?# u& U6 p: x; h0 w! H7 u: U192.168.100.109DBServer-CHJ01
# J2 |' x, d2 m& Z+ a1 u2、公钥的生成, r6 Q# m0 d* M. W
在ztgame的用户下登陆第一台网关服务器,输入ssh-keygen -t dsa' B" ~6 ]$ p' f) n' m
接受 ~/.ssh/id_dsa 的默认位置。输入一个与你的帐号口令不同的口令句,再输入一次来确认。公钥被写入 ~/.ssh/id_dsa.pub。密钥被写入 ~/.ssh/id_dsa。
6 Q) v% E5 s7 k. R2 T# g/ s6 H使用以下命令改变你的 .ssh 目录的许可权限:
9 e0 B- C/ r$ `7 V7 Ichmod 755 ~/.ssh
+ n0 k3 t7 ~& N7 r把 ~/.ssh/id_dsa.pub用scp命令传到其它剩余9台服务器
4 m* q- S+ {8 o! z2 ^scp~/.ssh/id_dsa.pub ztgame@192.168.102.108:~/.ssh/authorized_keys
7 l7 Z3 E' B0 F' t" Z在其它9台服务器下使用以下命令改变你的 authorized_keys 文件的许可权限:
' G) _0 A* B' F' \chmod 755 ~/.ssh4 J' J. L2 V6 Z
chmod 644 ~/.ssh/authorized_keys: ~. g" G! f; `" @+ o) E2 e  U% m& m
3、数据库服务器的安装
! i& y4 X! p" c6 m( b# q0 ?#首先确定你是root用户7 N- B3 z0 o7 s+ {
获得mysql-4.1.*.tar包,用tar zxvf mysql-4.1.*tar解开压缩包,然后进入mysql-4.1.*目录' K/ q6 }" P$ \2 X
#根据体统类型选择编译方式( m  O4 ]9 O2 ?3 l! T6 d! r
#i386体系结构的/ T7 c' w7 P5 a/ g
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( C! Q' X& \1 y3 Q  N6 O
#64位系统,x86_64
# M; S7 C4 k( s" C, vCFLAGS=-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
  {# Q+ A, B$ s  Q# \- l#然后根据CPU数量进行编译
1 C' i2 j. n% r, H; ^make -j 4 PATH=\/usr/local/mysql/bin:\$PATH\  /etc/profile /usr/local/mysql/bin:$PATH
3 E: I' q& F, h#strip可执行文件
7 u  r% S1 G% X# c" M/ Vstrip /usr/local/mysql/libexec/mysqld
0 @8 O: q9 Q; k1 v  U) Q; @: h! K+ U#添加LIB PATH* C, e1 ?- A. e$ z4 x( H- ^
echo /usr/local/mysql/lib  /etc/ld.so.conf mysql_install_db
1 B3 ?- ^0 s7 r; n  {#启动服务器
: r, |% v4 y* x) r0 csu - mysql -c mysqld_safe --skip-name-resolve --open-files-limit=4096
( `$ x' d1 J& i+ G6 R2 @6 \#创建数据库和用户
: X7 [. I2 R& s* L( jGRANT ALL PRIVILEGES ON *.* TO ztgame@'192.168.1.%' IDENTIFIED BY '' WITH GRANT OPTION;0 _8 g, R. K5 T0 S% w+ S
GRANT ALL PRIVILEGES ON *.* TO ztgame@'localhost' IDENTIFIED BY '' WITH GRANT OPTION;
4 V3 M& x$ X0 yGRANT ALL PRIVILEGES ON *.* TO ztgame@'222.212.121.119' IDENTIFIED BY '' WITH GRANT OPTION;
  g! U6 P0 u0 L, eGRANT ALL PRIVILEGES ON *.* TO ztgame@'222.212.121.119' IDENTIFIED BY '' WITH GRANT OPTION;
3 Y: Z, q$ @8 q8 \4 V( w4、数据库配置% c' ~3 _1 f3 g2 z# m
用mysql进入,然后用create database dbname创建数据库。分别创建SuperServer、RecordServer、Bill数据库,然后用安装包目录下的*.sql的文件建立相应的表。(SessionServer.sql也导入到RecordServer库中)。4 ~2 s  V$ U7 y
在SuperServer数据库SERVERLIST表内添加服务器配置信息。
) E% P+ W2 c# _  {. K& t例子:# ?: c2 B, Q' v, R* p; n
INSERT INTO `SERVERLIST` VALUES (1,1,'SuperServer','192.168.1.130',10000,'192.168.1.130',10000);6 x8 L6 h( f; B! L7 S/ g- z# w
INSERT INTO `SERVERLIST` VALUES(20,20,'SessionServer','192.168.1.130',6000,'192.168.1.130',6000);
) [6 m# B: c9 n* TINSERT INTO `SERVERLIST` VALUES(21,21,'SceneServer','192.168.1.130',6010,'192.168.1.130',6010);
2 I$ ~+ w& \/ z* s1 T- Y; U4 k4 |INSERT INTO `SERVERLIST` VALUES(22,21,'SceneServer','192.168.1.130',6011,'192.168.1.130',6011);0 }8 D) b) s# T8 k, p
INSERT INTO `SERVERLIST` VALUES(23,21,'SceneServer','192.168.1.130',6012,'192.168.1.130',6012);
* N# G* O9 k! U3 C0 X3 a- _' MINSERT INTO `SERVERLIST` VALUES(24,21,'SceneServer','192.168.1.130',6013,'192.168.1.130',6013);9 f* a6 P+ T3 n; n" {- ^& d
INSERT INTO `SERVERLIST` VALUES(25,21,'SceneServer','192.168.1.130',6014,'192.168.1.130',6014);9 U0 X: t) I  U; j9 ~' d  [0 s
INSERT INTO `SERVERLIST` VALUES(2200,22,'GatewayServer','192.168.1.130',6020,'192.168.1.130',6020);
- ]. q, z! d( k6 Z6 Z' fINSERT INTO `SERVERLIST` VALUES(2201,22,'GatewayServer','192.168.1.130',6020,'192.168.1.130',6020);0 p) o7 s( n( v* D
INSERT INTO `SERVERLIST` VALUES(2202,22,'GatewayServer','192.168.1.130',6020,'192.168.1.130',6020);
' ^$ a5 \& T& x3 cINSERT INTO `SERVERLIST` VALUES(2203,22,'GatewayServer','192.168.1.130',6020,'192.168.1.130',6020);1 k; j4 j1 V+ f3 S
INSERT INTO `SERVERLIST` VALUES(11,11,'RecordServer','192.168.1.130',7010,'192.168.1.130',7010);, q! v! n$ C( X( a+ x0 S
INSERT INTO `SERVERLIST` VALUES(12,12,'BillServer','192.168.1.130',7020,'192.168.1.130',7020);
6 I/ M' C6 C% d% b0 U数据库服务器上跑SuperServer、SessionServer、RecordServer、BillServer四个服务,4个网关服务器分别跑4个网关服务,5个场景服务器分别跑5个场景服务。场景服务器对应的ID就是国家配置的ID号,这个ID号决定场景服务器上面跑几个国家。( ~$ `$ e. ~; ?/ ~
五、服务端的配置和安装! h: F# l: x% x1 y8 }
1、获得安装包:7 ~# L5 `% @2 @% S9 Y/ f
release-version.tar.bz20 b% u: z6 G) m
map-version.tar.bz2' p* w& Z' {+ `5 F" M' E; ?
在/home/ztgame下建立以时间为名字的目录(game20050928),压缩包放入此目录,然后用tar jxvf release-version.tar.bz2 和tar jxvf map-version.tar.bz2解开压缩包
* K/ ~2 N1 w& K进入release目录,cp rf ../map .
3 p* D' T# V0 ]" \9 i  w1 R按照config.xml.example格式创建文件config.xml2 U! G7 H7 N0 v- V) m& w) E' }
配置文件主要定义了服务器的各种参数:+ Z0 h0 ^; p( c1 {3 r8 Q% Y
[global]这段主要定义了通用参数,如服务器本地网络设备名称,扩展网络设备名称,日志级别,SuperServer的服务器地址,端口等参数。
" @6 M& o: t$ {9 q. l% ^其他各个段定义了具体的服务参数,主要是指定该服务对应的数据库,数据库的连接地址,端口,用户名,密码等数据库连接字符串。每个服务可以定义日志文件的存放位置,如果没有指定,缺省放置在/tmp/目录下面。
6 a/ M9 h5 h$ v$ V如SuperServer服务
  C' E. `4 l8 {" ^+ W; C2 fSuperServer2 E8 b3 {2 a( [0 |- m. J* U8 l" j# _
!--MySQL database connection[mysql://user:passwd@host:port/dbName]--) h: T: q; ?8 B6 j3 o0 W! q
mysqlmysql://test:123456@192.168.2.14:3306/SuperServer/mysql
! j2 U  R7 f" n  W/ [5 `/ g logfilename/home/test/tmp/superserver.log/logfilename) s! L! p# b8 y; \
/SuperServer
' O2 D& `/ _1 f5 X8 a3 B. s: B; F上面配置指明SuperServer服务,采用连接串用户名test,密码123456,访问192.168.2.14服务器上3306端口下SuperServer数据库,日志文件存放在/home/test目录下。其他服务配置类似。
4 Q1 d( c, w3 y$ p例子:- P' c: A2 w5 G# \
?xml version=1.0 encoding=GB2312?
% q, W, E) h5 r. F. j# j( Z!--所有各种服务器参数--
9 l. v' L, t+ X1 u0 F. q( O; XZebra
1 Y4 a$ j1 A2 t4 Gglobal+ e' G' P9 z( m! K5 L  `' F$ b1 Q
!-- Specify the log level[debug,info,warning,error,fatal,always]. --
3 A4 l, \/ L% Q/ K" z# rlogdebug/log0 i: _8 c4 ~8 F  S  f/ b+ U7 D
!--MySQL database connection[mysql://user:passwd@host:port/dbName]--
" \0 M) ]& E# W! n4 j; G!-- Use the specified local network device. --/ P4 o$ b8 E! U% [/ j
ifnameeth0/ifname
, g5 X; `1 L; L$ Q: y7 k. d* O!-- Connected to the specified supserserver, property 'port' default value is 10000. --
6 _2 {6 {9 d# f- tsuperserver port=10000192.168.104.109/superserver. `" b5 V5 A# R+ h, C
/global
5 U5 C9 h% R/ z* zSuperServer2 z& `1 G5 ]' F8 G( E1 b
!-- 统一用户平台登陆服务器列表文件 --) F! q" I# `: \- J
loginServerListFileloginServerList.xml/loginServerListFile. {' e$ }1 Z+ R5 ]
!-- 角色名称唯一性验证服务器的地址 --# G* e" Q. u- ]+ f3 D. [7 A
RoleregServer port=9901218.80.198.252/RoleregServer; v7 x5 `) w# n  o) u3 C& K3 F
!-- 服务器信息采集的服务器地址 --
9 p2 \! n8 z2 l- C; F5 c InfoServer port=9903218.80.198.252/InfoServer6 \& [  X; c9 h' f8 e  {: s! F
!--MySQL database connection[mysql://user:passwd@host:port/dbName]--( ]. V$ ~$ S" E0 X" {, j$ \
mysqlmysql://ztgame:yS29wahvCH@192.168.104.109:3306/SuperServer/mysql
+ P- Q5 P# `' I8 M2 r& M  q3 ] !-- 如果要编码mysql连接字符串请使用工具,配置如下面的例子! C/ s& i4 x; J6 H) @' P+ [6 X
mysql encode=yeslmOf.1kySwS0a09j11xyCdI1ySujl1hnCvT0hDitT0hjzv00gzSv00gDSw91tS9fE1/mysql
1 N5 o: T8 k2 J --3 W; J6 W' q6 m0 F1 E2 G; {
logfilename/log/superserver.log/logfilename
. @) f/ S% A9 C9 m5 f6 j, ` /SuperServer) v& y5 \/ ?* {  n# z6 _+ r, X
RecordServer
. B9 y; X/ d# i* ^!--MySQL database connection[mysql://user:passwd@host:port/dbName]--' C2 v  d, T, n  F
mysqlmysql://ztgame:yS29wahvCH@192.168.104.109:3306/RecordServer/mysql
* G9 s+ k5 w: T% w5 y( Vlogfilename/log/recordserver.log/logfilename
, d5 B" i3 T; h4 v/RecordServer
; P3 k$ `  ]& i! k; u8 gBillServer
; o, [$ i4 W1 o3 D- u' Y$ c !--MySQL database connection[mysql://user:passwd@host:port/dbName]--8 B3 ~$ @0 n' O; D* [& i
mysqlmysql://ztgame:yS29wahvCH@192.168.104.109:3306/Bill/mysql5 |5 K( h5 `0 [) Y! T
logfilename/log/billserver.log/logfilename/ y6 S- `4 S5 @4 z: |# m) T/ m
/BillServer
' |; h4 ]2 ~' v6 a+ cBillClient6 n( d& h9 {8 D6 `/ D
!-- 交易记录log文件路径 --9 l; h7 C- ~4 h
tradelogfilename/log/clienttrade.log/tradelogfilename! s; g) q2 Q9 b) H8 z
/BillClient
# p* _2 K8 ?# T+ U( x5 ZSessionServer. d5 e4 V' J2 f8 n* Y# C2 _
!--MySQL database connection[mysql://user:passwd@host:port/dbName]--6 o% s- I9 ]( v8 C. C0 p1 M( z0 W- |3 R
mysqlmysql://ztgame:yS29wahvCH@192.168.104.109:3306/RecordServer/mysql
8 Q. |6 B% _' `8 a8 |. l+ {3 Flogfilename/log/sessionserver.log/logfilename. i& r8 y2 I5 ~& H
dare_active_time3600/dare_active_time+ w1 `" S2 G# B  p, X, ?
offlineMsgPath/log/offlineMessages/offlineMsgPath# L" P/ C- G7 n! _3 t- N; W  |
/SessionServer5 [& H; {' a9 z, \
ScenesServer
+ u; h+ g0 k0 g. Dsceneinfofilescenesinfo.xml/sceneinfofile. M, f% O( z0 S* I
npctradefilenpctrade.xml/npctradefile
' @3 s1 u, b/ i$ U# |7 ] messageSystemFilemessageSystem.xml/messageSystemFile) X. v5 Z$ H5 L2 w1 H
charinitinfoFileinitcharinfo.xml/charinitinfoFile
/ j) c7 V8 n! j5 umagicrangeFilemagicrangefile.xml/magicrangeFile
6 p$ _3 s2 }5 s6 T# D8 Tquestdirquest//questdir
" M; Z2 N7 @) M' S  `9 |" p mapdirmap//mapdir* X" x( A1 y# |; b2 [: m* {: a+ F
tbldirmap//tbldir6 J2 m4 {0 a; r6 R1 h4 W
gm_logfile/log/gm_log.log/gm_logfile
/ v' W: E( Y. C9 Z, S& \6 M; F !--回写档案平率(单位是秒) --+ s" C# ~4 ~2 N& z( e9 x) a
writebacktimer300/writebacktimer
4 @; q/ D" n# S! m7 rossdir/log//ossdir2 m. |" C  z! x' W$ R# |4 h
logfilename/log/scenesserver.log/logfilename 6 e  s; D: t6 m  {
/ScenesServer& c- T7 Q+ K8 V/ |/ x
GatewayServer
$ l! o" t+ G$ w- c* ^7 b !-- 国家排序方式 0:不排序 , 1:在线人数排序 , 2:注册人数排序 --
- c7 e) m: G, U  u8 v countryorder2/countryorder# N% h) q2 t( |6 A9 _4 @. `
logfilename/log/gatewayserver.log/logfilename
# @: r$ X! _1 ^; h% y& T sceneinfofilescenesinfo.xml/sceneinfofile ( H, a# Y. ~5 ?" U' [
rolereg_verify1/rolereg_verify* E$ o8 M; T9 T
forbidWordsFileforbidWords/forbidWordsFile, i8 {, W5 z, h
/GatewayServer
6 y" U% N! w4 @+ {/Zebra
& ^: S8 m6 Z: W, A0 H注意存放日至的目录是否建立,以及建立session服务所要求的日志存放子目录offlineMessages。1 e1 B* N; e$ l1 A$ K+ ~6 Z# s
修改loginServerList.xml,填入平台中心的FLServer服务器ip以及端口。
% O# P* w1 {/ z例子:
/ k9 c0 b# r5 `% C  r?xml version=1.0 encoding=GB2312?5 v/ L  m. g$ o% w
LoginServerList
& W' k3 U! q) s- R server ip=218.80.198.252 port=7001/7 L- \( r" E. }0 o$ ]) S
server ip=210.22.188.20 port=7001/   {  t8 i: h3 F0 L
/LoginServerList$ O% W# A+ n6 R4 o" r1 t( G
然后将修改好的版本传至其它9台服务器。并启动服务
- C+ }; n& S, R  S$ u3 F六、服务器的启动,停止和更新5 y4 Z0 O1 u! ~
1、将运行脚本传至各个服务器。
+ B# u3 w2 N- M8 `* g7 e! X2、开启游戏服务. Z. N) N% m6 S+ T/ ~
通过ssh使用ztgame用户远程连接至第一台网关服务器,再通过网关服务器连接其他9台服务器,8 i: V$ q( G6 _" ^6 @
10个窗口内分别进入最新的服务端存放目录/home/ztgame/game200508**/release/
4 C* E3 M1 O% M+ M数据库服务器 启动服务./SuperServer -d 和 ./SessionServer -d 和 ./RecordServer -d 和 ./BillServer -d
. z% o% `: ?  o' m5 Y) A* S场景服务器 启动服务./ScenesServer -d
1 K2 Y2 n6 [" P9 @网关服务器 启动服务./GatewayServer -d( _2 }2 t+ Z! z3 p; d9 o
以上操作可以通过/home/ztgame/tools/allstart game200508**来启动(由于程序是后台运行,所以如发现程序运行时间过长,可以CTRL+c中断,并不影响程序的正常运行。)  O! n4 Z) _7 N) ^0 n0 ~

/ y: m0 {! L0 j- k% P3、停止游戏服务# N: I* o5 J" |7 o
通过ssh使用ztgame用户远程连接至第一台网关服务器,运行/home/ztgame/tools/allstop,中止所有服务
3 Q* f7 ~& j1 m% P,此脚本是并不是强行杀进程,所以如果发现进程无法kill的情况,用/home/ztgame/tools/allstop_9来强行杀死进程。
" Q* Q; X9 Q$ I( I0 _5 Z4、查看游戏服务
" d0 `/ [9 L2 |% Y$ @1 E- [通过ssh使用ztgame用户远程连接至第一台网关服务器,运行/home/ztgame/tools/allview,查看所有服务运行状态。
6 ~- `8 }" R3 m0 B
# `: e4 f/ ^% Z; P5、更新游戏服务
4 z" W; J2 T4 H/ P) x3 o: k1 J' D( O5 l. w通过ssh使用ztgame用户远程连接至第一台网关服务器,再通过服务器连接其他9台服务器,
, d0 f' r. P. {* ]; Y5 {7 Q0 e分别在/home/ztgame目录下面建立最新的服务端存放目录game200508**.$ h4 e" n  g$ u; E- N! H8 d4 G  r- w  g
然后将服务器端安装包通过scp传到第一台网关服务器,在game200508**下解压。& V/ B) Z8 \6 Y! ^$ }
tar jxvf zebra-release-*****
* g) S/ i! b: F' ^, Dtar jxvf zebra-release-*****
1 u/ |' K1 p# c1 F, ecp map release/ -rf
4 U7 Z" R7 B! G$ l然后从上一个版本里拷贝出一些配置文件覆盖源文件
: O! ?4 `9 M  Q2 V- t7 _! A. Fcp /home/ztgame/game_old/release/config.xml /home/ztgame/game_new/release/7 N8 y* O* Y$ Z( [1 J% h
cp /home/ztgame/game_old/release/loginServerList.xml /home/ztgame/game_new/release/
2 Z# B; [( H# `; ocp /home/ztgame/game_old/release/messageSystem.xml /home/ztgame/game_new/release/5 g8 L, P, J* D5 ?
以上工作准备好后就可以将网关服务器上的版本传到其他服务器
/ ^  {4 R. \$ G0 W7 G* t+ ?scp -r /home/ztgame/game_new/* ztgame@192.168.100.111:/home/ztgame/game_new' S$ I" R1 G- A" I
以上操作可以通过shell脚本来实现
, b, c. M- T, G9 J5 U0 e6 d, s3 {/home/ztgame/tools/installPackage game_new game-old
: n1 A( ?$ C! J, s5 Q4 P3 R* O  ^( M" V七、服务器数据的备份
5 U8 }) a& y# l1、数据备份, D0 u* I5 z& _$ Z+ j
为了防止意外情况的发生造成数据的丢失,关键数据或整个系统或对有选择的系统部分,在本地和异地进行定时备份,以保证系统全部或部分在灾害出现时也能持续运行。
, `8 B# K1 w8 n- c' m2、具体方案
, x* H$ O3 i4 j; F* `! f" l  l8 g1)、数据库每日备份' R$ a9 X' K5 ^# S. }- }4 G
每天4:00,将RecordServer数据库拷贝至/root/back后进行压缩,然后上传至192.168.1.9服务器上,/root/back留有压缩版本
- y( m- ^. j+ J* N 运行脚本/root/scripts/back.sh
9 g; y* R! A- W. V: E例子:; x$ R  I; J# C3 C5 [7 ^- G% Z
#!/bin/bash
" ]  q% f1 t* X% wrm /root/back/RecordServer/* -rf& q+ c& g7 U. ~( s, W: P$ M/ }
/usr/local/mysql/bin/mysqlhotcopy RecordServer /root/back/RecordServer -u ztgame -p yS29wahvCH' q: I9 K' c9 s' j. N# s
sleep 5. X; {1 O  q5 s
cd /root/back: y" Z  D8 j' s8 e, i
tar zcf `hostname`-RecordServer`date +%Y%m%d`.tar.gz RecordServer' r+ o8 A4 u8 l# s4 U
sleep 5
0 M2 N+ h: ^+ ?' L, Necho tar ok!
2 [7 @6 |2 q' E* {# t/usr/local/bin/ncftpput -u gamebak -p gamebak@ztgame 218.80.198.234 / /root/back/`hostname`-RecordServer`date +%Y%m%d`.tar.gz
0 `3 z  H0 O) n4 J5 csleep 20
; K9 y  g5 {$ }echo upload RecordServer ok!1 L# T$ `( o4 h
2)、数据库即时备份
# w" q9 `- v7 J" m每隔半小时,将RecordServer数据库拷贝至/root/back/hour目录进行备份,然后将压缩文件传给特定服务器。
$ C# ^: V& j4 O! C例子:
  |  x! Y9 M* l1 ?" [9 ?#!/bin/bash
+ h9 E0 i& j! Fhottime=`date +%Y%m%d%H%M`
4 T) K8 Z* t) A% p6 Smkdir /root/back/hour/RecordServer$hottime
/ ], J4 E( u* K5 z# u/usr/local/mysql/bin/mysqlhotcopy RecordServer /root/back/hour/RecordServer$hottime -u ztgame -p yS29wahvCH
8 W+ A: a) K% v0 m" f: k$ Dsleep 5
  ~; ^) N+ B# U* U; v* v6 F0 bcd /root/back/hour
: o' y1 \0 l, I8 Q' E8 ltar zcf `hostname`-RecordServer$hottime.tar.gz RecordServer$hottime0 Z  _, k, _2 u4 S4 p
sleep 5) J7 e: {. V1 V, r/ L+ c: g
echo tar ok!
" A; F8 v' @* P* I; @/usr/local/bin/ncftpput -u backupdb -p backupdb 192.168.102.119 / /root/back/hour/`hostname`-RecordServer$hottime.tar.gz
8 R3 R- N* @% Q& R5 ~- psleep 20+ m  z2 F! Y( G' j: n6 @
echo upload RecordServer ok!) L3 p  Q! c3 I, T9 p
rm `hostname`-RecordServer$hottime.tar.gz -f' c( @- K8 u1 u7 Y$ _/ x- @5 f
3)、日志备份
, u7 x' R+ L0 Y& W 每天02:00,将/log/下前一天的日志,进行压缩,然后上传至192.168.1.9服务器。* R/ h' \: g. l$ p5 M0 h% R
运行脚本/root/scripts//upload_daily
' X1 C- a$ l: ~$ X, I- n例子:
; E" g  }  c1 @/ e( |9 l#!/bin/bash# T' E0 {5 F8 c- ^
cd /log/
# ?: C+ J% B& {* Z8 n1 cmkdir log`date --date '1 days ago' +%Y%m%d`
, l/ \) F9 y5 X2 b7 ?mv *.log.`date --date '1 days ago' +%y%m%d`-* log`date --date '1 days ago' +%Y%m%d`/ y) n! k! V% P  Z
sleep 103 S3 U( ?: }' M
tar zcvf `hostname`-log`date --date '1 days ago' +%Y%m%d`.tar.gz log`date --date '1 days ago' +%Y%m%d`
$ ~" y* l- s; l3 Z1 R* Z/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) d7 B  B; y" d
rm `hostname`-log`date --date '1 days ago' +%Y%m%d`.tar.gz
0 [! a: o8 `, X: o& O0 z注:计划任务通过/etc/crontab e来进行设置
6 v: }2 K* ]3 v* g  c7 E- l6 l4)、即时日志备份
. }  q; Q8 K9 E3 w1 u, a7 T" j 直接运行/home/ztgame/tools/upload 将最新日志上传至192.168.1.9服务器,方便研发部门查看。
6 N+ |+ E# t) v9 i+ K 运行脚本/home/ztgame/tools/upload,(如果所有服务器的日志都需要上传,可以运行网关服务器上的/home/ztgame/tools/allupload)
4 Y" A1 X+ L; O) x- V
3 n/ U" U* k( F. W  S================================外网架设===========================, M5 e  {; s) O9 R" d# v$ I
重起完服务器,先要启动MySQL
1 ^6 ?2 G! p& _6 Z) B- G8 n& Zsu - mysql -c mysqld_safe --skip-name-resolve --open-files-limit=4096
2 Y# e4 C. ]( a0 I) Vcd /home/ztgame/ v2 v1 Q/ Y! f$ e5 b: q
./SuperServer
8 O# e& F- Y# w& w2 F; T./RecordServer4 k1 S, h  [3 T6 z2 G
./SessionServer
9 ~7 j4 `! @& @6 D./BillServer
/ k# V+ b- F& ^$ Z4 a./MiniServer
& C1 r# N6 b  A2 s  C+ C- @" s./ScenesServer/ m3 M, `+ e1 }- i6 R
./ScenesServer- V+ m$ i8 C- \; X( Y9 G/ h' ?
./GatewayServer) g0 d! ^* n3 p3 ]: p& _" n# B
./GatewayServer
2 I, b5 e, B$ |3 r./GatewayServer
6 ^" v. {. Z; G2 F3 v重起服务器命令
; W6 }  l$ d' s3 breboot! k% I$ Z! y9 ^# p( ]8 w; Z
查找进程ID6 `# S- L2 M* w! h. D9 i, `. W
ps -x0 @- E' b! L. X  l* y; L+ [+ G
结束进程
0 X( e! S, W) S7 F0 Q  n: qkill -9 进程ID
0 y* V( m  m& m( L
2 E# c- a  o3 d# x6 a% s! K================================内网架设===========================7 a+ L7 P0 W/ z4 f* B
首先 192装MYSQL 配置文件 config.xml 所有带帐号的都用内网 还有superserver port=10000125.89.63.7/superserver
$ l% i$ ^- S- R然后 把数据库内serverlist 全设置成内网192的IP (有可能有几个得设置成另一台机器的内网IP)' ^; T+ I( Z6 j5 h" F8 Q- Q% I9 c/ T; [
然后 把另一台机器装上数据库和服务端,执行:" U7 k: b9 X% \3 h3 v2 W
3 }2 x) D8 W1 y7 z$ {  m8 h2 {+ ^  Q
su - mysql -c mysqld_safe --skip-name-resolve --open-files-limit=4096
6 f* O% z" |+ M& @1 w* }cd /home/ztgame
6 f5 S3 p# B# S8 W./SuperServer9 U' j3 ]. e" ]" a1 P- i; M
./RecordServer
- |& R6 u1 L9 K./SessionServer
& R, Q0 a7 a* m/ j./BillServer
( c; f# f8 Q. u( l/ Z" @4 h: n) `./MiniServer9 |( M4 n- p' W& o0 r4 F- J* o
./ScenesServer& n3 _1 [6 B- l; C3 n; H
./ScenesServer$ K* t" F% o3 n/ v
./GatewayServer
; b+ }" ^( k  D& |./GatewayServer! r9 \" K, F/ ]/ m5 {: Q& h
./GatewayServer
$ ?" }' w2 L/ b- Z这样应该另一台机器就能运行了。
8 l+ ?# O# N7 a! N0 u: ]明天进行尝试,同样适用与一个IP架设(估计)  R5 C- n; o, J+ `/ z
下载地址:
2008-8-18 16:07 上传
下载权限:
版本vip会员
本地下载 检测资源   提取码: 需要终身vip或更高权限
有些游戏资源需要vip下载开通请点击开通vip
回复

使用道具 举报

全部回复0 显示全部楼层

发表回复

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

本版积分规则

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