Bye Bye Moore

PoCソルジャーな零細事業主が作業メモを残すブログ

CentOS上に組んだRails4とRuby2.0をApacheで動かす件のメモ書き

...実際地獄でした。

作業手順は参考もとに書いてある通りなので、
引っ掛かった所を中心にメモします

前提

  • Ruby 2.0.0p451
  • rbenv
  • Rails 4.0.1
  • CentOS release 6.4 (Final) *1 32bit
  • passenger-install-apache2-module済み

mod_passenger.soが発狂する

私が受け取ったCentOS環境ではSELinux様が鉄壁の守りでシステムを守護してくださっておりました。
その関係からか、rbenv下のmod_passenger.soを上手く受けとってくれません。

# /etc/init.d/httpd restart
httpd を停止中:                                            [  OK  ]
httpd を起動中: httpd: Syntax error on line 221 of /etc/httpd/conf/httpd.conf: Syntax error on line 5
 of /etc/httpd/conf.d/passenger.conf: Cannot load /usr/local/.rbenv/..(略)..apache2/mod_passenger.so into server: /usr/local/.rbenv/..(略)../apache2/mod_passenger.so: failed to map segment from shared object: Permission denied

てなエラーを吐く場合はこのケースです。

$ cp /usr/local/.rbenv/versions/2.0.0-p451/lib/ruby/gems/2.0.0/gems/passenger-4.0.40/buildout/apache2/mod_passenger.so /usr/lib/httpd/modules

これだけでは不十分なので権限を更新します。

# restorecon -RFv /usr/lib/httpd/modules/mod_passenger.so 

全てが終わったら/etc/httpd/conf.d/passenger.confの内容を

LoadModule passenger_module modules/mod_passenger.so

とします。
もう一回restartすればちゃんと読み込んでくれます。

貰ったIPをdevelop環境で

これを、/etc/httpd/conf/httpd.confの末尾に記載します。*2


RailsEnv development
PassengerEnabled on
ServerName #{貰ったIPアドレスorホスト名}
# !!! Be sure to point DocumentRoot to 'public'!
DocumentRoot $RAILS_ROOT/public

# This relaxes Apache security settings.
AllowOverride all
# MultiViews must be turned off.
Options -MultiViews


<<

*1:cat /etc/redhat-release

*2:未確認ですが、どうも位置もかなり重要っぽいです...