タイトル通り、デプロイまでの流れをまとめました。
##環境
・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でアクセスできるはずです。