我正在使用 Vagrant 和 Puppet,为基于 Apache/PHP/Mongo 的项目配置一台开发机器。
我已经正确设置了所有组件(使用来自 Puppet Forge 的模块),但我无论如何都无法弄清楚如何让 PHP 与 Mongo 对话。phpinfo()
显示未安装 Mongo 驱动程序 - 这很有意义,因为我不知道如何安装它。
我用来安装 PHP 的 puppet 模块来自 Lab42,可从以下网址获取http://github.com/lermit/puppet-php。自述文件演示了如何切换模块但不是驱动程序(据我所知,Mongo 连接是通过驱动程序而不是模块建立的)。
任何帮助、提示或.pp
实际执行此操作的文件链接都将非常受欢迎。谢谢!
更新:
想出了这条神奇的线:php::pecl::module { "mongo": }
基本上是通过 PECL 添加 Mongo 支持。但是当 Puppet 尝试运行它时,我得到了以下信息:
err: /Stage[main]/Project/Php::Pecl::Module[mongo]/Package[php-mongo]/ensure:
change from purged to present failed:
Execution of '/usr/bin/apt-get -q -y -o DPkg::Options::=--force-confold install php5-mongo'
returned 100: Reading package lists...
Building dependency tree...
Reading state information...
E: Couldn't find package php5-mongo
因此,有几件事我不明白:
- 如果我要求 Puppet 通过 PECL 安装模块,为什么它要通过 apt-get 来执行?
- 为什么找不到该软件包?我应该添加哪个 repo 才能使其工作?
再次感谢。
答案1
我确信这两个问题的答案都在您正在使用的 puppet 模块中。
使用其他人开发的模块当然具有很大的优势,因为您可以从他们嵌入在模块中的知识中获益,但我建议您:
首先,弄清楚如何手动安装(即不使用 puppet)
其次,创建一个简单的 Puppet 模块来自动化
第三,尝试使用您找到的 puppet 模块,尤其是在 puppetforge 上:https://forge.puppetlabs.com/看看它们是否运行得更好或者是否提供附加功能。
关于 Vagrant 和 Puppet 有很多很好的资源,但我最喜欢的是部署 Railshttp://pragprog.com/book/cbdepra/deploying-rails- 显然专注于 Ruby on Rails,但它从头开始构建了一个听起来很像你的 Vagrant/Puppet/VirtualBox 测试环境。
答案2
对我来说答案是参数use_package
:
php::pecl::module { "mongo": use_package => 'no', }
现在它非常好用!