LoginSignup
82
77

More than 5 years have passed since last update.

CentOS 6.5 + Apache 2.2 + Ruby 2.0 + Rails 4.1 の構築手順

Last updated at Posted at 2014-07-08

CentOS 6.5 + Apache 2.2 + Ruby 2.0 + Rails 4.1 の構築手順

面倒くさい事で評判のCentOS+PassengerでのRails4.1環境構築を出来るだけ簡略化してみました。

最近はChefやAnsibleでの構築が当たり前になってきているので、手動で構築する機会も減ってきていますが、 何事も基本が大事ということで共有します。

ちなみにこの手順はRuby2.0系ですが、おそらく2.1系で同じ方法でOKのはずです。

事前準備

必要となるパッケージを入れておきます。

$ sudo yum install gcc make openssl openssl-devel readline-devel

rbenvインストール

Rubyのバージョンをお手軽に切り替えられるツールrbenvをインストールします。
実際に、本番環境でバージョンを切り替える事はほとんどないですが、以下の理由で入れています。

  • Rubyのインストールがコマンドで出来るようになる。
    • CentOSのyumリポジトリでは、未だに1.8.7しか提供していない。
      • rbenvなしで1.9以降を入れたい場合はソースからコンパイルする必要がある。
    • ちなみに、1.8.7のサポート期限はちょうど今月末(2014/07/31)で切れますね。参考URL
  • gemもRubyのバージョン毎に管理してくれるので、後々Rubyのバージョンアップが楽。
$ cd /usr/local
$ git clone git://github.com/sstephenson/rbenv.git

$ sudo echo 'export RBENV_ROOT="/usr/local/rbenv"' >> /etc/profile
$ sudo echo 'export PATH="${RBENV_ROOT}/bin:${PATH}"' >> /etc/profile
$ sudo echo 'eval "$(rbenv init -)"' >> /etc/profile

$ mkdir /usr/local/rbenv/plugins
$ cd /usr/local/rbenv/plugins
$ git clone git://github.com/sstephenson/ruby-build.git

Ruby2.0インストール

rbenvを利用して、Ruby2.0をインストールします。簡単です。

$ sudo rbenv install -v 2.0.0-p481
$ sudo rbenv global 2.0.0-p481          #システム標準を切り替える。
$ ruby -v
ruby 2.0.0p481 (2014-05-08 revision 45883) [x86_64-linux]

Rails4.1.1インストール

既存のgemを最新版に更新してから、Railsをインストールします。

$ sudo gem update --system
$ sudo gem install rails --no-ri --no-rdoc --version "=4.1.1"
$ sudo rbenv rehash            #rbenvではgemをインストールしたら、このコマンドで反映させる必要がある。
$ rails -v
Rails 4.1.2

ApacheとPassengerのインストール

一番の鬼門である、Apache+Passengerをインストールします。
この後の設定の項目も含めて、Passengerはバージョンによって手順がガラリと変わるので注意してください(これは4.0系の手順です)。

$ sudo yum install httpd httpd-devel curl-devel apr-devel apr-util-devel
$ sudo gem install passenger --version "=4.0.45"
$ sudo rbenv rehash                       #忘れず反映
$ sudo passenger-install-apache2-module   #言語を選ぶ所ではrubyのみを選択
$ /usr/sbin/httpd -v
Server version: Apache/2.2.15 (Unix)
Server built:   Apr  3 2014 23:56:16
$ passenger-config --version
4.0.45

ApacheとPassengerの設定

Apache上でPassengerを認識させるための設定を行います。

$ passenger-install-apache2-module --snippet > /etc/httpd/conf.d/rails.conf    #新規作成
$ sudo echo "export PATH=/usr/local/rbenv/shims:$PATH" >> /etc/sysconfig/httpd

$ sudo /etc/init.d/httpd restart

最初の行で、PassengerをApacheに認識させています。
2行目は、ApacheがPassengerを起動する時に使うRubyをrbenvでインストールしたものに切り替えています。

続いて、Railsプロジェクト用にVirtualHostの設定をします。
色んな設定があるとは思いますが、とりあえず最低限、以下の設定をrails.confに追加しておきましょう。

/etc/httpd/conf.d/rails.conf
<VirtualHost *:80>
    ServerName www.example.com        #サービスのFQDN
    DocumentRoot /var/www/app/public   #Railsアプリのデプロイ先のpublic

    <Directory /var/www/app/public>     #Railsアプリのデプロイ先のpublic
        AllowOverride all
        Options -MultiViews
    </Directory>

    ErrorLog /var/log/httpd/app.error.log
    CustomLog /var/log/httpd/app.access.log combined

</VirtualHost>

/etc/httpd/conf/httpd.confNameVirtualHostを有効にするのをお忘れなく。

Railsプロジェクトのデプロイ

最後に、Railsプロジェクトを実際にデプロイします。
やり方は色々あると思いますが、今回はgit管理されているプロジェクトという体で。

$ mkdir /var/www/app
$ cd /var/www/app
$ git clone プロジェクトのリポジトリ

$ chmod -R 777 /var/www/プロジェクトのリポジトリ/log

$ rake db:migrate

$ sudo /etc/init.d/httpd restart

これでブラウザからページにアクセスできるはずです。
お疲れ様でした。

注意事項

  • 簡略化した手順という事で、DB周りのインストールをさくっと無視しています。migrateでDBがないよエラーが出る人は別途インストールしてください。
    • SQLiteを使う人は、sudo yum install sqlite-develでOKです。
    • MySQLを使う人もyumでOKではあるのですが、Ruby同様、やたら古いバージョン(5.1)が入るので、mysqlコミュニティが出しているリポジトリを使って、5.6系を入れた方がいいと思います。
  • アプリの実行ユーザーで作業する前提で書いています。自分の個人ユーザーでやると恥ずかしい事になるので、アプリ用のユーザーを作るか、rootでやるようにしてください。
82
77
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
82
77