小说网 找小说 无限小说 烟雨红尘 幻想小说 酷文学 深夜书屋

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

#Functions
make_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 service
echo "Start mysql and http service"
su root -c "service httpd start"
su root -c "service mysqld start"

#Update code
echo "Update server source"
cd /home/trunk/server
su root -c "svn update"

$Check if open eclipse
echo "Open eclispe?(y/n)"
read answer
if[ $answer = "y" ]
then
   echo "start eclipse..."
   cd /soft/eclipse
   su user -c "eclipse &"
fi

#Print make menu
echo "----------make menu---------"
echo "1.make all server"
echo "2.make server"
echo "----------make menu---------"

read answer
if[ $answer = "1" ]
then
   make_server
fi

#Update release version
echo "Update the server version?(y/n)"
read answer
if[ $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
   fi
fi

#Add the release version to svn
cd $version_path
su root -c "svn add *"

#Commit the release version to server
echo "Commit the release?(y/n)"
read answer

if[ $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 server
echo "Start server?(y/n)"
read answer
if[ $answer = "y" ]
then
   start_server
fi

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

posted on 2013-09-07 11:04  王峰炬  阅读(165)  评论(0编辑  收藏  举报

导航