我终于致力于正确学习软件设计过程,以提高我的技能和发展我的业务。这意味着采用版本控制(git),设置开发阶段生产环境并尽可能保持这些环境的配置。
在选择自动化和同步我的服务器设置的解决方案时,我真的赶上了最后一步。我看过厨师,Puppet&面料,但就我的目的而言,它们看起来都过于复杂。我是:
对于比掌握复杂的Chef环境或学习Python使用Fabric更容易实现的解决方案,我将不胜感激。如果有必要,我可以这样做,但我希望有一个更基本/更优雅的解决方案,因为我非常简单的需求。
答案 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说什么 - 我之所以选择厨师,是因为我妈妈说我需要知道如何做饭。