LoginSignup
5
3

More than 5 years have passed since last update.

AWSでrails appをapache × passengerを利用してデプロイするまで

Last updated at Posted at 2016-11-10

タイトル通り、デプロイまでの流れをまとめました。

環境

・ruby v2.2.4
・rails v4.2.5
・OS:amazon linux

準備

su

yum update -y
yum install -y gcc-c++ patch readline readline-devel zlib zlib-devel libyaml-devel libffi-devel openssl-devel make bzip2 autoconf automake libtool bison git

とりあえずapacheの導入

yum install httpd httpd-devel curl-devel
自動起動の設定。
chkconfig /etc/init.d/httpd
chkconfig httpd on
Apacheを起動。
service httpd start

これで一応apacheが起動できていることがPublic DNSでアクセスするとわかります。

rbenv導入からruby導入まで

・amazon linuxにはデフォルトでrubyが入っていますが、
バージョンが古かったり、/var/bin/ruby にpathが通っているとダメであったりと注意が必要です。
(システムワイドにインストールする必要がある)
・目標として、rbenvはrootユーザで/root/.rbenv 以下にインストールしていると、
apacheユーザにruby(内のpassenger gem)の実行権限が無いため、
/usr/local 以下にインストールするようにします。
(デフォルトでインストールされている/var/bin/ruby も /var/local ディレクトリ以下に訂正)

cd /usr/local
git clone git://github.com/sstephenson/rbenv.git rbenv
mkdir /usr/local/rbenv/shims /usr/local/rbenv/versions

echo 'export RBENV_ROOT=/usr/local/rbenv' >> ~/.bash_profile
echo 'export PATH=\$RBENV_ROOT/bin:\$PATH' >> ~/.bash_profile
echo 'eval "$(rbenv init -)"' >> ~/.bash_profile
source ~/.bash_profile

デフォルトで PATH が参照しない場所にインストールするので、sudoが認識できるようにします。
(.profile 等で操作ユーザの PATH を変更しても通常は sudo はそれを認識しない)

visudo
    => RBENV_ROOTをenv_keepに追加
Defaults env_keep += "RBENV_ROOT"
    => secure_pathに/usr/local/rbenv/bin追加
Defaults secure_path = /usr/local/rbenv/shims:/usr/local/rbenv/bin:/sbin:/bin:/usr/sbin:/usr/bin

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

rbenv install 2.2.4
rbenv rehash
rbenv global 2.2.4
ruby -v

ここでバージョンがおかしい場合は which ruby でも確認して反映されてないとわかったらec2を再起動

gem、railsのインストール

gem install bundler --no-rdoc --no-ri
rbenv rehash
bundle init
bundle instal --path vendor/bundle

gem install rails --version "=4.2.5"

passengerの導入

gem install passenger --no-ri --no-rdoc

Apacheのモジュールをインストールします。

passenger-install-apache2-module

出力の中に以下のような内容があるはずです。メモっておいて下さい。

LoadModule passenger_module /usr/lib64/ruby/gems/1.8/gems/passenger-4.0.5/libout/apache2/mod_passenger.so
PassengerRoot /usr/lib64/ruby/gems/1.8/gems/passenger-4.0.5
PassengerDefaultRuby /usr/bin/ruby

ここでファイル/etc/httpd/conf.d/passenger.confを作り、
先ほどメモしておいた3行とともにバーチャルホストを設定します。

LoadModule passenger_module /usr/lib64/ruby/gems/1.8/gems/passenger-4.0.5/libout/apache2/mod_passenger.so
PassengerRoot /usr/lib64/ruby/gems/1.8/gems/passenger-4.0.5
PassengerDefaultRuby /usr/bin/ruby

<VirtualHost *:80>
 ServerName sample
 DocumentRoot /usr/local/var/sample/public
 RailsEnv development
<Directory /usr/local/var/sample/public>
 AllowOverride all
 Options -MultiViews
</Directory>
</VirtualHost>

railsプロジェクトの作成

cd /usr/local/
mkdir var
cd var
rails new sample

確認

Apacheを再起動し、Public DNSにアクセスするとsampleプロジェクトが表示されます。

service httpd restart

これでPublic DNSでアクセスできるはずです。

5
3
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
5
3