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,或者修改其它配置属性,详情可参照我之前的文章。由于是后台运行服务器程序,所以在测试阶段,将输出到控制台的日志全部输出到以日期命名的日志文件里,这样当服务器发生什么问题的时候可以随时查询。其实我这是多此一举的,因为服务器本身就有很强大的日志系统,不过对于咱们平常调试程序,如果自己的程序没有日志系统,这种方法还是很好用的。
Centos环境下部署游戏服务器-自动化的更多相关文章
- Centos环境下部署游戏服务器-软件安装
这篇文章主要介绍一下游戏服务器需要安装的软件和需要修改的配置.现介绍下项目,本项目服务器端是c++ + mysql组合,客户端是as写的,需要安装的服务为Mysql,Php,Apache, 以及一个n ...
- Centos环境下部署游戏服务器-常用命令
图1 在Linux的世界,如果你不玩命令,那你见了同行都不好意思和人家打招呼.同时服务器正常状况下放在远端,一般都是开ssh登录服务器,相信远程桌面的人很少见吧.这篇文章说说Linu ...
- Centos环境下部署游戏服务器-编译
游戏服务器是在windows环境开发的,相关跨平台的东西在这里不谈了,只谈如何将Visual Studio 工程转换到Linux下编译.这里涉及到的软件分别为:Centos版本为6.4,Visual ...
- Centos环境下部署游戏服务器-权限
部署Web服务器的时候,在"DocumentRoot"指向的根目录新建一个文件夹,然后将网页和资源放在这个文件夹里,通过地址http://192.168.0.100/Res/ind ...
- Centos环境下部署游戏服务器-简介
一.前言 在接触这个操作系统之前我一直使用的是ubuntu和mac os,这次由于游戏是测试版本,没有专业的运维人员去做这件事情,只能我这个稍微懂一点linux的人来做这件事情了.由于涉及到 ...
- Centos环境下部署游戏服务器-iptables
简介: 图1 Centos做为服务器级操作系统,防火墙是不可缺少的.防火墙的主要功能为控制进出网络包,防火墙就如小区门卫的工作职责,检查出入小区居民的身份,如果不符合小区门卫管理条例 ...
- Centos环境下部署游戏服务器-SVN
版本控制工具的文章已经被写滥了,所以本篇文章不想介绍如何安装Svn如何可视化操作这些东西.本篇文章讲述我自己对Svn的理解,以及在命令行下操作.为啥不应可视化界面?有两方面的原因,远程登录到服务器都是 ...
- Centos环境下部署游戏服务器-SSH
在这个*nix大行其道的年代,SSH绝对值得你拥有,虽说它的语法真的很简单,可用途相当大.比如说你在登山,突然公司一个电话告诉你服务器出问题了,在登山的过程中,肯定不能背个几公斤的笔记本吧,这个时候只 ...
- Centos环境下部署游戏服务器-Eclipse
一直在想这篇文章该不该写,因为这篇文章更像是教你如何使用一个ide这种文章,毫无价值可言.但思来想去还是应给写.上篇文章主要说了编译原理和过程,这篇文章就是理论联系实际的典范.并且很多工程师一辈子都不 ...
随机推荐
- 设置xx-net,访问youtube等国外网站
配合使用chrome+xx-net,就可以免费访问youtube等外网了.步骤如下: 1. 按照https://github.com/XX-net/XX-Net/wiki/%E4%BD%BF%E7%9 ...
- Unity3d之Animation(动画系统)
1,动画系统配置,2,代码控制动画 原文地址: http://blog.csdn.net/dingkun520wy/article/details/51247487 1,动画系统配置 创建游戏对象并添 ...
- ZOJ 3941 Kpop Music Party 贪心
题目链接: http://www.icpc.moe/onlinejudge/showProblem.do?problemCode=3941 题解: 先吧所给的区间合并,得到若干个独立的区间. 然后从左 ...
- 图解Git/图形化的Git参考手册
此页图解git中的最常用命令.如果你稍微理解git的工作原理,这篇文章能够让你理解的更透彻. 基本用法 上面的四条命令在工作目录.暂存目录(也叫做索引)和仓库之间复制文件. ● git add fil ...
- Java 查询URL对应IP地址
/** * @ClassName TestSocket1 * @Version 1.0 * @Date 2014-9-26 上午10:19:36 */ public class TestSocket1 ...
- poj 3237 Tree 树链剖分
题目链接:http://poj.org/problem?id=3237 You are given a tree with N nodes. The tree’s nodes are numbered ...
- 剑指offer--面试题20
题目:从外向里顺时针打印矩阵 做题心得:该题本质上并未考查复杂的数据结构及算法,而是考查了快速找规律的能力!!! 要想作出此题,必须先有绝对清晰的思路,否则越写越乱(因为涉及到很多的循环打印) 自己当 ...
- 【转载】一淘技术专家王晓哲:Nginx_lua的测试及选择
对于Web高性能服务器上的选择,这个是很多人头痛的问题.其实Apache.lighttpd.Nginx都用他们优点,在什么情况下我们如何去选择适合自己的Web高性能服务器,如何去搭建一个适合自己的架构 ...
- linux 访问ntfs分区
打开ntfs-3g的下载点http://www.tuxera.com/community/ntfs-3g-download/ ,将最新稳定(当前最新版本为ntfs-3g-2011.1.15)下载到Ce ...
- 利用传入的Type类型来调用范型方法的解决方案
起因:自定义一个GridView控件,其数据源来源于一个通用方法Get<T>(),根据你传入的T到数据库中得到相应的数据,问题是定义GridView控件时没法在界面端设置使用泛型,只能在每 ...