并创建和管理开发环境阻挠你,你慢下来,或者因开发让你分心? 你有问题,因为您的开发和部署环境有什么不同? 如果是这样,我有你的解决方案 - PuPHPet!
我不能为你说话,而是我的眼中钉软件开发一个是环境。 无论是创建和维护他们为不同的项目有不同的需求;确保环境的奇偶跨开发团队,(尤其是当他们远程);或环境,如开发,测试和生产之间。 在所有的这些,也可以是一个费 力的任务,尤其是当手动完成。
大家都知道,期权的数量,品种的选择,IT经理,团队领导或客户的要求可以是紧张。 他们可以(并)把我们在众多的方向,常常同时进行。
有选择的数据库如MySQL和PostgreSQL,Oracle和SQLServer的 。 有NoSQL的选择,如卡桑德拉,Hadoop的 ,和Redis的 。 有网络服务器的选择,如Apache和Nginx的 。 这样的例子不胜枚举和。
而当我们没有一个专门的系统管理员团队(比方说我们是一个单独的自由职业者或在一个非常小的团队),时间保持开发环境拍摄变得非常宝贵的 - 我们成为DEVOPS。
在追求结束这种痛苦,使整个过程尽可能高效的,我开始学习的任务流浪和木偶 。 从与同事和互联网研究讨论,这两个工具似乎是用于创建可重复使用的环境标准 。 如果你不熟悉这些优秀的工具,这里是从各自的手册两短的摘录:
游民:
创建和配置轻巧,重现性好,可移植的开发环境。 无业游民将改变您的工作方式
木偶:
木偶是IT自动化软件,可帮助系统管理员管理基础设施的整个生命周期,从供应和配置,以协调和汇报。 使用Puppet,您可以轻松地自动执行重复性任务,快速部署关键应用,并主动管理转变,从服务器10S扩展到1000个,内部部署或在云中。
然而,和大多数人一样,在现代世界,我不耐烦了。 和你一样,我有很多事情,再加上我并没有谋求成为一个大师。 我觉得必须有一种方法来加快速度很快,但没有成为一个迷。
经过进一步的google搜索,我碰到这篇文章,标的PuPHPet ,一个优秀的GUI工具提供了一个简单的向导,它会立即创建一个木偶供电流浪的配置, 使用 。
最初开始短短数个月之前由胡安Treminio , PuPHPet使创建完全定制的PHP开发人员在堆如{W,M,L} AMP的死简单的环境。
它着重于5个方面:
无论你希望加入PHP 5.5运行PostgreSQL和Nginx的或PHP 5.4运行Apache 2和MySQL,您可以快速创建和下载配置,越来越朝着分钟。
诚然,有很多更比这些选择的环境,但是,公平地说,它的初期,它已经提供了,它真的很好的东西。
随着PuPHPet,你会和一个半小时内运行,而你所要做的就是运行:
vagrant up
这是正确的。 在未压缩的PuPHPet存档,您只需要那个命令运行,稍等一下,你准备好去。 不相信我? 让我们逐步从开始的过程中共同完成。
之后,我们就大功告成了,我衷心鼓励你玩你的心内容,改变选项,添加删除软件包和更多,看看你找到。 我相信你会留下深刻的印象。
警告我们开始之前一个字。 其中我遇到当我刚开始是有两个流浪和VirtualBox的权利版本的最大问题。 看来好像我只得到部分的方式,需要手动做休息。 这是从来没有明确究竟出了什么或如何完成这个过程了。
所以,如果你发现事情不工作,尝试不同版本的两个包。 我目前正在运行的流浪1.3.5和4.3.2的VirtualBox ,他们已经完美每一次合作。
首先,安装这两个包的副本。
有了它们安装,打开 https://puphpet.com 。 你可以看到,右侧上方,有四个初始选择: 本地 , 数字海洋,Rackspace和亚马逊网络服务 。 选择本地,因为我们不是在本教程中使用这些在线服务。
在“本地虚拟机详细信息”中,我们可以指定虚拟机的:
- 操作系统
- 主机名
- IP地址
- 内存分配
对于今天的例子中,我们使用的是Debian的喘息7.2的x64用VirtualBox的4.3。 这使得我们可以使用PHP 5.5或5.4。 欢迎留下剩余的三个设置,因为它们是,最好还是调整为适合你。
接下来是本地虚拟机转发的端口 。 我没有配置它,但如果你想安装在主机上的一些端口转发到子虚拟机的端口,然后根据需要配置它们在这里。
在这里,我们开始看到的力量和灵活性,流浪汉和木偶提供。 在框同步文件夹源指定将映射到一个目录上的客户端虚拟机在由箱同步文件夹目标所指定的位置的本地目录。 我已经离开了默认值,这两个,也为共享文件夹类型。
如果你想设置一些自定义目录在你的虚拟机,此选项是得心应手。 假设你有下一个现有的工作副本~/Documents/workspace/your-project 。 你可以直接在你的虚拟机的Web服务器的Web根这映射到一个目录。 这样,你可以在当地发展,没有同步或复制的要求给虚拟机。
如果有,您需要提供特定的软件包,如GIT,颠覆,VIM等,然后一一列举了。 有一点要记住,是你需要知道的包名作为你选择的操作系统中指定。 没有列表,在弹出当你输入提供。
Apache的(2)或Nginx的? 在本教程中,我将使用Apache。 配置选择既简单又直接。 首先指定要通过键入在Apache模块现场安装并启用的模块。 这将弹出供您选择可用选项的列表 - 有助于确保无差错的过程。
接下来是虚拟主机的配置。 什么是服务器名称和您的应用程序的别名? 首先指定它们,然后在根目录和端口。我们要做的是设置为我们在盒同步文件夹指定目标 ,保持整洁,简单的文档根目录相同的目录中。 除非你有特殊的需要,离开端口在默认80。
最后两个设置, 环境变量和设置AllowOverride,只有当你的应用程序需要改变它。 今天,默认值都是精品。
只有几个选项,可在这里,但他们对于我们所需要的足够好。 (为什么你想什么吗?)我已经离开的PHP 5.5的默认值。 我也离开了作曲家选中。 如果你还没有使用的作曲家,还是不知道什么都大惊小怪,阅读这个优秀的文章由本·拉姆齐 ,或这个职位上作曲这里SitePoint。
在INI设定 ,我已经接受了默认值,然后在allow_url_fopen选项,allow_url_include,error_log中 , 记录file_uploads补充,并apc.enabled。 可以自由地做同样的,或浏览并从广泛的列表中进行选择。
我已经改变了我的PHP时区欧洲/柏林因为这是最接近我。 但改变你作为最适合你的位置。 对于PHP模块,我的名单是气候 , 国际,mcrypt的,CGI,卷曲,memcached的,memcache的,pspell,整洁和SQLite。 滚动列表,并添加你需要(或想要)的人。 对于PEAR和PECL模块,我已经离开了这些,因为他们是。
我选择安装Xdebug的,采取默认设置,但不XHProf的。 XDebug的仅仅是优秀的,所以我强烈建议你使用它。
好吧,我们正在认真了。 对于今天的例子中,我选择MySQL中,root密码设置密码 ,并在剩下的所有特权。数据库名是sitepoint,用户名是TESTUSER和密码,testpassword。 我已经在这里不停的选择,简单,以免过于复杂的情况。 我没有一个SQL脚本来对虚拟机负载运行,所以已经离开了这个空白。
现在,只需点击非常大的按钮继续前进的话,做出来。 你会看到下载的出现在你的下载目录。 之后,它的完成,解压存档,并cd到你的终端的目录。 从那里,跑vagrant up 。
这开始建立虚拟机的过程。 如果你还没有下载的文件箱又或者还没有一个符合您所指定的操作系统,你将不得不等待更长的时间,因为它的下载,虚拟机可建之前。 如果一切顺利,你会看到如下输出:
? vagrant up Bringing machine 'default' up with 'virtualbox' provider... [default] Importing base box 'debian-wheezy72-x64-vbox43'... [default] Matching MAC address for NAT networking... [default] Setting the name of the VM... [default] Clearing any previously set forwarded ports... [default] Creating shared folders metadata... [default] Clearing any previously set network interfaces... [default] Preparing network interfaces based on configuration... [default] Forwarding ports... [default] -- 22 => 2222 (adapter 1) [default] Running 'pre-boot' VM customizations... [default] Booting VM... [default] Waiting for machine to boot. This may take a few minutes... [default] Machine booted and ready! [default] Configuring and enabling network interfaces... [default] Mounting shared folders... [default] -- /vagrant [default] -- /var/www [default] -- /tmp/vagrant-puppet/manifests [default] Running provisioner: shell... [default] Running: /var/folders/_w/k6fxbl615w700lgkrtt0vb3w0000gn/T/vagrant-shell20131126-3538-kid3ga stdin: is not a tty ____ ____ _ _ ____ _ generated using | _ \ _ _| _ \| | | | _ \ ___| |_ ___ ___ _ __ ___ | |_) | | | | |_) | |_| | |_) / _ \ __| / __/ _ \| '_ ` _ \ | __/| |_| | __/| _ | __/ __/ |_ | (_| (_) | | | | | | |_| \__,_|_| |_| |_|_| \___|\__(_)___\___/|_| |_| |_| Created directory /.puphpet-stuff Running initial-setup apt-get update Finished running initial-setup apt-get update [default] Running provisioner: shell... [default] Running: /var/folders/_w/k6fxbl615w700lgkrtt0vb3w0000gn/T/vagrant-shell20131126-3538-1116fzj stdin: is not a tty Downloading http://apt.puppetlabs.com/puppetlabs-release-wheezy.deb Finished downloading http://apt.puppetlabs.com/puppetlabs-release-wheezy.deb Running update-puppet apt-get update Finished running update-puppet apt-get update Updating Puppet to latest version dpkg-preconfigure: unable to re-open stdin: No such file or directory Finished updating puppet to latest version: Puppet v3.3.2 Created empty file /.puphpet-stuff/update-puppet ... Info: Creating state file /var/lib/puppet/state/state.yaml Notice: Finished catalog run in 436.21 seconds
这表明,一切顺利。
现在,虚拟机的内置,登录并检查出来。 要做到这一点,从同一目录,运行vagrant ssh 。 一旦你在,能够快速验证所有的确定,执行sudo netstat -tlnp 。 这说明哪些服务正在运行。 它应该给你输出匹配以下
Active Internet connections (only servers) Proto Recv-Q Send-Q Local Address Foreign Address State PID/Program name tcp 0 0 0.0.0.0:111 0.0.0.0:* LISTEN 1643/rpcbind tcp 0 0 0.0.0.0:39284 0.0.0.0:* LISTEN 1678/rpc.statd tcp 0 0 0.0.0.0:22 0.0.0.0:* LISTEN 2643/sshd tcp 0 0 127.0.0.1:5432 0.0.0.0:* LISTEN 13637/postgres tcp 0 0 127.0.0.1:25 0.0.0.0:* LISTEN 2399/exim4 tcp6 0 0 :::111 :::* LISTEN 1643/rpcbind tcp6 0 0 :::80 :::* LISTEN 31623/apache2 tcp6 0 0 :::22 :::* LISTEN 2643/sshd tcp6 0 0 ::1:5432 :::* LISTEN 13637/postgres tcp6 0 0 ::1:25 :::* LISTEN 2399/exim4 tcp6 0 0 :::37887 :::* LISTEN 1678/rpc.statd
在那里,你看到Apache和PostgreSQL的运行。 如果你看看在/etc/apache2/sites-enabled/你会看到你的虚拟主机的配置,使用伪随机名称。 如果你添加的主机名/etc/hosts在本地机器上,那么你就可以在你的浏览器中打开的主机名并查看结果页面。
所以你有它。 好吧,第一时间通过,像什么,它似乎想了很多步骤来执行。 但是当你越来越熟悉,你会得到快了很多。 更重要的是,你不需要每次都从头重新创建。
如果拖动puppet/hieradata/common.yaml到puphpet.com,它会自动填写表单相匹配的配置控制。 然后,只需调节,以满足您的需求。 所以,一旦你做到了第一个,随后的是更快,更容易。
你怎么看? 你是热衷于使用它,并留下用手建设背后的虚拟机的日子? 分享您的想法的意见。