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


Alternatives to Chef/Fabric/Puppet for Simple LAMP Development?

为了提高我的技能和发展我的业务,我终于承诺真正学习正确的软件设计过程。这意味着采用版本控制(git),建立一个开发阶段生产环境,并保持这些环境的配置尽可能相似。

我真的陷入了最后一步,选择一个解决方案来自动化和同步我的服务器设置。我查过Chef, Puppet &织物,但对我来说,它们似乎都过于复杂了。我:

  • 在单个服务器上开发小型web应用
  • 将在LAMP环境下使用中级PHP进行开发UNIX技能
  • 不会大量修改环境变量(主要是php.ini, apache configs)

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

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

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

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

厨师,Puppet工作得很好,但它有点过度了,除非你有许多项目同时运行。

编辑:

如果你想在提交/推送之后运行一个脚本(比如部署到预生产服务器,启动你的持续集成构建,等等),有一种方法可以做到这一点,使用git调用post-hook,参见使用git push部署一个项目

我强烈建议你看看Ansible。

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

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

总的来说,Ansible会给你很多厨师或木偶将在你的水平,希望你会发现它更容易上手。

如果你认真对待专业的web开发,我强烈建议你再看看Chef。这对我们(我和我的同事)来说真的很有用。我知道这可能看起来有点矫枉过正,但在我看来,好处远远超过了学习曲线。维护不同的服务器环境(以及同事之间的本地开发环境)需要做更多的工作。此外,Chef使得安装Apache, PHP和MySQL变得超级容易,因为已经有烹饪书/食谱可用。

还有,一定要看看《流浪者》。它与Chef和VirtualBox一起工作,使设置本地开发环境变得非常简单。

同样,如果你正在开发一个Zend框架项目,你可能会对Zend框架样板项目感兴趣,它是一个使用Vagrant的一体化LAMP开发环境。

对于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 -它是免费的。我不能说什么木偶-我选择厨师,因为我妈妈说我需要知道如何做饭。