2009-06-18 55 views
4

我意识到“良好实践”这个词有点令人怀疑和过度使用,但我认为它适用于我的问题。网站开发项目管理的良好实践

我有一些很好的web开发经验,但我想听到的都是一些很好的基本做法,做自由职业者面对面的人的项目管理时。

例如,我有目标域mydomain.com。我是否应该在一个子域,即dev.mydomain.com,通过.htaccess或其他方式保护我的所有测试?

我对SVN很熟悉,但不适合web开发。什么是版本控制网站的最佳方式?

我已经建立了两个数据库,MYDB _开发和MYDB _相对。在_dev上完成我的所有工作然后将结构转移到_rel是否有意义?第一次发布后会发生什么?

如果你能回答一些问题或链接我一个很好的资源将是巨大的。到目前为止,我的搜索只产生HTML教程!

+0

这是wiki吗? – sal 2009-06-18 15:57:46

回答

2

我通常会建议如下。团队应该有3个这样的“部署”环境:

  • 开发环境:这是开发人员的工作,并可以发布
  • 测试环境:这是测试完成后,也可能呈现给客户。这里只能部署工作产品。
  • 生产环境:运行的最终部署和使用的产品

Here's的东西,把这个概念。我建议的是,“测试环境”(或预发布环境)位于与最终“生产环境”配置相同的服务器上。

关于版本控制,我只会用它来版本化源代码。您可以使用您喜欢的任何版本控制(甚至是配置管理工具)。在这里做分支是一种很好的做法,所以无论何时释放产品(将其部署到生产环境),都会为其创建一个具有相应版本号的分支。与此同时,你继续在主分支上发展。这样做的好处是,您可以执行可能发生在您的发行版中的错误修复,并且您可以重新部署分支副本,而无需重新部署同时添加到主开发分支上的新功能。在网上搜索分支的最佳实践,周围有很多东西。我不会使用SVN或其他东西来直接版本化你的网站..至少我从来没有听说过这样的做法。更好的方式是在每天的时尚不知何故在服务器上创建生产环境的备份副本...

0

至于版本控制,我会说把一切都置于不动态创建的控制之下。例如,如果应用程序随时生成一堆.txt文件,则不需要对这些文件进行版本管理,但只需创建一次即可,需要进行版本控制。

至于你所选择的版本控制系统,我建议你比SVN(可能的Git或水银)以外的东西,但是这更多的只是我个人的偏好比任何实质性的原因。

1

我们做什么。

  1. 使用允许在部署的Web服务器之外进行测试的框架。我们开发和测试笔记本电脑。一些人使用在Eclipse下运行的Glassfish进行测试。其他使用Django,它是独立运行的。我们的笔记本电脑上有用于开发和测试的数据库。我们使用的配置文件,以确保我们使用“发展”名字的数据库,目录等

  2. 不要在虚拟机上的集成测试。我们的托管是基于红帽企业Linux的,因此我们使用Fedora VM来测试Apache和MySQL(或Oracle)以及整个技术堆栈。我们在VM环境中有集成测试数据库。我们使用的配置文件,以确保我们使用了“测试”名字的数据库,目录等

  3. 我们使用具有非常整齐的部署产品。 Glassfish/Java应用程序使用WAR或EAR文件进行部署。 Django应用程序使用Python的setup.py安装程序。这样我们就可以安装到生产环境中,摆弄数据库,我们就可以开始运行了。我们使用的配置文件,以确保我们正在使用的“生产”名字的数据库,目录等

的第一个版本包括构建数据库第一次。我们提供一个脚本(或者在Django的情况下,我们运行manage.py syncdb命令)来构建数据库。

在进行模式更改时,我们要么有脚本或说明。我们必须在测试中再次做到这一点。

当部署到可见的世界生产,我们这样做。

  1. 我们有一个VM在我们的托管环境中的“升级”。我们得到这个工作。这是互联网不可见的。我们检查我们的组件,安装它们,运行数据库模式更改脚本(如果它很复杂,请执行手动步骤)。通常,我们处理生产数据库的副本。

  2. 然后,我们克隆该VM以创建生产VM。我们更改生产配置以使用生产数据库的升级副本。

我们没有名为“prod”的数据库,这很难使用。当我们进行升级时,我们在制作中有“prod_3”,在升级时有“prod_4”。然后我们更改配置文件以使用“prod_4”。 “prod_3”可以挂起,直到我们需要磁盘空间来创建“prod_5”。

1

的一些技巧,我发现在我自己的工作有所帮助:

  • 我保持个人wiki页面,每个项目包含全部项目相关数据。既然这只是我个人的消费,我可以根据需要组织每一个有机的。

  • 在整个项目过程中都会出现问题日志(在wiki页面或其他地方)。而不是用随机电子邮件轰炸你的客户,或者不小心忘记及时提出问题,保留日志可以让你每隔几天发送一封连贯和编辑好的电子邮件,并提供与项目相关的问题。

  • 本地进行所有开发(MAMP,XAMPP等)。这样你的客户端从来没有访问网站时,因此绕过不必要的混淆(为什么我现在得到空白???他们在5分钟前工作!!)。

  • 通过Capistrano从本地开发推送到您的登台服务器。这可以再次进行生产。更容易跟踪任何构建脚本(例如minifiying JS),并且比FTP更有效率

  • 使用SVN管理所有资产 - 内容,模板,comps,工作站点,数据库导出等。如果从一开始就设置好组织良好的回购协议,就不会失控。即使你知道你永远不会再碰一个文件,也不会伤害到额外的备份。