[英]Can't get chef to provision PHP 5.4.x on an Ubuntu virtual box
自從上一個關於使用廚師為由vagrant控制的Ubuntu基本框提供PHP 5.4的問題以來,我感覺好像已經前進了兩步。 我已經放棄嘗試使用apt來拉正確版本的PHP,並決定嘗試使用源代碼構建。
我的食譜
# Name of the role should match the name of the file
name "webserver"
default_attributes(
"build_essential" => {
"compiletime" => true
}
)
override_attributes(
"mysql" => {
"server_root_password" => 'reverse',
"server_repl_password" => 'reverse',
"server_debian_password" => 'reverse'
},
"php" => {
"install_method" => "source",
"php54" => true
}
)
# Run list function we mentioned earlier
run_list(
"recipe[apt]",
"recipe[build-essential]",
"recipe[xml]",
"recipe[chef-php54]",
"recipe[openssl]",
"recipe[apache2]",
"recipe[apache2::vhosts]",
"recipe[apache2::mod_rewrite]",
"recipe[apache2::mod_ssl]",
"recipe[mysql]",
"recipe[mysql::server]",
"recipe[php]",
"recipe[php::module_gd]",
"recipe[php::module_curl]",
"recipe[php::module_mysql]",
"recipe[php::module_apc]",
"recipe[chef-php-extra::default]",
"recipe[chef-php-extra::development]",
"recipe[apache2::mod_php5]",
"recipe[database::mysql]",
"recipe[database::import]",
"recipe[memcached]",
"recipe[varnish]"
)
我vagrant up
時沒有明顯的錯誤信息; 而這一次,當我ssh到盒子里做php -v
,我至少知道了
PHP 5.4.15 (cli) (built: Jul 18 2013 17:42:34)
Copyright (c) 1997-2013 The PHP Group
Zend Engine v2.4.0, Copyright (c) 1998-2013 Zend Technologies
這是前進的一步。
第一步后退是php -v
首先顯示的大量消息:
Failed loading /usr/lib/php5/20090626/xdebug.so: /usr/lib/php5/20090626/xdebug.so: undefined symbol: output_globals
PHP Warning: PHP Startup: Unable to load dynamic library '/usr/local/lib/php/extensions/no-debug-non-zts-20100525/apc.so' - /usr/local/lib/php/extensions/no-debug-non-zts-20100525/apc.so: cannot open shared object file: No such file or directory in Unknown on line 0
PHP Warning: PHP Startup: Unable to load dynamic library '/usr/local/lib/php/extensions/no-debug-non-zts-20100525/gd.so' - /usr/local/lib/php/extensions/no-debug-non-zts-20100525/gd.so: cannot open shared object file: No such file or directory in Unknown on line 0
PHP Warning: PHP Startup: Unable to load dynamic library '/usr/local/lib/php/extensions/no-debug-non-zts-20100525/mcrypt.so' - /usr/local/lib/php/extensions/no-debug-non-zts-20100525/mcrypt.so: cannot open shared object file: No such file or directory in Unknown on line 0
PHP Warning: PHP Startup: Unable to load dynamic library '/usr/local/lib/php/extensions/no-debug-non-zts-20100525/mysql.so' - /usr/local/lib/php/extensions/no-debug-non-zts-20100525/mysql.so: cannot open shared object file: No such file or directory in Unknown on line 0
PHP Warning: PHP Startup: Unable to load dynamic library '/usr/local/lib/php/extensions/no-debug-non-zts-20100525/mysqli.so' - /usr/local/lib/php/extensions/no-debug-non-zts-20100525/mysqli.so: cannot open shared object file: No such file or directory in Unknown on line 0
PHP Warning: PHP Startup: Unable to load dynamic library '/usr/local/lib/php/extensions/no-debug-non-zts-20100525/pdo.so' - /usr/local/lib/php/extensions/no-debug-non-zts-20100525/pdo.so: cannot open shared object file: No such file or directory in Unknown on line 0
PHP Warning: PHP Startup: Unable to load dynamic library '/usr/local/lib/php/extensions/no-debug-non-zts-20100525/pdo_mysql.so' - /usr/local/lib/php/extensions/no-debug-non-zts-20100525/pdo_mysql.so: cannot open shared object file: No such file or directory in Unknown on line 0
第二步是當我將瀏覽器指向phpinfo()文件時,它仍然顯示PHP Version 5.3.10-1ubuntu3.7
; 很明顯,mod_php仍然選擇了錯誤的版本。
使用諸如Chef之類的置備工具可能被認為是最佳實踐,但是當我浪費了6天的時間而無法完成我本可以在幾個小時內手動完成的工作時,我感到非常沮喪。
Google似乎無法提供任何答案:任何人都可以幫助我指出正確的方向,並向我證明廚師確實是最佳實踐,而不僅僅是浪費時間和精力。
下載最新的Ubuntu服務器
使用virtualbox創建一個新的虛擬機,我使用的名稱為'devbox_ubuntu'
引導您的虛擬機並安裝廚師/流浪者所需的軟件包
$ sudo bash
$ apt-get install sudo ruby ruby-dev libopenssl-ruby rdoc ri irb build-essential ssl-cert curl rubygems puppet
$ echo “deb http://apt.opscode.com/ `lsb_release -cs`-0.10 main” tee /etc/apt/sources.list.d/opscode.list
$ gpg --keyserver keys.gnupg.net --recv-keys 83EF826A
$ gpg --export packages@opscode.com | tee /etc/apt/trusted.gpg.d/opscode-keyring.gpg > /dev/null
$ apt-get update
$ apt-get install opscode-keyring chef
不填寫網址
添加無業游民的用戶
$ adduser vagrant
passwrd : vagrant
$ groupadd admin
$ usermod -a -G admin vagrant
為管理員組設置sudo
$ visudo
%admin ALL=(ALL) NOPASSWD: ALL
禁用SSHD的DNS
$ vi /etc/etc/ssh/sshd_config
UseDNS no
SU到無業游民的用戶並設置SSH密鑰
$ su vagrant
$ mkdir -p ~/.ssh
$ chmod 0700 ~/.ssh
$ curl -o ~/.ssh/authorized_keys https://raw.github.com/mitchellh/vagrant/master/keys/vagrant.pub
$ chmod 0600 ~/.ssh/authorized_keys
停止虛擬機並在本地計算機上使用流浪漢設置虛擬機
$ vagrant package --base devbox_ubuntu
$ mv package.box devbox_ubuntu.box
等一會兒 ...
$ vagrant box add devbox_ubuntu devbox_ubuntu.box
$ mkdir devbox_ubuntu && cd devbox_ubuntu
$ vagrant init devbox_ubuntu
$ vagrant up
[默認]導入基本框'devbox_ubuntu'... ....很多輸出
做一個測試SSH登錄以查看是否一切正常
$ vagrant ssh
$ exit
$ vagrant halt
$ vagrant destroy
涼。 這就是全部。 現在設置一些食譜(apache2和dotdeb php 5.4)
$ mkdir cookbooks
$ cd cookbooks
$ git clone https://github.com/opscode-cookbooks/apache2
$ git clone https://github.com/tlenss/misc.git
$ mv misc/chef/cookbooks/dotdeb .
$ rm -rf misc
在Vagrantfile中設置配方
$ cd ..
$ vi Vagrantfile
config.vm.provision :chef_solo do |chef|
chef.cookbooks_path = "cookbooks"
chef.add_recipe("dotdeb")
chef.add_recipe("dotdeb::php54")
chef.add_recipe("apache2");
chef.add_recipe("apache2::mod_php5");
end
再次啟動虛擬機,然后讓廚師做。 一旦完成。 登錄並驗證PHP版本
$ vagrant up
$ vagrant ssh
$ php -v
PHP 5.4.17-1~dotdeb.0 (cli) (built: Jul 6 2013 17:53:27)
Copyright (c) 1997-2013 The PHP Group
Zend Engine v2.4.0, Copyright (c) 1998-2013 Zend Technologies
我使用了Yevgeniy Viktorov修改過的dotdeb食譜。 不久前寫了一篇關於它的小文章 。 可能會有幫助!
添加其他PHP擴展名我使用來自https://github.com/opscode-cookbooks/php的廚師的標准PHP食譜。 顯然,Ubuntu和dotdeb的PHP 5.4與libmysqlclient存在依賴關系問題。 使用mysqlnd代替mysql應該解決這個問題
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.