每次提交后,我找不到将Php部署到远程服务器并使用FTP的解决方案。如何通过FTP上传仅已添加或已编辑的文件,并从SVN中删除已删除的文件?我考虑编写post-commit脚本...
每次提交后,我找不到将Php部署到远程服务器并使用FTP的解决方案。如何通过FTP上传仅已添加或已编辑的文件,并从SVN中删除已删除的文件?我考虑编写post-commit脚本...
很好的问题!
我不确定是否存在仅使用PHP来同步文件的方法。
通常我会使用第三方FTP同步工具,如rsync
或ScriptFTP(商业软件)来完成同步部分。
可以看看phing,它有一些FTP扩展(称为“任务”)。但我没有实际经验。
这篇博客文章提供了许多思路和方法:使用Phing与共享主机同步文件
您可以使用svn2web通过FTP将每个提交的文件上传到服务器。Svn2web是一组PHP脚本,可用作svn挂钩。您可以将FTP服务器的地址、用户名和密码设置为目录上的svn属性。非常好用!
我们的PHP项目使用Jenkins作为持续集成工具。我们的代码库服务器是Subversion。每当我们进行代码更改时,我们使用Jenkins作业将其与Beta staging和live环境合并,然后部署应用程序。
您可以在http://www.michaelpeacock.co.uk/blog/entry/jenkins-ci-an-introduction-for-php-developers上找到有关使用Jenkins进行PHP应用程序部署的更多信息。
可能是一个 cron + bash 脚本,用来进行 svn up 操作?
你有考虑过 Beanstalk 吗?它可以让你一键部署你的 Subversion 和 Git 项目到 FTP 服务器上。不过它是收费的。另一个免费的替代方案是设置一个持续集成服务器,该服务器将运行一个 Rake 脚本来执行你的部署。
如果您的服务器是基于Linux的,最好的方法是将SVN导出到一个新目录,然后将新目录移动以替换旧目录(最好使用符号链接来连接不同版本的站点)。这样,在同步文件时,如果单个文件发生了重大变化,则网站会中断,而如果您使用rsync并且有一个大型站点,则网站将在所有文件同步之前被破坏。
至于启动此过程的最佳方法是使用svn钩子。在发布之前进行一些自动化测试(用于基本功能),因为有时可能会严重破坏您的主干,并且该站点肯定会关闭:)
我们目前正在将上述方法应用于生产环境,设置如下:
所有内容都是使用标准控制台命令编写的PHP。