我用PHP和C++编写公司内部软件。
将这种类型的软件部署到linux机器的最佳方法是什么?目前我们使用svn导出,还有没有其他方法?
发布于 2009-07-16 19:06:27
我们使用checkinstall。只需编写一个简单的Makefile,将文件复制到目标计算机上的目标目录,然后运行checkinstall创建RPM、DEB或TGZ包,您可以使用分发包管理工具轻松安装这些包。
您甚至可以添加在复制文件之前和之后执行的shell脚本,以便进行一些预处理和后处理,如添加用户帐户、crontab条目等。
一旦你变得更高级,你可以向这些包添加依赖项,这样它也可以拉入和安装PHP、MySQL、Apache、GCC库,甚至是所需的PHP或Apache模块,或者你可能需要的一些扩展C++库,所有这些都可以通过一个命令完成。
发布于 2009-07-16 20:31:52
我想这取决于你所说的部署。通常,web项目的部署过程包括一个配置脚本步骤,在该步骤中,您可以采用相同的部署包,并通过更改简单的配置指令将其提供给特定的服务器(登台、开发、生产)。
根据我在Linux服务器方面的经验,这些系统通常是定制的,并且经常使用rsync,而不是仅使用svn导出和/或scp。
可以从命令行执行脚本,如下所示:
$ deploy-site --package=app \
--platform=dev \
--title="Revsion 1.2"在内部,系统将从SVN获取给定包的主干中的任何内容(我相信您也可以很容易地将其调整为适用于git ),并生成一个新的唯一标记,其中包含日志条目"deploying Revision 1.2“。
然后,它将使用适当的更改(urls、主机、数据库密码等)修补任何配置脚本。在将其重新同步到适当的目的地之前。
如果部署有问题,只需再次运行相同的命令,只需使用早期部署中自动生成的标记之一即可:
$ deploy-site --package=app \
--platform=dev \
--title="Reverting to Revision 1.1" \
--tag=20090714200154如果您还必须在另一端执行编译,那么可以在配置中包含一个Makefile补丁,然后通过ssh执行一个命令,该命令将在rsync进程完成后编译最近部署的代码。
发布于 2009-07-16 19:16:36
根据我的经验,在安全性和易部署性之间存在权衡。
在我的部署中,使用scp将文件从一台机器移动到另一台机器从来没有遇到过问题。您可以编写一个简单的BASH脚本来获取机器列表(从文本文件或STDIN中),并将给定的目录/应用程序推送到所有机器上的给定目录。假设您对bin目录执行了此操作,最终用户永远不会知道其中的区别。
唯一的问题是当您有多个架构和OSes时,必须在每个架构上单独编译。在这种情况下,您只需编写一个脚本(我脑海中跳出的第一个示例是Ruby中的Net::SSH ),将服务器列表cd放到给定的目录中,然后运行编译脚本。但是,如果所有机器都使用相同的体系结构和配置,那么您可以假设只需在用于分发的机器上编译一次。
https://stackoverflow.com/questions/1139626
复制相似问题