需要关于我的PHP开发解决方案的建议吗

需要关于我的PHP开发解决方案的建议吗,php,svn,deployment,solution,Php,Svn,Deployment,Solution,以下是当前php开发解决方案的设置方式: 每个开发人员都在本地机器上工作。 每个开发人员将其更改提交到公共SVN服务器(intranet)。 提交钩子将更改上载到临时服务器并执行验证任务。 产品准备就绪后,通过SFTP手动将其部署到生产服务器 注意:大多数情况下(如果不是全部的话),我没有对服务器的SSH访问权,只有SFTP 我可以像升级登台服务器一样自动部署到生产服务器,但此解决方案只能单向工作。如果出现问题,如何恢复到以前的版本 如何改进此解决方案 感谢并为我的英语感到抱歉。如果您可以将生产

以下是当前php开发解决方案的设置方式:

每个开发人员都在本地机器上工作。 每个开发人员将其更改提交到公共SVN服务器(intranet)。 提交钩子将更改上载到临时服务器并执行验证任务。 产品准备就绪后,通过SFTP手动将其部署到生产服务器

注意:大多数情况下(如果不是全部的话),我没有对服务器的SSH访问权,只有SFTP

我可以像升级登台服务器一样自动部署到生产服务器,但此解决方案只能单向工作。如果出现问题,如何恢复到以前的版本

如何改进此解决方案


感谢并为我的英语感到抱歉。

如果您可以将生产服务器设置为通过安全通道(如https和webdav)访问SVN repo,请尝试以下操作:

在生产服务器上创建一个脚本,允许您输入标记目录和/或修订号/日期,并执行svn导出。这样,prod服务器将从svn中提取更改

现在,如果您有一种方法可以从安全地调用此脚本,请使用提交脚本。瞧,你有自动化

最重要的是,您不希望对未计划使用的prod服务器执行自动更新

要解决这个问题:

提交脚本应仅在将某些内容提交到“/path/to/tags/release/dir”时调用产品更新脚本

确保只有适当的变更控制人员(或目前控制手动产品解聚剂的人员)有能力将svn复制到repo中的该目录

例如,假设您的回购协议设置为:

/yourWebsite
--> /branches
--> /trunk
--> /tags
----> /releases
触发自动部署到prod的提交类似于:

svn copy https://mySvnRepo/yourWebSite/trunk \
   https://mySvnRepo/yourWebSite/tags/releases/x.y \
   -m "Tagging for production deployment"
可以通过提交到以前版本的目录来实现回滚。但是请注意,这不会导致回滚已添加的新文件

当然,您的里程可能会有所不同;这只是你调查的一个建议。 如果设置不正确,你应该花时间考虑安全隐患和潜在的灾难。


希望这对您有所帮助,即使只是想让您考虑其他解决方案。

如果您有SFTP(不要与来自FTPS的权限混淆)访问权限,您也可以使用SSH访问权限。只要试着用你的user/pass组合ssh连接到服务器,你就可以进入了。许多SFTP设置阻止你使用这个shell而不是SFTP做任何事情。我知道我所有的服务器都会用一个很好的“走开”消息来中断你的连接。保罗·麦克米兰是对的,我只能用shell做SFTP