passengerのインストールで毎回つまづくのでいい加減にメモする


Passenger 201404

3月から今月の頭にかけて、しこたまRailsでAPIを作っていました。

で、β版のリリース直前になってWebサーバーどうしようか? と。(てか、それまで考えていなかったのもどうかと思うんですけど)ま。Passengerでいきますか、と。

ただ、なんでか知らいんですがいっつもちょとつまづくので戒めエントリーでやんす。
特に、ソースからインストールしたApacheを使っている場合は毎度つまづきます

環境は以下

・CentOS
・Ruby 2.0
・Apache2 (httpd-2.4.7)でprefix=/usr/local/apache2


インストール手順はRedmine.JPが詳しい

基本的にRedmineのインストール方法の一貫としてPassengerでRailsを動かす手順が案内されているので、いっつもこれを参考にしております。

Apache上でRuby on Raiilsアプリケーションを動かす

結構簡単なんですけど、おおまかな流れとして
・ gem install passenger
・ passenger-install-apache2-module コマンド実行
・ 出てきたconfig設定をhttpd.confに書く

以上です。 見て分かる通り、めちゃ簡単。

けど、いつも2個めのpassenger-install-apache2-moduleでつまづくんです。

PAHTが通っていない件について

まぁ、いつもそうなんですが gem install しただけでは passenger-insatall-apache2-moduleコマンドがpathに追加されていなくて怒られてるんですね。

で、これの対処法は自分の場合せっかちなので、(本当はもっとうまいやり方があるんだろうけど何も考えずに)

# locate passenger-install-apache2-module

で実行ファイルを力技で見つけてフルパスで叩く。
※本当のやり方知ってる人誰かおせーてくださいw

なお、gem installしたばっかりだと locate コマンドで探せない可能性大なので updatedbコマンドを打っておきましょう(けど負荷がかかるからできるだけ開発環境で打って探しておきましょう。)

ApacheのPATHも通ってない件について

で、 passenger-install-apache2-module コマンドを探し当てたはいいが、いつもこのコマンド実行後にも苦戦する。

なぜかというと、ソースからインストールしたApacheを見つけてくれないのでApache
とかとかを yum install しろよみたいに言われる。
てか、Redmine.JPでもそうなるよって注意書きがあるんですけどw

で、何をpathに追加しておけばいいかという事をちゃんと理解する。
これがmustアイテム
・/usr/local/apache2/bin/

Redmine.JPでは APXSのpathだけ追加しているように一見見えてしまうが、よく見るとApacheの実行ディレクトリもpathに追加しているので注意。

さらにさらに

実際に passenger-install-apache2-moduleコマンドを実行するユーザのPATHにちゃんと追加していないとダメ

マジで自分はアホなので、俺ユーザのpathに追加しておいて、しめしめとか言ってpassenger-install-apache2-moduleコマンドをsudoで叩くからまた怒られる。

ていうか、 passeenger-install-apache2-module コマンドって名前長過ぎじゃないっすか? もっと短い名前にしたほうが良いと思いませんか? 

httpd.confのDocumentRootまでちゃんと書くまでが遠足です

うまく通ると、最後にベロベロってapacheのconfファイルに追加しないといけない設定例が出てくるので、これらをhttpd.confに書いて終了です。

ところが、DocumentRootをついついRailsのROOTに設定してしまいがちな私。

だってそれで動く気がしちゃうんだもん。
↓こんな感じのヤツですね。


   <VirtualHost *:80>
      ServerName www.yourhost.com
      # !!! Be sure to point DocumentRoot to 'public'!
      DocumentRoot /somewhere/public
      <Directory /somewhere/public>
         # This relaxes Apache security settings.
         AllowOverride all
         # MultiViews must be turned off.
         Options -MultiViews
      </Directory>
   </VirtualHost>

ちゃんとBe sure XXX !!と騒いでくれてますね。
RAILS_ROOTではなく、その配下にある /public を指定してあげる事で完了です。

まとめ

・passengerをgem install しただけではコマンドのpathが追加されないので注意
・apacheをソースからインストールした場合は、apacheのbinとapxsの両方もpathに追加しないと怒られる
・DocumentRootをRAILS_ROOTディレクトリにするとまた怒られる

しかしRailsで1からアプリ開発するのが楽しい。クセになりそう。おわり。

2014-04-09 | Posted in RailsNo Comments » 


関連記事

Comment





Comment



*