DesignAssembler

備忘録に近い

AWS+Rails+Nginx+Unicornの設定

AWSAmazon Linuxrailsを構築します。

Rubyのバージョンアップ

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をインストールしよう。

dev.classmethod.jp

こちらの記事がコンパクトでわかりやすかったです。ありがとうございます。

またまたRubyのインストール。今度は

$ rbenv install 2.2.2

ですみました。

これでようやく無事にgem installが通りました。

railsのインストール

$ sudo gem install rails


無事にrails newができました。

rails newするときは一般ユーザーがよさげ

nginxのインストール


$ sudo yum install -y nginx

で一発です。

設定ファイルの編集

設定ファイルの編集にはこの記事を参考にさせてもらいました。

qiita.com


unicornのインストール

Gemfileに以下を追加

gem 'unicorn'

でbundle installすれば入ります。

設定ファイルの編集

こちらもこの記事を参考にさせてもらいました。本当にありがとうございます。

qiita.com

正しく設定したらアクセスします。

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にアクセスすると・・・

f:id:hyottokoaloha:20150712204630p:plain

満を持しての起動です。


終わりに

深夜全然構築が終わらないところにアドバイスをくださった3人のエンジニアさん方、ありがとうございました。

エラーの見方、デバッグの方針、便利なコマンド、などなど実務に直結することを教えてくださってとても助かりました。