部署 – Web应用程序:开发到生产

以下是我公司将更改从开发服务器移动到生产服务器的当前流程:

>需要更新的文件从生产中删除,以确保不会在生产中进行任何更改(不应该发生;但是,确实会发生).旧的开发文件被赋予一个〜前缀作为一种“备份”.
>开发者进行必要的更改.
>正在开发的更新文件将从该服务器复制并粘贴到生产服务器上的相应位置.旧的生产文件被赋予一个〜前缀作为一种“备份”.

我知道这是一种可怕的做事方式,但最好的办法是什么?我最初的想法是将所有代码都转换为颠覆.然后,当需要更新某些内容时,在开发中进行更改,提交到存储库,然后从存储库更新生产服务器.

任何人有任何替代/改变/建设性批评?我们的开发团队只有6个人,我们的代码库是ASP(非常古老,可怕的遗产),PHP(稍微更新)和Java EE(最新代码;所有应用程序构建为单独的WAR).

提前致谢

编辑:为了开发我们的Java EE应用程序,每个开发人员都在他的机器上运行Glassfish v2.对于PHP / ASP,我们有一个中央开发服务器.对于生产,我们有一个用于PHP / ASP(IIS)的服务器,另一个用于Java(Glassfish v2).

解决方法

如前所述,源代码控制是明确的.它是所有编码和部署都应该发生的工具.

话虽这么说,您可能还想使用像Capistrano这样的部署工具或像Phing这样的构建工具.

我使用Capistrano来部署我们的PHP应用程序,并使用单个终端命令,它将:

>从源代码管理中查看项目的副本
>放入版本化的部署文件
>运行自定义任务 – 例如将符号链接写入公用文件夹,运行数据库任务,将环境变量从暂存切换到生产等.
>在我的应用程序的公用文件夹和服务器doc根目录之间创建一个符号链接

如果出现任何问题,它将自动回滚到上一次良好的部署.这是一个非常有用的工具.不能推荐它.

编辑:刚刚意识到这不是一个PHP问题.根据您的平台,部署工具会有所不同. Capistrano适用于Rails或PHP. Phing是Apache Ant的PHP版本.您可能想询问所选平台的最佳工具.

相关文章

vue阻止冒泡事件 阻止点击事件的执行 <div @click=&a...
尝试过使用网友说的API接口获取 找到的都是失效了 暂时就使用...
后台我拿的数据是这样的格式: [ {id:1 , parentId: 0, name:...
JAVA下载文件防重复点击,防止多次下载请求,Cookie方式快速简...
Mip是什么意思以及作用有哪些