読者です 読者をやめる 読者になる 読者になる

Bye Bye Moore

猫マンション建築の野望を胸に零細事業主として資本主義の荒波に漕ぎ出したアラサー男の技術メモ

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:未確認ですが、どうも位置もかなり重要っぽいです...