软件简介:) r0 [$ c q3 Z# V
【完美世界】 架设教程
2 V, P, R: u4 N$ ]( y3 G: ZAU服务器的安装配置
; [! z; A: h/ @/ S y( jhttp://www.haosfwm.com+ a% g" M' v$ H4 s% L
1.Java环境安装配置) P I7 `0 z9 m; z0 B* P
AU的 manager和auth机器需要安装java环境。
! y; d" F4 P, ] 将java.tar.gz解压至/usr/目录下,编辑/root/.bash_profile,(参见bash_profile)加入以下几行:( e" p! _% r" F. y: w ^
PATH=$PATH:/usr/java/jdk1.5.0_05/bin/ y+ O6 N* G% P* Q& y
export CLASSPATH=.:/usr/java/jdk1.5.0_05/lib/dt.jar:/usr/java/jdk1.5.0_05/lib/tools.jar ^; w+ m R. \" ]
export JAVA_HOME=/usr/java/jdk1.5.0_05% L$ V; L, J& O$ W0 }1 @
8 m' q7 x# j) J- p7 D 安装au database需要的JDBC库,并将库文件加入到/root/.bash_profile中的CLASSPATH配置项中。
% A3 P& k8 _+ t' X+ P2.CA认证配置和hostname-ip配置
: ^3 A. C: w0 u. h: M 将ssl.tar.gz 解压至manager:/etc/目录下。
) c4 H/ x" R+ H9 J1 n& l7 E9 }9 K! h% ^# u " j: y# }. R- s' Z; v
在/etc/hosts文件加入一行:
3 H. _! D4 P; i# r# W% i, }) P aumanager_ipaddress aumanager- o( e, b6 o+ ~
其中aumanager_ipaddress为aumanager的内部IP地址。' g0 U3 F$ O" ]/ r
* X. g j/ a2 @ j6 P7 f 修改manager:/export/auth/etc/hosts,和auth:/etc/hosts,加入一行:
: U1 c' E0 t5 d: e7 f9 t aumanager_ipaddress manager
2 L$ w0 N, T8 U a* F: a0 j! [ 其中aumanager_ipaddress为aumanager的内部IP地址。: @8 X; ^$ Z. M/ ~
3.帐号数据库的创建
* p7 s Z3 i) c; T0 U% h& C4 g 创建帐号数据库,根据mssql_table.sql和mssql_storeprocedure.sql示例文件创建数据库表和存储过程。* k7 L6 @7 j+ U6 y' B3 X
4.配置文件修改- i- P& P. c4 |+ f; K8 N# O
修改好table.xml文件中关于帐号数据库连接的部分。将修改好的table.xml复制到manager:/etc/目录,/export/auth/etc/目录和auth:/etc/目录下。
4 B5 c/ ?. ^2 M" a! R 修改gmopgen.xml文件中关于各游戏服务器的属性。将修改好的gmopgen.xml复制到manager:/etc/目录下。 (/etc/gmopgen.xml是服务器列表配置文件,该文件需要根据游戏服务器的增添来添加和修改XML中的zone项,必须准确填写id(服务器ID,唯一标识该服务器,与游戏服务器中gdeliveryd的相应设置要一样),aid(计费区ID,与游戏服务器中gdeliveryd的相应设置要一样,一般情况下,免费版所有服务器都使用同一个计费区ID),name(服务器名称),url(访问游戏服务器对外接口的webservice url)四个属性。)9 d. ]7 C5 h" o0 j7 k+ W [1 ^
将authd.conf文件复制到/export/auth/etc/目录和auth:/etc/目录下。2 j- A7 {0 U R- s
将GMServer.conf文件修改相应IP配置信息和密钥配置信息后,复制到manager:/etc/目录下。; d" I& D. V/ [1 [
5.Authd服务安装启动
6 T+ s' v% C. o+ P% d 解压cauthd.tar.gz至auth:/root/目录,进入cauthd/build目录,确认java环境配置正常,后台运行
( ^( `; _: ]$ e9 d! f #./authd antp命令,查看java进程是否在LISTEN 29200端口,该端口会接收来自各游戏服务器delivery的连接。查看java进程是否有到数据库机器的连接,示例中对于MSSQL Server的缺省配置,应该有1433端口的连接。9 q! X0 e4 J$ J0 C F4 F
2)在manager机器上查看/export/logs/world2.syslog该文件为auth机器上的authd的日志输出。正常工作时,如果该文件没有变动,说明日志没有传输过来,需要检查cauthd/build/log4j.properties配置文件,auth机器能否解析manager的ip,auth和manager的syslog是否工作正常。
! j; [9 t0 y- }8 S 3)查看tomcat的输出文件/usr/local/jakarta-tomcat-5.5.9/logs/catalina.out,看是否正常工作,tomcat中工程重要的日志信息会被同时输出到/export/logs/world2.java文件中。查看该日志文件是否工作正常。
' J6 g0 Q/ ^# Z3 u' x 4)访问https://aumanager-ipaddress/monitor页面,测试各项功能是否正常。
) P8 g* C! M# [* r 5)配置logrotate。编辑manager:/etc/logrotate.d/syslog文件,可以配置/export/logs/world2.java和/export/logs/world2.syslog文件的滚动。建议world2.syslog每日滚动一次,保存1周;world2.java每周滚动一次,保存一年。Tomcat的日志文件catalina.out也会变大,建议每周滚动一次。保存3周。
9 m5 q. T/ R J" t) k/ ^ 6)定期检查manager的硬盘空间使用情况。
4 ~7 Y4 y4 Q0 c; P6 U+ @二.游戏服务器配置和管理3 Z# g b5 z+ E ~. X6 U
1.服务结构图
& q6 A" ?- y; s$ n x3 r3 R+ C2.游戏配置,发布和管理
O- @/ c5 J( ^- J 1)游戏配置,在/home/super/update/config目录下配置好相应的xml文件(xml配置文件在c.xml基础上修改即可)后,修改link1机器IP和使用的xml配置文件对应表/home/super/update/config/ip_xml.conf,在发布时,发布程序package可以根据link1机器IP,自动找到本组服务器对应的xml文件。
. y2 Z" \7 r5 d" P3 W 2)游戏发布:0 k9 k; f0 L/ M
#/home/super/update/cpackage/package -gameinstall9 C X2 R2 Y1 D, V
或者指定xml配置文件:; R Y- E- v. B$ o. E' a
#/home/super/update/cpackage/package ../config/c.xml gameinstall
7 F3 i+ A& D" a! X- B游戏发布完后,已经启动好。
, b3 h9 n. X" D 3)游戏启动(同iweb管理页面中的修复启动):! I9 Q: m* c h, o) u3 O
#servicerun start. [# i2 @- v1 J Z3 a2 R
过一会后,即可将servicerun进程杀掉,#killall -9 servicerun/ l3 X: E& Q6 g! k7 y, w
4)游戏关闭:
. F4 G" v v! I& y* \ #servicerun stop4 u& z% Q4 T0 L) f
过一会后,即可将servicerun进程杀掉,#killall -9 servicerun
/ U/ P- n# D% q; P7 f$ n7 x3.检测游戏服务器是否正常工作
+ ~, E, K! {- D# x" N9 ^0 z 1)database机器:ps aux命令检查gamedbd进程是否存在;netstat antp命令检查gamedbd是否在监听29400端口;检查/dbf/目录下是否有dbhome目录或者dbhomewdb目录。* ~8 Z8 L8 L4 g! z! N
2)link机器:ps aux命令检查glinkd进程是否存在;netstat antp命令检查glinkd是否在监听29000端口,检查glinkd与delivery机器和各台game机器是否有连接。0 J D9 t8 P: C0 M3 d
3)delivery机器:ps aux命令检查gdeliveryd和gacd进程是否存在;netstat antp命令检查与au是否正常连接(29200)端口,与角色数据库是否正常连接(29400端口),与唯一名服务器是否正常连接(29401端口)。如果与au和唯一名服务器未连接(SYN_SENT状态),检查delivery的防火墙(iptables L -nv)以及au,唯一名服务器是否正常启动。. T% m* @' O: p3 J e4 X! y
4)game机器:ps aux命令检查gs进程是否存在。
" v3 h0 K3 }3 A( X3 s' I9 ~3 y 5)backup机器:如果在该服启动了唯一名服务,则ps aux命令检查uniquenamed进程是否存在,查看/export/目录下是否有uname目录。检查数据备份是否正常,backup:/export/backup目录和backup:/export/unamebackup目录,正常情况下,每小时一个备份。( I1 J5 r! H* s; d) i. P
6)定期检查manager,database,backup的硬盘空间使用情况。) y- \$ B2 j# v8 e% z; D6 o
4.数据备份! f1 M: h& _0 z, `6 s) ?
角色数据库备份在backup:/export/backup目录下,每个备份一个目录,目录名即是备份时间,每小时一个,该备份为全备份,可以定期复制到其他机器做容灾备份。唯一名服务的数据备份在backup:/export/unamebackup/目录下,每个备份一个目录,目录名即是备份时间,每小时一个,也是全备份。
& V: A5 p: o- ?! _7 W. \& d* U三.管理页面1 ^! z! w( d# u: }
1.访问管理页面的人员需要安装个人证书安装,在windows机器上,双击world2_ca.cer安装, 安装时选择安装到 受信任的根证书颁发机构里。(这个证书可以不安装,如果不安装,每次访问页面会弹出信任确认的对话框)。5 s, u: }6 J; N5 N- r" V8 j
双击world2_iwebmanage.p12 安装密码: wanmeishikong 。安装该证书可以访问
; \. Y9 @/ n4 d; ]https://gamemanager/iweb/manage 页面和 https://gamemanager/cricket 页面,执行管理和监控。; k& }; k" H; i }& D0 O( x( S
双击world2_iwebrole.p12 安装密码: wanmeishikong 。安装该证书可以访问
! ^* H4 p' t/ D! z" Z! _: U/ _( shttps://gamemanager/iweb/role 页面,可以修改角色信息等。也可以访问https://aumanager/monitor页面,可以简易创建帐号,充值。5 G5 }1 e/ A( v
四.编程接口* `# o' ]4 }; ~1 t2 e1 l- M9 D
1.GMServer提供的 webservice接口说明
' p6 [2 u: P/ M9 t 接口类UserServiceInterface(url是http://aumanager/GMServer/userservice)和接口类ServiceInterface(url是http://aumanager/GMServer/gmservice),提供的接口详细说明参见文件cGMServer/src/common/interface.xml。
! N( }, u+ [0 i C8 G3 Q# [ (高级功能:如果要增加或者修改接口,可以修改cGMServer/src/common/interface.xml文件,然后运行cGMServer/src/common目录下的gen脚本,生成相应接口类,并完成在cGMServer/src/service目录下的实现类代码。)4 ?0 e4 l( m6 o& O! J
(高级功能:协议描述文件cGMServer/src/config.xml定义了GMServer和Authd之间通信的协议,主要包括踢用户下线,修改密码,划拨金元宝几个接口。接口实现文件在cGMServer/src/protocal目录下。)- [- }: @8 @* G9 |: V
数据库描述文件/etc/table.xml定义了数据库表,查询,存储过程,以及数据库服务器连接配置。6 M$ B: Z' `3 s4 ?# N
权限和服务器列表/etc/gmopgen.xml配置文件也是GMServer.war来读取的。
2 k6 p3 d2 v: s- \& V" F% ^. b' j, H GMServer项目文件修改后,需在cGMServer/目录下执行ant命令,编译发布到cGMServer/dist目录下,生成GMServer.war文件。
# B0 ~7 _2 Y& {1 K2.划拨金元宝接口方案一
3 ~2 W+ Y- E* s' h- C2 V 玩家充值时,直接调用web service接口useCash。注意,每次调用该接口都会直接怎增加玩家的金元宝,不管返回值是多少。如果某笔充值调用后没有返回或者返回-1,-2,需要中止全部充值服务,进行检查。返回-1和-2是不应该出现的,如果出现,很可能是数据库连接已断开,充值服务需要中止。
. h2 J7 B/ g g3 R 接口如下所示:& d6 }- s2 @0 q4 W
/**
' b" M* y* U4 @' X * method useCash
# b, e5 D2 o; I( U * 划拨金元宝,调用该接口即为帐号划拨金元宝,返回0表示已经划拨完毕,返回其他值表示正在划拨队列中,其中返回-1或-2表示可能有错误,需要人工检查原因。每笔划拨该接口不管返回何值,都不需要重复调用,否则会重复划拨。 Q* T. c/ M+ g' J5 N* ^% a! X
*9 \+ Z* E1 O0 V4 B' T
* @param username : 用户名' N- c' [3 {, ~4 v- E' o9 q
* @param zoneid : 服务器ID
/ N# z8 w! E! H- h * @param aid : 计费区ID! m- T8 W9 R. X) K9 h5 c6 P( z
* @param cash : 划拨的金元宝个数乘以100
" _& X1 p- g. i) g7 i1 X * @param loginfo : 调用者信息* {7 p! J# C3 \. Z; W
*// j, s4 W+ C3 B. N( d; T( w$ X
public int useCash( String username, Integer zoneid, Integer aid, Integer cash,9 X/ u; U' R4 }7 G+ W4 Z9 I
LogInfo loginfo);
: A6 |( C/ y" m$ A8 @) T4 k3.划拨金元宝接口方案二
9 c H( C4 o2 Z4 z) | 3 L! J# Y( z5 }; |0 O7 y
使用webservice 接口useCashInform。该方案过程是,充值时,先调用存储过程将每笔金元宝划拨放入队列中,然后调用useCashInform接口将该笔充值迅速划拨(如果不调用useCashInform,该笔划拨会在5分钟后自动处理)。
$ F# f9 X- o# I) L, N3 o% j# x! W 步骤一:存储过程调用
% K. |( R0 Q7 U4 P6 j4 t/ m // 调用存储过程adduserpoint,成功调用后继续执行,否则,中止,划拨失败。
* S" f& Q$ q# }3 E5 k2 @/ l adduserpoint userid, aid, cash*90' H: m7 Q) D: v3 O. Q
//调用存储过程 usecash,调用被执行后(不管参数中返回的error代码是多少)则金元宝已在划拨队列中。
h: e( }- k7 c$ ~! A7 c7 R //该队列每5分钟会被自动处理。5 z; c, K9 V- A9 V, K
//usecash存储过程被执行后,如果参数中返回的error为0时,则调用web service接口useCashInform,参数必须一致。
+ f' M1 P/ t j7 [9 h0 g9 v ]- u usecash userid, zoneid, 0, aid, cash*90, cash, 1: e, e A! n6 f, v# y/ E# S# |& l( {
步骤二:useCashInfrom调用) R3 z3 _. u% c# Q
useCashInform接口如下所示:6 P: n& b& G; @1 L8 \3 t
/**! B$ G7 z& H4 W
* method useCashInform6 s) s1 G4 O# `/ C- v
* 划拨金元宝通知。返回结果含义同useCash。该接口为useCash接口的备选方案。使用useCashInform会使系统更健壮,降低出错概率。调用该接口前,需要调用adduserpoint存储过程和usecash存储过程。调用完adduserpoint和usecash存储过程之后,金元宝划拨已经放入队列,调用useCashInform只是为了更快的将队列中的该笔信息划拨,每笔划拨useCashInform只能调用一次,调用多次会出现错误。& u( L5 d4 {/ q( ^7 {$ H$ U( K
*1 w8 s( T: ? n% S0 i
* @param userid : 用户ID
4 t. T' i; ^# m; U* D9 t& }% S3 b * @param zoneid : 服务器ID
. v( ]9 k# h. k) } * @param aid : 计费区ID7 D U3 N( q6 p
* @param cash : 划拨的金元宝个数乘以100
7 t3 @1 t0 r( q * @param loginfo : 调用者信息
% T6 w6 w0 \$ E, `. A ^. v */
2 `& o6 K# m7 ~/ G: Z2 d public int useCashInform( Integer userid, Integer zoneid, Integer aid, Integer cash,
2 X$ M' O6 W) H; J \+ V$ d LogInfo loginfo);( ^! o4 u9 T# \
4.Iweb webservice接口* _5 a4 N5 r4 H; K% ~- s5 ~: m6 a4 ]
iweb webservice接口是游戏服务器对外提供的控制游戏和设定参数的编程接口,接口在类ciweb/src/com/goldhuman/service/interfaces/GMService.java中定义。提供的接口详细说明参见文件ciweb/src/com/goldhuman/service/interfaces/interface.xml。# _' ^' b' V# l5 ?% Y3 ^
( U% Z5 g+ s5 u2 K (高级功能:如果需要增加新接口或者修改现有接口参数和返回值,可以修改接口定义文件ciweb/src/com/goldhuman/service/interfaces/interface.xml,然后运行同一目录下的gen脚本,生成相应接口类,并完成在ciweb/src/com/goldhuman/service/GMServiceImpl.java文件中的实现类代码。)$ w% e* p, q- l! @, C9 e F# d
Iweb项目文件修改后,需在ciweb/目录下执行ant命令,编译发布到ciweb/dist目录下,生成iweb.war文件8 v5 J k1 I* ~4 w( z( ?
--------------------------------------------------------------+ G* T- Q) j8 Z( @4 A
欢迎过来下载,更多的,新版本和完美私服技术
7 E: X5 W. e- \5 k! \5 Shttp://www.haosfwm.com/# Z! t* W$ ?2 U! d8 d1 f
取系QQ:395005000
1 h# L5 ^, C& F- K/ c下载地址:
|