nginx cookbookのpassengerレシピのCentOS7対応

nginxのcookbookである miketheman/nginx にはpassengerをモジュールとして追加できるレシピがあります。

そこで、CentOS7上で利用するために、attributeの node[nginx][repo_source]passengernode[‘nginx’][‘install_method’]package に設定してインストールしようとしたところ、

recipes/package.rbには

if platform_family?('rhel')
  if node['nginx']['repo_source'] == 'epel'
    include_recipe 'yum-epel'
  elsif node['nginx']['repo_source'] == 'nginx'
    include_recipe 'nginx::repo'
    package_install_opts = '--disablerepo=* --enablerepo=nginx'
  elsif node['nginx']['repo_source'].to_s.empty?
    log "node['nginx']['repo_source'] was not set, no additional yum repositories will be installed." do
      level :debug
    end
  else
    fail ArgumentError, "Unknown value '#{node['nginx']['repo_source']}' was passed to the nginx cookbook."
  end

としてrepo_source==passengerの選択肢はなく、

recipes/repo_passenger.rb には

case node['platform_family']
when 'rhel', 'fedora'

  log 'There is not official phusion passenger repo for redhat based systems.' do
    level :info
  end

とあり、パッケージリポジトリがない。

また、readme.mdには

Basic configuration to use the official Phusion Passenger repositories:
node['nginx']['repo_source'] – ‘passenger’
node['nginx']['package_name'] – ‘nginx-extras’
node['nginx']['passenger']['install_method'] – ‘package’

とあるが、nginx-extras はCentOSのパッケージにはないため、インストールができない。

一方、PHUSION Passengerの公式ドキュメントには

We provide an official Phusion Passenger YUM repository with packages for Red Hat Enterprise Linux and CentOS.

とあり、パッケージリポジトリが用意されている。そこで、これをrepo_passenger.rbに組み込み、passengerモジュールをインストールする

変更ファイル

  • recipes/package.rb
    プラットフォームファミリーがrhelの場合にrepo_source==’passenger’の選択肢を増やす
  • recipes/repo_passenger.rb
    RHEL,CentOS用のリポジトリファイルを/etc/yum.repos.dにおいて、キャッシュを更新する
  • attributes/passenger.rb
    /etc/nginx/conf.d/passenger.confにあるpassenger_rootの値が違っていたため、プラットフォームファミリーがrhelの場合の時だけ変更する

オリジナルからの変更点一覧: https://github.com/mistymagich/nginx/commit/6327617a066cb09e60703b8dac17fe4c746dc15b?diff=unified

miketheman/nginxをforkして、上記変更を適用したものをmistymagic/nginxに置きました。

またそれを使ってインストールしたpassengerに対して、PHUSION Passengerの公式ドキュメントにあるデモをVagrant+Chefの組み合わせで動かしたデモをmistymagich/nginx-passenger-on-CentOS7-demo
に置きました。

広告

コメントを残す

以下に詳細を記入するか、アイコンをクリックしてログインしてください。

WordPress.com ロゴ

WordPress.com アカウントを使ってコメントしています。 ログアウト / 変更 )

Twitter 画像

Twitter アカウントを使ってコメントしています。 ログアウト / 変更 )

Facebook の写真

Facebook アカウントを使ってコメントしています。 ログアウト / 変更 )

Google+ フォト

Google+ アカウントを使ってコメントしています。 ログアウト / 変更 )

%s と連携中