• 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,或者修改其它配置属性,详情可参照我之前的文章。由于是后台运行服务器程序,所以在测试阶段,将输出到控制台的日志全部输出到以日期命名的日志文件里,这样当服务器发生什么问题的时候可以随时查询。其实我这是多此一举的,因为服务器本身就有很强大的日志系统,不过对于咱们平常调试程序,如果自己的程序没有日志系统,这种方法还是很好用的。

  • 相关阅读:
    【EF6学习笔记】(四)弹性连接及命令拦截调试
    【EF6学习笔记】(三)排序、过滤查询及分页
    【EF6学习笔记】(二)操练 CRUD 增删改查
    【EF6学习笔记】(一)Code First 方式生成数据库及初始化数据库实际操作
    SQL Server表分区
    【工具类】
    【C#加深理解系列】(二)序列化
    【ASP.NET Core分布式项目实战】(三)整理IdentityServer4 MVC授权、Consent功能实现
    【转载】IdentityServer4 使用OpenID Connect添加用户身份验证
    【ASP.NET Core分布式项目实战】(二)oauth2 + oidc 实现 server部分
  • 原文地址:https://www.cnblogs.com/fengju/p/6174318.html
Copyright © 2020-2023  润新知