首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 其他教程 > 操作系统 >

Centos环境下面署游戏服务器-自动化

2013-09-08 
Centos环境下部署游戏服务器-自动化计算机是没有智力的,只会接受指令,运行指令,得出结果。因此就算你让它重

Centos环境下部署游戏服务器-自动化
     计算机是没有智力的,只会接受指令,运行指令,得出结果。因此就算你让它重复做一件事多少次,它也学不会自动去做这件事。对于重复繁琐的事情,做为一个懒惰的程序员,必须告诉机器去做这件事情,然后就行了,而不是每次重复告诉机器做重复的事情。因此脚本可以代替程序员去做这些繁琐的事情了。机器做事情不仅准确,而且从来不抱怨。
     本次的自动化脚本部署肯定不是通用的,更多的是提供一种思路,如何让整个编译流程脚本化。这次是部署服务器,其他时候也有很多重复的事情,都可以用脚本代替人力。我所在项目是在Windows环境下开发,然后在本地Centos服务器上编译,最后将编译好的版本在传到上传服务器。整个流程比较复杂,本文只探讨在Centos上的编译自动化。因此整个编译过程是这样的:
     1、开启mysql和http服务
     2、用SVN 得到最新的代码
     3、是否要打开eclipse
     4、选择要编译的服务器
     5、是否将最新的版本更新到服务器版本库里
     6、是否要将版本库里的最新版本上传到远端
     7、是否要启动所有服务

     思路清晰了, 剩余的就是编码了,本文用的是shell,项目里用的不仅仅是这些代码,我只是将整体的结构写出来,代码如下:

#!/bin/sh# This shell is used for building server version auto# Writer:lfwu# Emali:zgwulongfei@gmail.com#Functionsmake_server() {   echo "Start compile server:"`date`   cd /home/trunk/server   make clean   make all}start_server() {   cd /home/trunk/server/bin   time_now=`date+"%Y%m%d"`   ./server >"server_$time_now.log" &     ps | grep "server"   echo "start server success"}#Start serviceecho "Start mysql and http service"su root -c "service httpd start"su root -c "service mysqld start"#Update codeecho "Update server source"cd /home/trunk/serversu root -c "svn update"$Check if open eclipseecho "Open eclispe?(y/n)"read answerif[ $answer = "y" ]then   echo "start eclipse..."   cd /soft/eclipse   su user -c "eclipse &"fi#Print make menuecho "----------make menu---------"echo "1.make all server"echo "2.make server"echo "----------make menu---------"read answerif[ $answer = "1" ]then   make_serverfi#Update release versionecho "Update the server version?(y/n)"read answerif[ $answer = "y" ]then   version_path="/home/trunk/version"   cur_path="/home/trunk/server/bin"   if[ -d $version_path ]   then      cp -f "$cur_path/server" "$version"   else      makedir $version_path   fifi#Add the release version to svncd $version_pathsu root -c "svn add *"#Commit the release version to serverecho "Commit the release?(y/n)"read answerif[ $answer = "y" ]then cd $version_path su root -c "svn add *" su root -c "svn ci -m \" Now, a new version is release...\""fi#Start serverecho "Start server?(y/n)"read answerif[ $answer = "y" ]then   start_serverfi

     为啥要开启eclipse呢,因为整个工程是Windows下开发的,没有makefile,这么大的项目,如果手动写makefile到猴年马月了,因此采用eclipse自动声称makefile。所以需要打开eclipse,每次重新生成makefile,或者修改其它配置属性,详情可参照我之前的文章。由于是后台运行服务器程序,所以在测试阶段,将输出到控制台的日志全部输出到以日期命名的日志文件里,这样当服务器发生什么问题的时候可以随时查询。其实我这是多此一举的,因为服务器本身就有很强大的日志系统,不过对于咱们平常调试程序,如果自己的程序没有日志系统,这种方法还是很好用的。

热点排行