Java游戏服务器-Windows平台自动部署程序到Linux平台

最近游戏已经基本完成,开始小规模内测。目前开发环境是在Windows下,服务器使用阿里云CentOS,这就牵扯到如何方便部署程序(包括数据,下同)。

最开始做法是Windows下export程序,然后使用FileZilla通过sftp上传到目标服务器。说起来好像并不复杂,而且部署并不频繁,起初还能接受,但慢慢不胜其烦。因为每次要部署Login/Game/Journal3类服务器,重复操作实在繁琐。本着能自动做就不手动做的原则,需要一种通过脚本自动部署的方式来解放双手。

首先梳理一下需求:

  1. 自动导出程序

  2. 自动对程序打包压缩,上传到目标服务器

  3. 自动在目标服务器解压,拷贝更新

1、3是相关平台下的操作,有多种实现方式,我们主要看2需求,这是实际部署中最繁琐的地方。

要对程序进行压缩,并且在Linux下解压,第一反应就是使用tar命令。要上传文件到服务器,第一反应是使用sftp命令。然而在Windows下默认没有这两个命令,幸运的是,已经有第三方实现。

Gow (Gnu On Windows) is the lightweight alternative to Cygwin. It uses a convenient Windows installer that installs about 130 extremely useful open source UNIX applications compiled as native win32 binaries. It is designed to be as small as possible, about 10 MB, as opposed to Cygwin which can run well over 100 MB depending upon options.

有了tar和sftp等仿Linux命令,脚本就很容易实现了,示例如下。

1
2
3
4
tar -zcf Test.tar.gz Test
md5sum Test.tar.gz
psftp root@123.45.67.89 -pw 123456 -b psftp.txt
rm -rf Test.tar.gz

首先对程序目录打包,其次计算md5,再通过sftp上传到Linux服务器,最后清理压缩文件。

上传命令在psftp.txt中,如下。

1
2
3
4
5
cd /home/test/
lcd E:/Test/
put Test.tar.gz
!md5sum Test.tar.gz
exit

即将Windows的E:/Test/下的Test.tar.gz上传到目标Linux服务器的/home/test/目录下,并计算md5。

另外,查看了一些资料,目前还没找到2、3都能通过Windows上的一个脚本完成的方法,只能分开进行。