PHP、FTP和源代码控制系统
Posted
技术标签:
【中文标题】PHP、FTP和源代码控制系统【英文标题】:PHP, FTP and source control system 【发布时间】:2021-09-17 12:28:54 【问题描述】:在我们的程序员团队中,我们正在寻找一种方法来通过实施版本控制来改进我们的工作。
我们目前用的是tortoise SVN,很方便,但是还是有些点没管理
例如:我们需要修改example.com网站的一些.php脚本(我们用notepad ++来做),在tortoise SVN仓库中我们创建一个新文件夹并修改文件,然后用filezilla我们传输example.com 的 ftp 中修改后的文件
有没有办法将两者结合起来?编辑脚本 php + ftp 传输?
考虑到我们管理的站点不止一个,并且所有站点显然都依赖于应该镜像创建的生产存储库的 ftp 服务器。
我们可以采用什么解决方案?
谢谢!
【问题讨论】:
听起来你需要某种持续交付平台 为什么不检查服务器上的存储库?无需使用 FTP。 一个镜头中的两个动作(编辑/转移到生产)听起来你跳过了很多步骤。没有代码审查?没有测试(至少运行单元测试)?这些是您在生产中部署某些东西之前应该实施的步骤。 @eftshift0 是正确的,我们目前正在正在编辑的网站的克隆测试目录上测试代码。我怎样才能改进生产过程,以便一切都得到很好的跟踪? 我个人的看法?切换到 git,并实施 CI/CD :-D。但仅仅这 2 件事就涉及到 很多 的事情,从你现在到最终目标……嗯,开发者永远幸福。 【参考方案1】:最简单的方法是在存储库中使用一个脚本来部署您的更改,例如script/deploy
,可能带有一个参数来指定要部署的站点。当您进行更改并准备好部署时,您可以自己运行该命令,或者让自动化系统运行它。如果您有某种方式可以在将代码合并到主干(或 Git 中的主分支)时自动运行代码,则可以实现后者。如果您有共享凭据,那么使用自动化系统会更好,因为您不想将它们检入存储库(因为这是不安全的),并且您需要一个安全的地方来存储它们。
使用 Git,您可以在旧版本和新版本之间执行git diff --name-only
,以查找哪些目录(以及哪些站点)已更改,并仅部署这些目录。我不确定如何用 SVN 做到这一点,但可能有办法。
当然,有多种 CI/CD 系统可以为您处理此问题并允许您高效地编写脚本,此外还提供了一种安全的方式来存储凭据并使用环境注入它们。他们还可以运行您拥有的任何自动化测试,您可能希望进行代码审查。 CI/CD 系统还可以在部署前检查是否满足这些要求。
我应该指出,一般来说,使用 FTP 并不是一个好主意,因为实际上很难将 TLS 与它一起使用(由于许多错误的实现),而且它并不真正负责通过未加密的连接部署代码,因为任何人可以篡改它。 SFTP 可能在您的环境中可用,如果是,它会更安全;如果不是,请务必确认 TLS 已正确配置为处理控制和数据连接。
【讨论】:
rsync(通过 ssh)也可能是一个考虑同步的工具。以上是关于PHP、FTP和源代码控制系统的主要内容,如果未能解决你的问题,请参考以下文章