我正在开发 lamp 应用程序。我们有 2 个服务器 (Debian) Live 和 Dev。
我不断在 dev main 上工作以添加新功能并修复错误。
当一切顺利时,我将相关代码复制到 Live 系统。数据库 (mysql) 是每台机器的本地数据库。
现在这实际上是一个非常基本的设置,我想稍微改进一下工作流程。我使用 git 和 github 进行版本控制。不可否认,我只使用了一个分支。他们可能是 3 个不同的开发人员,他们在不同的时间处理代码。我们都使用相同的 linux 用户名连接到开发服务器并在需要时直接编辑代码。然后我通常会在一天结束时将代码提交并推送到 github。
需要牢记的一点是,在本地机器上运行此代码并不容易,因为有许多 apache 和子域配置无法在本地机器上运行,因此在开发服务器上而不是本地运行非常重要。
我需要创建一个新的流程,因为我们现在需要一个主干和一个需要重写大量代码的分支。
最好的方法是什么?我是否应该为每个开发人员创建不同的 unix 登录名,并在开发服务器上为这些更改设置不同的工作区域?例如
/var/www/mysite_derek /var/www/mysite_paul /var/www/mysite_mike
我的想法是他们可以从主分支中提取,然后创建自己的分支并将其合并回来。我不确定这将如何在本地 git 和 github 上工作。
我是否也需要创建不同的 github 用户帐户?
我希望以“正确”的方式做到这一点,并为未来拥有大量潜在开发人员提供保障,但我也不想让事情变得过于复杂。我更喜欢简单而优雅的解决方案。
有什么建议或建议吗?
答案1
我们与大约 12 名开发人员一起使用的解决方案如下。它工作得很好,并且无需再修改服务器的配置即可实现灵活的设置。由于网络延迟和服务器存储速度,它可能无法扩展到 40-50 名开发人员。
我们分享/var/www/通过 Samba 管理树,因此 Windows 客户端可以使用其本地 IDE 和 VCS 客户端在 LAMP 服务器上进行编辑。没有人在 Linux 服务器上拥有帐户。
创建如下目录结构:
/var/www/mysite.com/www/derek/
/var/www/mysite.com/www/paul/
/var/www/mysite.com/www/mike/
在您的内部 DNS 中,创建一个通配符记录,将 **.dev* 指向您的 lamp 服务器的 IP 地址。我假设123.45.67.89这里。
在 Apache 中,定义一个类似于这样的虚拟主机:
<VirtualHost 123.45.67.89>
ServerName lamp.dev
ServerAlias *.dev
VirtualDocumentRoot /var/www/%-3.0.%-2/%-4/%1/
</VirtualHost>
重要的部分是 ServerAlias 通配符,它使此虚拟主机响应所有以 '.dev' 结尾的传入请求。另一个重要的部分是 VirtualDocumentRoot,它看起来很复杂,但并不那么糟糕。它只是将传入的主机名分成几部分,并从这些部分中构造 DocumentRoot。您可以点击此处了解更多信息。
现在任何开发人员都可以访问http://derek.www.mysite.com.dev/并查看 mysite 的个人工作副本。
添加新站点、子域或开发人员只需在 Samba 共享上创建正确的目录即可。
对于部署到生产服务器,我建议你放弃 scp 并查看卡皮斯特拉诺以及出色的集中式 Web 前端韦比斯特拉诺。Capistrano 有点以 Rails 为中心,但只需几行代码即可适应 PHP。Webistrano 提供了一个中央 GUI,您只需按一下按钮即可直接从版本控制部署或更新网站。拥有易于编写的脚本部署,可以可靠地重复并在出现问题时回滚,这一点不容忽视。