Wakotech Blog

ポエム

Gehirn RS2を借りてNginx+UnicornでRailsアプリケーションを公開するまで

WordPressで特にデザインを凝る訳でもないので、技術的なこととかははてなに書くことにしました。

ということで、まずはレンタルサーバーのGehirn RS2を借りて、Railsアプリケーションを公開した話です。ちなみに公開したものは自分のサイトのwakolab.infoです。
315円/月だったので、今使用しているPaaSの体験版が切れるのでこっちでやってみようと思いはじめてみました。
現在VPSを借りて就活乞食.com(shukoji.com)をApache+Passengerで公開しているのですが、こちらがRails3.2のため、Rails4.0のアプリケーションを公開しようとすると色々と面倒そうだったので、とりあえずRS2を試したいのもあったのでこっちでやってみます。

RS2は環境が簡単に整うのとセキュアなのが特徴みたいなので、環境構築でめげたりセキュリティ知識が付け焼き刃だったりする自分としては非常にありがたいわけです。

ということで契約してまずは環境を。
説明にある通りrs2コマンドで簡単に整うので非常に楽です。

今回はだいたいhttp://qiita.com/iriya-ufo@github/items/c1edfa84b34dba2211acを参考に、Nginx+Unicornでやりました。
Nginxで動かした方が早いという話なので、今後VPSも移行してみようと考えています。

細かいことはかいてあるので省略しますが、$ rs2 install railsで自動でrailsがインストールされ、nginxを入れ、unicornを設定した感じです。

まずnginxのインストールですが、ここにある通りにできました。最新版が1.5.10だったのでそれを。
Gehirn側でリバースプロキシに使うポートを設定し、それを指示通りconfigファイルに書き加えて、これでまずはnginxの設定は完了です、が、
gehirn-unicorn.confのポートを指定する際に、3000番は使えないのです。(おそらくレンタルサーバーの都合?)
なので、unicornと通信するUNIXのsocketを指定。

upstream backend-unicorn {
     server unix:/tmp/hoge-unicorn.todo.sock fail_timeout=0;
}

あとは書いてある通りの設定で大丈夫です。勘違いしていて詰まっていたのですが、nginx.conf側のserverセクションは全てコメントアウトして必要なことは全てgehirn-unicorn.confに記入しましょう。

ここでnginxを起動して、自分はBad Gatewayにはならず403forbiddenに……railsアプリケーションのpublic下にindex.htmlを試しに配置してみてそれが表示されれば、nginxは動いているようです。動いていなければ503が返ってきます。


このあとはUnicorn側の設定です。こちらもだいたい書いてある通りに。しかしunicorn-conf.rbがこの通りに書いてもうまくいかなかったので自分は下記のようにしました。ポートの指定部分は先ほど書いたものと同じsocketを指定します。


working_directory “/home/#{username}/public_html/#{rails_app}”
pid "“/home/#{username}/public_html/#{rails_app}/tmp/puds/unicorn.pid"

stderr_path “/home/#{username}/public_html/#{rails_app}/log/unicorn.log"
stdout_path “/home/#{username}/public_html/#{rails_app}/log/unicorn.rb"

listen “/tmp/hoge-unicorn.todo.sock”
worker_processes 2
timeout 30


これで設定は完了です。
$ unicorn_rails -c config/unicorn-conf.rb -E production -D

で動きます。既に動いている場合は起動しません。終了コマンドはないので、終了する場合はgrepしてkillしてください。

これで動くはずです。動かない場合、コントロールパネル > ドメインからリバースプロキシとして使うポートの設定をしていない、もしくはgehirn-unicorn.conf側と違っている可能性があります。それでもない場合はエラーログを見て下さい……。

このあとドメインを設定します。自分はお名前.comだったのですが他でもおそらく同じようにできるかと思います。
Gehirn DNSドメイン追加から登録したいドメインを入力し、指示通りにお名前.com側で入力し登録します。そうするとGehirn DNSから設定が行えるようになります。
RS2側でドメイン追加をすると、自動設定であとは設定できます。よくわからないまま試行錯誤してこれでできたので、おそらくこれでできると思いますができなかったらすみません……手順が分かったら加筆修正します。


というわけで、無事wakolab.infoが動きました!Sqaleのお試し期間が切れるのに間に合いました!
wordpressの移行が面倒だったのでそれは今度やったら書きますし、やらないでこのままはてなだけを使い続けるかもしれません……

今後は技術的に興味を持ったことややったことなど、稚拙ながら書き溜めて行こうと思いますのでよろしくお願いします。