RubyonRailsをApacheとPassengerで動かす
RailsのデフォルトのサーバーはWEBrickなんだけど、
ウェブサービスを立ち上げるにはApacheとかNginxで運営するかと。
ApacheとPassengerでRailsを動かす際に、後から見返しそうだからメモします。
CentOS-6.4, Ruby2.0, Rails4.0
CentOSが起動しました、というところから。
Apache〜Rubyをインストール
とりあえず最新の状態にアップデート。
sudo yum update -y
Apacheがインストールされてるか確認(しなくていいけど)
yum list installed | grep httpd
Apacheインストール
sudo yum install -y httpd
Apache起動
sudo service httpd start
Apacheをサーバー起動時に自動的にON
sudo chkconfig httpd on
gitをインストール
sudo yum -y install git
rbenvをインストール
sstephenson/rbenv
1
2
3
4
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
rbenvのインストールを確認
rbenv```
1
2
3
4
5
6
ruby buildをインストール
<a href="https://github.com/sstephenson/ruby-build" target="_blank" title="git clone https://github.com/sstephenson/ruby-build.git ~/.rbenv/plugins/ruby-build">git clone https://github.com/sstephenson/ruby-build.git ~/.rbenv/plugins/ruby-build</a>
```git clone https://github.com/sstephenson/ruby-build.git ~/.rbenv/plugins/ruby-build```
Rubyをインストール
rbenv install -v 2.0.0-p247
rbenv rehash
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
Rubyのバージョンを選択
```rbenv global 2.0.0-p247```
rbenvで確認
```rbenv versions```
Rubyで確認
```ruby -v```
<h3>Passengerのインストールと設定</h3>
インストール
sudo gem install passenger
1
passenger-install-apache2-module
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
<strong> ##### 注意 ##### </strong>
passenger-install-apache2-moduleのコマンドを
sudoを付けて実行するとrootでインストール、
付けないとログインしているユーザーでインストールとなる。
<strong>特にVagrantをつかってお手軽にローカル環境をつくっていると忘れがち。
その場合はvagrant ssh でログインしてsudoなしでインストール。</strong>
環境によっては、2行目を実行すると下のようなエラーがでるので、
素直にエラーメッセージに従う。
* To install Curl development headers with SSL support:
Please install it with yum install curl-devel
* To install Ruby development headers:
Please install it with yum install ruby-devel
* To install Apache 2 development headers:
Please install it with yum install httpd-devel
* To install Apache Portable Runtime (APR) development headers:
Please install it with yum install apr-devel
* To install Apache Portable Runtime Utility (APU) development headers:
Please install it with yum install apr-util-devel
エラーメッセージで指摘されている不足分をインストール。
```sudo yum install curl-devel ruby-devel httpd-devel apr-devel apr-util-devel```
再度トライする
```passenger-install-apache2-module```
完了すると下のようなメッセージがでる。
大事なのでメモ。
The Apache 2 module was successfully installed.
Please edit your Apache configuration file, and add these lines:
LoadModule passenger_module /usr/lib/ruby/gems/1.8/gems/passenger-4.0.18/buildout/apache2/mod_passenger.so
PassengerRoot /usr/lib/ruby/gems/1.8/gems/passenger-4.0.18
PassengerDefaultRuby /usr/bin/ruby
--------------------------------------------
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:
...続く
<strong>Apacheの設定を変更する</strong>
```sudo vi /etc/httpd/conf.d/example.conf```
(exampleは何でもいいよ)
で、空のファイルができるので、下記のようにPassengerの設定を追加する。
下記はローカル環境をVagrantで作ってて、
vagrantユーザーでログインしてる状態でPassengerをインストールしたと想定してます。
実際にはPassengerをインストールした時に出たメッセージを参考にしてください。
yourrailsappはRailsがインストールされているディレクトリを意味してます。
<pre class="lang:apache mark:12,10 decode:true " >
### Passenger Settings ###
LoadModule passenger_module /home/vagrant/.rbenv/versions/2.0.0-p247/lib/ruby/gems/2.0.0/gems/passenger-4.0.14/buildout/apache2/mod_passenger.so
PassengerRoot /home/vagrant/.rbenv/versions/2.0.0-p247/lib/ruby/gems/2.0.0/gems/passenger-4.0.14
PassengerDefaultRuby /home/vagrant/.rbenv/versions/2.0.0-p247/bin/ruby
### Virtual Host for Passenger ###
<VirtualHost *:80>
ServerName yourrailsapp.com
# !!! Be sure to point DocumentRoot to 'public'!
DocumentRoot /vagrant/yourrailsapp/public
PassengerEnabled on
<Directory /vagrant/yourrailsapp/public>
# This relaxes Apache security settings.
AllowOverride all
# MultiViews must be turned off.
Options -MultiViews
</Directory>
</VirtualHost>```
Vagrantの共有フォルダ設定の関係で、ドキュメントルートをvar/www/htmlでなく/vagrantにしてる人もいるはず。
そんな時はヴァーチャルホスト設定のDocumentRootパスが上のようになるので注意しましょう。
本番環境なんかでは普通にアパッチで設定しているDocumentRootでOKなので気にしない。
これで、ApacheとPassengerを使ったRailsが動くはず。