Chef / Fabric / Puppet用于简单LAMP开发的替代方案?

时间:2011-07-28 08:52:57

标签: php lamp chef puppet

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

在选择自动化和同步我的服务器设置的解决方案时,我真的赶上了最后一步。我看过厨师,Puppet&面料,但就我的目的而言,它们看起来都过于复杂。我是:

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

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

4 个答案:

答案 0 :(得分:8)

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

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

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

厨师& Puppet效果很好,但它有点矫枉过正,除非你有很多项目在同一时间运行。

修改:

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

答案 1 :(得分:5)

我强烈建议您为此目的查看Ansible

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

没有必要学习一门新语言;您将要执行的所有配置和规范都是在YAML中完成的,这只是结构化文本。

总的来说,Ansible将为您提供大部分Chef或Puppet在您的关卡中的内容,并希望您会发现它更容易入门。

答案 2 :(得分:4)

如果您对专业网站开发非常认真,我强烈建议您再次看看Chef。它对我们(我和我的同事)非常有用。我知道这看起来有点矫枉过正,但在我看来,优势远大于学习曲线。尝试维护不同的服务器环境(以及同事之间的本地开发环境)需要做更多的工作。此外,Chef还可以非常轻松地安装Apache,PHP和MySQL,因为已经有了烹饪书/食谱。

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

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

答案 3 :(得分:1)

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

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

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

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

如果你选择尝试厨师 - 不要从Chef Solo开始 - 这对于初学者来说是一种有毒的零食 - 使用Hosted Chef + Client - 它是免费的。不能为Puppet说什么 - 我之所以选择厨师,是因为我妈妈说我需要知道如何做饭。