VagrantとVirtualBoxとCentOS6を使って、apacheを通してrailsを使えるようにする勉強をしています。
質問投稿でしたが、無事動作したので、修正した内容に変更いたします。
エラーの原因は、passengerをsudoでインストールしたため、systemのruby 1.8.7対象にapacheがビルドされてしまったことでした。
全ての操作。
> vagrant box add centos664 http://developer.nrel.gov/downloads/vagrant-boxes/CentOS-6.4-x86_64-v20130731.box
> mkdir centos6
> cd centos6
> vagrant init centos664
Vagrantfileを編集
# using a specific IP.
config.vm.network :private_network, ip: "192.168.33.30"
> vagrant up
> vagrant ssh
yumのアップデートとvimのインストール
$ sudo yum -y update
$ sudo yum -y install vim
日本語化
$ sudo vim /etc/sysconfig/i18n
LANG="ja_JP.UTF-8"
$ sudo reboot
root権限を持たせたユーザ作成
$ sudo usermod -G wheel vagrant
$ sudo visudo
## Allows people in group wheel to run all commands
%wheel ALL=(ALL) ALL
wheelグループを有効化する
apacheのインストール
$ sudo yum -y install httpd
$ sudo service httpd start
$ sudo chkconfig httpd on
必要なツール類のインストール
$ sudo yum -y install gcc gcc-c++ openssl-devel zlib-devel make patch git gettext perl rpm-build
$ sudo yum -y install httpd-devel curl-devel ncurses-devel gdbm-devel readline-devel sqlite-devel ruby-devel
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
$ exec $SHELL -l
$ git clone https://github.com/sstephenson/ruby-build.git ~/.rbenv/plugins/ruby-build
$ sudo .rbenv/plugins/ruby-build/install.sh
ruby 1.9.3のインストール
$ rbenv install -v 1.9.3-p484
$ rbenv rehash
ruby 1.9.3をglobalに設定
$ rbenv global 1.9.3-p484
$ rbenv versions
$ sudo chmod o+x /home/vagrant
passengerのインストール
$ gem install passenger --no-ri --no-rdoc -V
$ rbenv rehash
apacheにpassengerモジュールをインストール
$ passenger-install-apache2-module
The Apache 2 module was successfully installed.
Please edit your Apache configuration file, and add these lines:
LoadModule passenger_module /home/vagrant/.rbenv/versions/1.9.3-p484/lib/ruby/gems/1.9.1/gems/passenger-4.0.25/buildout/apache2/mod_passenger.so
PassengerRoot /home/vagrant/.rbenv/versions/1.9.3-p484/lib/ruby/gems/1.9.1/gems/passenger-4.0.25
PassengerDefaultRuby /home/vagrant/.rbenv/versions/1.9.3-p484/bin/ruby
After you restart Apache, you are ready to deploy any number of Ruby on Rails
applications on Apache, without any further Ruby on Rails-specific
configuration!
Press ENTER to continue.
--------------------------------------------
Deploying a Ruby on Rails application: an example
Suppose you have a Rails application in /somewhere. Add a virtual host to your
Apache configuration file and set its DocumentRoot to /somewhere/public:
<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>
And that's it! You may also want to check the Users Guide for security and
optimization tips, troubleshooting and other useful information:
/home/minao/.rbenv/versions/1.9.3-p484/lib/ruby/gems/1.9.1/gems/passenger-4.0.25/doc/Users guide Apache.html
http://www.modrails.com/documentation/Users%20guide%20Apache.html
Enjoy Phusion Passenger, a product of Phusion (www.phusion.nl) :-)
https://www.phusionpassenger.com
Phusion Passenger is a trademark of Hongli Lai & Ninh Bui.
とりあえず、rbenv rehash
$ rbenv rehash
passenger.confの作成
$ sudo vim /etc/httpd/conf.d/passenger.conf
以下を書き込む
LoadModule passenger_module /home/vagrant/.rbenv/versions/1.9.3-p484/lib/ruby/gems/1.9.1/gems/passenger-4.0.25/buildout/apache2/mod_passenger.so
PassengerRoot /home/vagrant/.rbenv/versions/1.9.3-p484/lib/ruby/gems/1.9.1/gems/passenger-4.0.25
PassengerDefaultRuby /home/vagrant/.rbenv/versions/1.9.3-p484/bin/ruby
Header always unset "X-Powered-By"
Header always unset "X-Rack-Cache"
Header always unset "X-Content-Digest"
Header always unset "X-Runtime"
httpd.confの修正
$ sudo cp /etc/httpd/conf/httpd.conf /etc/httpd/conf/httpd.conf.org
$ sudo vim /etc/httpd/conf/httpd.conf
修正項目
# 44行目 OS情報を表示しないようにする
ServerTokens Prod
#277行目
ServerName 192.168.33.30:80
# 331行目 -(ハイフン)を追加
Options -Indexes FollowSymLinks
# 536行目 OS情報を表示しないようにする
ServerSignature Off
# キャッシュ強化(以下の行を追加)
# Apache Expire Header
ExpiresActive On
ExpiresByType application/javascript "access plus 1 days"
ExpiresByType application/x-javascript "access plus 1 days"
ExpiresByType text/javascript "access plus 1 days"
ExpiresByType text/css "access plus 1 days"
ExpiresByType image/jpeg "access plus 3 days"
ExpiresByType image/png "access plus 3 days"
ExpiresByType image/gif "access plus 3 days"
ExpiresByType image/x-icon "access plus 3 days"
# ETags
FileETag MTime Size
apache設定のチェック
$ apachectl configtest
> Syntax OK
Apacheを起動及び、自動起動を設定。
$ sudo service httpd restart
$ sudo chkconfig httpd on
$ sudo chkconfig --list httpd
httpd 0:off 1:off 2:on 3:on 4:on 5:on 6:off
Bundlerのインストール
$ sudo gem install bundler --no-ri --no-rdoc -V
$ rbenv rehash
Railsのインストール
$ gem install rails -v 3.2.15 --no-ri --no-rdoc -V
$ rbenv rehash
Railsでsampleを生成
$ mkdir rails_app
$ cd rails_app
$ rails new sample
Gemfileの修正
$ cd sample
$ vim Gemfile
# See https://github.com/sstephenson/execjs#readme for more supported runtimes
gem 'therubyracer', :platforms => :ruby
$ bundle install
$ rbenv rehash
scaffoldで簡単なMVCサンプル作成
$ rails g scaffold foo name:string
$ rake db:migrate
httpd.confにVirtualHost 設定追加
$ sudo vim /etc/httpd/conf/httpd.conf
<VirtualHost *:80>
RailsEnv development
PassengerEnabled on
ServerName 192.168.33.30
# !!! Be sure to point DocumentRoot to 'public'!
DocumentRoot /home/vagrant/rails_app/sample/public
<Directory /home/vagrant/rails_app/sample/public>
# This relaxes Apache security settings.
AllowOverride all
# MultiViews must be turned off.
Options -MultiViews
</Directory>
</VirtualHost>
apache設定のチェック
$ apachectl configtest
> Syntax OK
$ sudo service httpd restart
public/index.htmlからfoosを呼び出すようにroutes.rbを修正
$ vim config/routes.rb
root :to => 'foos#index'
$ mv public/index.html public/index.html.bak
とりあえず、Firewallを止める
$ sudo service iptables stop
$ sudo chkconfig iptables off
$ sudo chkconfig --list iptables
iptables 0:off 1:off 2:off 3:off 4:off 5:off 6:off
rails_app以下の実行権限を修正
$ cd ~
$ chmod -R o+x rails_app
これで、http://192.168.33.30 にアクセスすると、無事に動作しました。