每次提交后,我都找不到使用来自 SVN 的 FTP 将 Php 部署到远程服务器的解决方案。如何通过 FTP 将唯一添加或编辑的文件上传到服务器,并从 SVN 中删除已删除的文件,我想编写提交后脚本...
9 回答
好问题!
我不确定是否存在以这种方式同步文件的仅限 PHP 的方法。
我通常会使用第三方 FTP 同步工具rsync
或ScriptFTP(商业)来进行同步部分。
看看phing,它有许多 FTP 扩展(称为“任务”)。不过,我对他们没有现实世界的经验。
这篇博文提供了许多想法和方法:使用 phing 与共享主机同步文件
您可以使用svn2web通过 Ftp 将每个提交的文件上传到服务器。svn2web 是 php 脚本的集合,您可以将其用作 svn 钩子。您可以将 ftp-server 的地址、用户名和密码设置为目录上的 svn 属性。效果很好!
我使用http://svn2ftp.com,它是一个 SVN 主机,允许在每次提交时远程部署到 S/FTP!
如果您不想自己管理脚本,而只是想要一些有用的东西,您可以尝试使用托管服务。我使用Deploy,它非常适合您描述的场景。如果您只有一个项目要部署,它甚至是免费的。
对于我们的 php 项目,我们使用 Jenkins 一个持续集成工具。我们的存储库服务器是颠覆。每当我们进行代码更改时,我们都会使用 jenkins 作业与 Beta staging & live 环境合并,然后部署应用程序。
您可以在http://www.michaelpeacock.co.uk/blog/entry/jenkins-ci-an-introduction-for-php-developers上找到有关使用 Jenkins 部署 PHP 应用程序的更多信息
你怎么说,你从 SVN 结帐到你的服务器,(创建从 SVN 到生产服务器的工作副本),当你想部署一个新版本时,你只需通过 SSH 连接到服务器并键入svn update
,就这样,只有已编辑的最新文件将被部署,并且在不到一秒钟的时间内,您就可以在生产中更新最新版本。
mybe cron + bash 脚本将是 svn up 吗?
你看过豆茎吗?它让您可以一键将您的 Subversion 和 Git 项目部署到您的 FTP 服务器。虽然它不是免费的。另一个免费的选择是设置一个持续集成服务器,它会运行一个 rake 脚本来进行部署。
最好的方法是(如果您的服务器是基于 Linux 的)将 SVN 导出到新目录,然后移动新目录以替换旧目录(最好的方法是使用指向不同版本站点的符号链接)。这样,该站点将在一两秒钟内不可用,而如果您 rsync 并且拥有一个大站点,如果您大幅更改单个文件,则该站点将被破坏,直到所有文件同步为止。
至于触发这个程序,最好的方法是使用 svn hooks。还可以考虑在发布之前进行一些自动化测试(对于基本功能),因为您可能会在一段时间内严重破坏您的主干,并且该站点肯定会关闭:)
我们目前正在将上述方法整合到生产环境中,设置如下:
- 提交进入主干
- 在实际提交之前,会在代码上运行测试以查看是否一切正常
- 多次提交后,部署到来(通常是开发人员监督)
- 再次运行测试
- 如果他们成功 - 一切都好
- 如果它们失败,则返回旧的导出并且该站点再次完全运行
这一切都是用 PHP 编写的,使用标准的控制台命令。