今更AWS
今更ながらAWS(EC2)にRailsアプリをデプロイをしたためその備忘録
前提として以下の事項を済ませていることとします。
作成したEC2のインスタンスの設定
大きく分けてインストールを行ったパッケージは以下になります。
- git
- rbenv + ruby
- gemのbundler
git のインストール
gitの前にまず最低限の設定をします。
yum のアップデート
$ sudo yum update
gem のアップデート
$ sudo gem update
作業開始のための諸々
$ sudo yum install -y gcc-c++ patch readline readline-devel zlib zlib-devel libyaml-devel libffi-devel openssl-devel make bzip2 autoconf automake libtool bison
上記の作業が終わってから
$ sudo yum install -y git
rbenv のインストール
git からクローン
$ git clone git://github.com/sstephenson/rbenv.git ~/.rbenv
$ echo 'export PATH="$HOME/.rbenv/bin:$PATH"' >> ~/.bash_profile
$ echo 'eval "$(rbenv init -)"' >> ~/.bash_profile
$ source ~/.bashrc
これでrbenvを使用できるようになります。(ただしbash) ただrbenvにrubyをインストールするためにruby-buildもインストールします。
ruby-build のインストール
$ cd
$ git clone git://github.com/sstephenson/ruby-build.git
$ cd ruby-build
$ sudo ./install.sh
ruby のインストール
今回はRubyの2.0.0をインストールします。
$ rbenv install -l
上記のコマンドを正しく使用するためにruby-buildをインストールしました。
$ rbenv install 2.0.0-p481
$ rbenv versions
$ rbenv global 2.0.0-p481
$ rbenv global
この時に、rbenvを使用する場合は必ずrubyコマンドとgemコマンドのパスが
$ which ruby
~/.rbenv/shims/ruby
$ which gem
~/.rbenv/shims/gem
のように表示されていることを確認して下さい。
bundle のインストール
今回はプロジェクト毎にRailsを管理したいのでまずgemでbundleをインストールします。
$ gem install bundler --no-ri --no-rdoc
この後、公開したいRailsのプロジェクトを配置しておきます。
$ git clone git://github.com......git
配置したプロジェクトに移動し以下を実行する。 パスに指定したディレクトリにインストールしてくれます。
$ bundle install --path /vendor/bundle
bundle終了後はRailsプロジェクトのルートから
$ ./bin/rails server
を実行でrailsコマンドを使用することが可能です。 このあとは今後しようするパッケージをインストールします。
$ sudo yum install -y nginx
$ sudo yum install mysql-server mysql-devel
$ sudo service mysqld start
$ /etc/init.d/nginx
$ chkconfig nginx on
$ sudo service mysqld start
配置したRailsプロジェクトを公開
Railsを通常3000番ポートで公開するためAWSのSECURITY GROUPに設定を追加します。
この時GROUP NAMEがデフォルトのものに上記の内容を設定しないでください。 設定したものがまるで反映されませんでした。ここでハマってしまい、時間がかかりました。
余談ですが、nginxを動作させる際は必ず上記写真の3行目の記述を追加しないと正しく動作しないためお気をつけて
AWSの設定が終了後、
$ ./bin/rails s -d
$ curl -I localhost:3000
を実行後Railsプロジェクトを参照できるようになります。以上
番外編として、rails を立ち上げようとした際にjavascriptのエラーが発生した際はGemfileの
#gem 'therubyracer', :platforms => :ruby
のコメントを抜いてください。
参考にさせていただいたサイト