AWS+Rails+Nginx+Unicornの設定
Rubyのバージョンアップ
$ wget http://cache.ruby-lang.org/pub/ruby/2.2/ruby-2.2.2.tar.gz
$ tar xvf ruby-2.2.2.tar.gz
$ wget
$ ./configure
$ make
$ sudo make install
だが./configuでこんなエラーが出る。
config.guess already exists config.sub already exists checking build system type... x86_64-unknown-linux-gnu checking host system type... x86_64-unknown-linux-gnu checking target system type... x86_64-unknown-linux-gnu checking for gcc... no checking for cc... no checking for cl.exe... no configure: error: in `/home/ec2-user/src/ruby-2.2.2': configure: error: no acceptable C compiler found in $PATH See `config.log' for more details
gcc無いって言われとる
$ sudo yum install gcc
したら通った。
そのままmakeとsudo make installしたけどうまく入らない。
一度デフォルトのRuby2.0.0削除してもう一度試したら/usr/bin/rubyがないと言われた。
権限の問題のような気がしたので
$ sudo su -
で管理者権限でもっかい./configureからやったら無事に入った。
railsのインストール
まずは何も考えずにgem install rails
案の定エラー
ERROR: Loading command: install (LoadError) cannot load such file -- zlib ERROR: While executing gem ... (NoMethodError) undefined method `invoke_with_build_args' for nil:NilClass
zlib無いって。
$ sudo yum install zlib-devel
またzlib無いと言われる。もう一度Rubyビルドか。
Linux(CentOS)へRuby on Railsをインストール
こちらのブログを見て使えるようにする。
一般ユーザーでやるとMakefileの生成でこんな感じにコケます。
creating Makefile /usr/local/lib/ruby/2.2.0/mkmf.rb:2217:in `initialize': Permission denied @ rb_sysopen - Makefile (Errno::EACCES) from /usr/local/lib/ruby/2.2.0/mkmf.rb:2217:in `open' from /usr/local/lib/ruby/2.2.0/mkmf.rb:2217:in `create_makefile' from extconf.rb:157:in `<main>'
で、opensslをmakeするとこんなエラーが出ます。
make[2]: Entering directory `/home/ec2-user/src/ruby-2.2.2/ext/openssl' make[2]: *** No rule to make target `/include/ruby.h', needed by `ossl_pkey_dsa.o'. Stop. make[2]: Leaving directory `/home/ec2-user/src/ruby-2.2.2/ext/openssl' make[1]: *** [ext/openssl/all] Error 2 make[1]: Leaving directory `/home/ec2-user/src/ruby-2.2.2' make: *** [build-ext] Error 2
Rubyを再インストールか?と思いもうRubyを一度ビルドすると同じようなエラーが出る。
make[2]: *** No rule to make target `/include/ruby.h', needed by `ossl_pkey_dsa.o'. Stop. make[2]: Leaving directory `/home/ec2-user/src/ruby-2.2.2/ext/openssl' make[1]: *** [ext/openssl/all] Error 2 make[1]: Leaving directory `/home/ec2-user/src/ruby-2.2.2' make: *** [build-ext] Error 2
ossl_pkey_dsa.oが息してないのか
結論
rbenvをインストールしよう。
こちらの記事がコンパクトでわかりやすかったです。ありがとうございます。
またまたRubyのインストール。今度は
$ rbenv install 2.2.2
ですみました。
これでようやく無事にgem installが通りました。
railsのインストール
$ sudo gem install rails
無事にrails newができました。
※rails newするときは一般ユーザーがよさげ
nginxのインストール
$ sudo yum install -y nginx
で一発です。
設定ファイルの編集
設定ファイルの編集にはこの記事を参考にさせてもらいました。
unicornのインストール
Gemfileに以下を追加
gem 'unicorn'
でbundle installすれば入ります。
設定ファイルの編集
こちらもこの記事を参考にさせてもらいました。本当にありがとうございます。
正しく設定したらアクセスします。
500が返って来ました。
# log/unicorn.log E, [2015-07-12T11:27:41.804053 #23164] ERROR -- : app error: Missing `secret_token` and `secret_key_base` for 'production' environment, set these values in `config/secrets.yml` (RuntimeError)
config/secret.yml内のproductionの値が設定されてないと怒られています。
ここを参考に対処kenjiszk.hatenablog.com
ありがとうございます。ためになりました。
これで作っておいたコントローラーhome#indexにアクセスすると・・・
満を持しての起動です。
終わりに
深夜全然構築が終わらないところにアドバイスをくださった3人のエンジニアさん方、ありがとうございました。
エラーの見方、デバッグの方針、便利なコマンド、などなど実務に直結することを教えてくださってとても助かりました。