我们应该如何设置一个支持持续开发的 Web 服务器?

我们应该如何设置一个支持持续开发的 Web 服务器?

我租用了一个 VPS(Linux - Fedora),将其用作同一 Web 应用程序的开发和生产的 Web 服务器。

我已经通过 yum 安装了 apache、subversion 以及运行 PHP 所需的所有包。

在 apache 中,我创建了两个虚拟主机:

dev.mydomain.com (for ongoing development, /var/domains/dev.mydomain.com/public_html )
www.mydomain.com (for production, /var/domains/www.mydomain.com/public_html )

将只有一名开发人员,并且他将使用 Netbeans 作为 Windows XP 上的 IDE。

我可以想象他要做的第一件事就是在 Netbeans 中将 SVN 存储库中的副本签出到他的计算机中。我要做的是在这些文件夹上设置两个 SVN 存储库。

/var/domains/dev.mydomain.com/public_html
/var/domains/www.mydomain.com/public_html

因此,当他在本地副本上进行一些更改并提交更改时,他可以访问dev.mydomain.com在他的浏览器上查看页面并进行代码调试。

后来,当他想到dev.mydomain.com可以在生产中使用,他可以使用 Netbeans 将更改提交到www.mydomain.com

上述场景有什么问题吗?这样的 Web 服务器应该这样设置吗?

答案1

假设您正在进行纯 HTML/图形设计,那么这应该没问题。如果系统是动态的,尤其是如果它正在做任何稍微复杂/有趣/棘手的事情,我不会将我的生产箱设置为我的开发箱。

您希望开发环境尽可能地与您的生产环境相似,使用相同的设备确实可以实现这一点,但也存在一些问题。最重要的是,您可以关闭生产设备来测试您的新开发。无限循环、没有正确退出的函数、数据库混乱……所有这些(以及更多)都会对您的生产环境产生负面影响。

如果您不进行内部开发,我的第一个想法是租用第二个盒子。我的第二个想法是购买一个便宜的盒子,您可以在其上复制环境。硬件是否匹配并不重要,软件是否匹配才是关键。例如,在我上一份工作中,我们在托管中拥有高端小型企业独立服务器来处理我们的生产环境。我们的测试环境是一对 eMachines。

总结一下:如果你正在进行任何动态 Web 开发,我不会使用生产环境来测试它。获取第二个托管环境,或购买一个搅拌机并进行相同的设置。

答案2

至少对于小型项目来说,能够自动提交和发布非常方便,但真正的部署脚本(例如使用 rsync,如 @Kevin M 所建议的)可以更好地控制和隔离生产环境。例如,某些框架依赖于某个目录设置(用于缓存、临时目录),而保留在 subversion 中是没有意义的。部署脚本可以确保这些目录存在并具有适当的权限等。

如果您希望自动发布提交,则需要做以下几件事:

  1. 文章描述如何设置提交时的自动部署。根据用户设置、权限等,您可能需要也可能不需要所有脚本。
  2. 您需要确保您的服务器配置为不提供已发布的工作副本中的 .svn 目录。

另外,如果您依赖已安装的软件(php、python 等)。您需要制定一个计划,说明如何执行升级并在开发中测试它们,然后再将软件推向生产。这在单个机器上很难做到。

答案3

我认为存储库信息存储在工作副本中,因此它不会提交到任何指定的位置。此外,信息以数据库格式存储,而不是客户端所熟悉的 directory/directory/directory/file.html 文件夹结构。

你想要的是同步。开发人员将按照您概述的方式从 subversion 存储库中执行常规 svn 检出,但当他准备推送到生产环境时,您或他将通过 ssh 登录到服务器并执行rsync -av --cvs-exclude /var/domains/dev.mydomain.com/public_html /var/domains/www.mydomain.com/public_html。此列表列出了已更新的所有内容,并同时复制到生产环境,.svn 目录除外

相关内容