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