10

我终于致力于真正正确地学习软件设计过程,以提高我的技能并发展我的业务。这意味着采用版本控制 (git),设置开发-登台-生产环境,并尽可能保持这些环境的配置相似。

我真的赶上了最后一步,即选择一种解决方案来自动化和同步我的服务器设置。我研究过 Chef、Puppet 和 Fabric,但就我的目的而言,它们似乎都过于复杂。我是:

  • 在单个服务器上开发小型 Web 应用程序
  • 将在具有中级 PHP 和 UNIX 技能的 LAMP 环境中进行开发
  • 不会大量修改环境变量(主要是 php.ini、apache 配置)

对于比掌握复杂的 Chef 环境或学习 Python 以使用 Fabric 更容易实施的解决方案的任何建议,我将不胜感激。如有必要,我可以这样做,但鉴于我非常简单的需求,我希望有一个更基本/优雅的解决方案。

4

4 回答 4

8

在我工作的公司中,我们或多或少有相同的需求,我们只需设置几个 bash 脚本。

基本上它设置了 git repo(本地和远程裸机),安装 apache2 和 PHP5(以及一些 php 扩展),配置 apache 的 vhost、php.ini,如果需要,安装框架和引导项目(对我们来说是 symfony)。

我们有另一个脚本,它启动一些 EC2 实例,运行前面提到的脚本,启动测试套件,并下载这些脚本的报告。

Chef & Puppet 运行良好,但有点矫枉过正,除非您有许多项目同时运行。

编辑 :

如果您想在提交/推送后运行脚本(例如部署到登台/预生产服务器、启动持续集成构建等),可以使用 git call 来执行此操作post-hook,请参阅使用 Git 推送部署项目

于 2011-07-28T09:03:15.973 回答
5

为此,我强烈建议您查看Ansible

它是一个完整的解决方案,这意味着它可以处理配置管理、部署等。但是,根据我的经验,它比 Chef 或 Puppet 更容易学习,因为您可以从执行基本的 shell 命令开始并从那里继续。

无需学习一门新语言;你要做的所有配置和规范都是在 YAML 中完成的,它只是结构化的文本。

总体而言,Ansible 将为您提供 Chef 或 Puppet 的大部分功能,希望您会发现它更容易上手。

于 2013-08-12T11:16:01.420 回答
4

如果您对专业的 Web 开发很认真,我强烈建议您再看一下 Chef。它对我们(我和我的同事)非常有用。我知道这可能看起来有点矫枉过正,但在我看来,优势远远超过学习曲线。尝试维护不同的服务器环境(以及同事之间的本地开发环境)需要做更多的工作。此外,由于已经有可用的食谱/食谱,因此 Chef 使安装 Apache、PHP 和 MySQL 变得超级容易。

另外,请务必查看Vagrant。它与 Chef 和VirtualBox一起使用,使得设置本地开发环境变得非常简单。

此外,如果您正在开发 Zend Framework 项目,您可能会对Zend Framework Boilerplate 项目感兴趣,这是一个使用 Vagrant 的一体化 LAMP 开发环境。

于 2011-10-04T15:23:01.313 回答
1

因为Simple LAMP Development你根本不需要任何东西。并不是说简单的开发不能自动化,而是因为对于简单的开发来说,自己编写一些脚本通常就足够了(更容易和更快)(即使是在 Python 中)。

当您意识到您的自定义脚本难以维护或不够用时,您就可以使用 Fabric(shell 命令自动化)和/或 Chef/Puppet(服务器配置管理)等工具了。它们不容易学习,因为它们管理的系统互连并不简单(显然不是你的情况)。

对于您的单个服务器,我会说 README + Mercurial(如果您需要 GitHub,则使用 Git)加上一些符号链接应该足以管理配置、源和服务器设置。对于自动化和部署,只需编写一个脚本,将您的站点上传到 FTP/SSH,重新启动服务器,执行测试,无论您决定什么。那就是Simple Deployment for Simple Development。如果您宁愿避免为此编写 PHP 并且不了解 shell - 那么 Fabric 将为您节省一些时间。

一旦你的脚本准备好了,你就已经知道你的问题,你可以在后台学习 Chef/Puppet,看看是否值得为你的环境复杂化。

如果您选择尝试 Chef - 不要从 Chef Solo 开始 - 对于初学者来说,这是一种有毒的零食 - 使用 Hosted Chef + Client - 您可以免费设置它。对 Puppet 无话可说 - 我选择了 Chef,因为我妈妈说我需要知道如何烹饪。

于 2012-06-22T17:10:46.760 回答