phpはなんどかインストールした事がありますが、apache環境でRuby on Rails使った事がありませんでした。業務的に今後も使わないかもしれないが、ココ数日のLPIC対策に疲れたので、息抜きに突っ込んでみることにします。
目次
passengerを導入する。
Railsをとりあえず使ってみたかったので、手元のCentOS 7.3 apache環境で動くように、Passengerを導入しようと思います。
事前知識が無いので、とりあえずググってみて以下サイトを参考にしてみます。
Apache上でRuby on Railsアプリケーションを動かす/Passenger(mod_rails for Apache)の利用 — Redmine.JP
なんか簡単に導入できそうですね。
# gem install passenger -bash: gem: command not found # yum install gem # gem install passenger Fetching: rake-12.0.0.gem (100%) Successfully installed rake-12.0.0 Fetching: rack-2.0.1.gem (100%) ERROR: Error installing passenger: rack requires Ruby version >= 2.2.2.
ふむ、どうやらRubyのバージョンが古いようです。まずはRubyのバージョンアップから始めます。
rbenvのインストール
こちらもフラフラググっていると、rbenvなるRubyのバージョン管理が出来るものがあると知った。gitからrbenvを使えるようにする。
#git clone https://github.com/sstephenson/rbenv.git ~/.rbenv #echo 'export PATH="$HOME/.rbenv/bin:$PATH"' >> ~/.bash_profile #echo 'eval "$(rbenv init -)"' >> ~/.bash_profile
再ログインしてrbenvが導入されたか確認します。
# rbenv --version rbenv 1.1.0-2-g4f8925a
rbenvは導入された模様。早速2.2.2より上のRubyを導入してみる。
# rbenv install -v 2.2.6 ERROR: Ruby install aborted due to missing extensions Try running `yum install -y readline-devel` to fetch missing dependencies. #yum insatll readline-devel # rbenv install -v 2.2.6
インストール途中でコケたので、readline-develをインストールし、再度実行したらうまくいきました。2.2.6を使えるようにします。
# rbenv versions 2.2.6 # ruby -v rbenv: ruby: command not found The `ruby' command exists in these Ruby versions: 2.2.6 # rbenv global 2.2.6 # ruby -v ruby 2.2.6p396 (2016-11-15 revision 56800) [x86_64-linux]
今度こそpassengerの導入
再度passengerを導入します。
# gem install passenger Fetching: rack-2.0.1.gem (100%) Successfully installed rack-2.0.1 Fetching: passenger-5.1.2.gem (100%) Building native extensions. This could take a while... Successfully installed passenger-5.1.2 Parsing documentation for rack-2.0.1 Installing ri documentation for rack-2.0.1 Parsing documentation for passenger-5.1.2 Installing ri documentation for passenger-5.1.2 Done installing documentation for rack, passenger after 49 seconds 2 gems installed
入ったっぽい。次は対話形式のスクリプトを使って導入を進めます。
# passenger-install-apache2-module -------------------------------------------- Checking for required software... * Checking for C compiler... Found: yes Location: /bin/cc * Checking for C++ compiler... Found: yes Location: /bin/c++ * Checking for Curl development headers with SSL support... Found: yes curl-config location: /bin/curl-config Header location: /usr/include/curl/curl.h Version: libcurl 7.29.0 Usable: yes Supports SSL: yes * Checking for Zlib development headers... Found: yes Location: /usr/include/zlib.h * Checking for Apache 2... Found: no * Checking for Apache 2 development headers... Found: no * Checking for Rake (associated with /root/.rbenv/versions/2.2.6/bin/ruby)... Found: yes Location: /root/.rbenv/versions/2.2.6/bin/ruby /root/.rbenv/versions/2.2.6/bin/rake * Checking for OpenSSL support for Ruby... Found: yes * Checking for RubyGems... Found: yes * Checking for Ruby development headers... Found: yes Location: /root/.rbenv/versions/2.2.6/include/ruby-2.2.0/ruby.h * Checking for rack... Found: yes * Checking for Apache Portable Runtime (APR) development headers... Found: no * Checking for Apache Portable Runtime Utility (APU) development headers... Found: no Some required software is not installed. But don't worry, this installer will tell you how to install them. Press Enter to continue, or Ctrl-C to abort.
apacheを見つけられていない罠。自分の環境はソースで突っ込んでいるので、とりあえずパスを通します。
# PATH=$PATH:/usr/local/apache2/bin # export PATH # echo $PATH /root/.rbenv/shims:/root/.rbenv/bin:/usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin:/root/bin:/usr/local/apache2/bin # passenger-install-apache2-module
先程のNoの部分がyesになり導入が進んでいる気配。最後にこんな事をいってきました。
Please edit your Apache configuration file, and add these lines: LoadModule passenger_module /root/.rbenv/versions/2.2.6/lib/ruby/gems/2.2.0/gems/passenger-5.1.2/buildout/apache2/mod_passenger.so <IfModule mod_passenger.c> PassengerRoot /root/.rbenv/versions/2.2.6/lib/ruby/gems/2.2.0/gems/passenger-5.1.2 PassengerDefaultRuby /root/.rbenv/versions/2.2.6/bin/ruby </IfModule> After you restart Apache, you are ready to deploy any number of web applications on Apache, with a minimum amount of configuration!
apache側の設定のようですね。これを設定側に入れれば良いのでしょうか。
apache側の設定
httpd.confを編集します。
# vi httpd.conf LoadModule passenger_module /root/.rbenv/versions/2.2.6/lib/ruby/gems/2.2.0/gems/passenger-5.1.2/buildout/apache2/mod_passenger.so <IfModule mod_passenger.c> PassengerRoot /root/.rbenv/versions/2.2.6/lib/ruby/gems/2.2.0/gems/passenger-5.1.2 PassengerDefaultRuby /root/.rbenv/versions/2.2.6/bin/ruby </IfModule>
apacheリロード後、passengerがmoduleとして読み込まれています。時間がある時に動かしてみたいですね。
追記:その後苦労したので、気が向いたらまとめます。