流浪者加厨师Centos6.4 PHP5.3.3 → 5.3.28版本升级

背景 – Bei3 Jing4

背景描述了一个事件或情况发生的环境和历史条件。

在AWS上运行的服务的PHP版本与使用Vagrant构建的开发环境的PHP版本存在差异。
生产环境的版本比开发环境更高,由于开发环境无法正常运行生产环境可用的函数,因此决定更新开发环境的PHP版本。

环境

亚马逊网络服务

亚马逊的Linux系统
PHP版本5.3.28

开发环境

CentOS 6.4
PHP 5.3.3 = CentOS 六点四版 PHP 五点三点三

目标 (mù

使用Chef-solo,在vagrant up的过程中启动一个安装了PHP5.3.28的CentOS。

调查 chá)

在CentOS6.4的yum仓库中,最新版本的PHP是5.3.3,无法直接安装5.3.28版本。
我尝试了epal和remi等仓库,但都只找到了5.4或5.5版本的PHP,没能找到我想要的5.3.28版本的PHP仓库,让我感到很麻烦。

经过各种探索后,我在ius仓库中找到了一个叫做php53u的软件包,所以决定使用它来编写配方。

食谱

  config.vm.provision :chef_solo do |chef|
    chef.cookbooks_path = "cookbooks/site-cookbooks"
    chef.add_recipe "php"

    # You may also specify custom JSON attributes:
    chef.json = { 
      php53u: {
        ius_rpm_url: 'http://dl.iuscommunity.org/pub/ius/stable/CentOS/6/x86_64/ius-release-1.0-11.ius.centos6.noarch.rpm',
        ius_rpm_filename: 'ius-release-1.0-11.ius.centos6.noarch.rpm'
      },
    }
# php53u repository導入
remote_file "/tmp/#{node['php53u']['ius_rpm_filename']}" do
  source "#{node['php53u']['ius_rpm_url']}"
  not_if { ::File.exists?("/tmp/#{node['php53u']['ius_rpm_filename']}") }
end

package node['php53u']['ius_rpm_filename'] do
  action :install
  provider Chef::Provider::Package::Rpm
  source "/tmp/#{node['php53u']['ius_rpm_filename']}"
end

# phpインストール
%w{php53u php53u-cli php53u-common php53u-dba php53u-devel php53u-mbstring php53u-mysql php53u-pdo php53u-pear php53u-pecl-apc php53u-pecl-memcache php53u-xml php53u-xmlrpc pcre-devel}.each do |p|
  package p do
    action :install
    options "--enablerepo=ius"
  end
end

刚刚以为已经轻松结束了,结果发现ius仓库中没有我们在服务中使用的pecl_http软件包。考虑了一下该怎么办,最后决定直接使用pecl命令安装。

execute "install pecl_http" do
  command "pecl install pecl_http-1.7.6"
  action :run
end

# pecl_http設定
template "http.ini" do
  path "/etc/php.d/http.ini"
  source "http.ini.erb"
  mode 0644
  notifies :restart, 'service[httpd]'
end
extension=http.so

最初我尝试用pecl命令安装pecl_http-2.0.4版本,但由于http.so未能成功加载,导致出现错误。因此,我参考了这里并安装了pecl_http-1.7.6版本。

$ vagrant up                                                                                                                                                                                                                 [20:39:53]
Bringing machine 'default' up with 'virtualbox' provider...
==> default: Importing base box 'centos64'...
==> default: Matching MAC address for NAT networking...

〜中略〜

[2014-06-04T11:57:10+00:00] INFO: Chef Run complete in 852.584544316 seconds
[2014-06-04T11:57:10+00:00] INFO: Running report handlers
[2014-06-04T11:57:10+00:00] INFO: Report handlers complete

运行得很顺利。太好了,太好了。

广告
将在 10 秒后关闭
bannerAds