no-image

nginxでRackアプリケーション(sinatra)を動かす

potproject.net Advent Calendar 2016
4日目の記事です。


うちのブログ初となるであろうRubyの記事です。
実際のところ、自分は全くというほどRubyを書けないのですが、
RubyのWebサービスに関してちょっと使いたいものがあるために構築しています。
なのでRubyの書き方とかSinatraやRailsの使い方ついては他でお願いしたい。
大体ネットに転がっているものを見るとやっぱりRailsばっかりなので、割と珍しいかもしれません。
OSはCentOS7です。

Rubyインストール

今回はちよっと古めなんですが事情によりRuby2.0を使いたいため、
centos7 baseリポジトリからそのままRubyをインストールします。
依存関係でrubygemsなんかも一緒にインストールされました。

で、まあRubyとしては定番であろうパッケージ管理ソフトウェアBundlerをgemからインストール。
rubygemsとbundlerと2つもパッケージ管理ソフトウェアがあるので紛らわしいと自分も思っているのですが、
bundlerはパッケージのバージョンを管理して一括インストールできるソフトウェアです。
プロジェクトごとに個別に設置するので、そのプロジェクトに合ったパッケージをインストールできます。
今回はちゃんとbundlerを使ってsinatraやunicornをインストールします。

ruby-develもCentOS7系なら入れておかないと多分動かない。

gemfile作成

このコマンドでどのgemパッケージをインストールするかを記載できるGemfileというファイルが作成されます。
Genfileにsinatraとunicornをインストールするよう記述。

** Gemfile **

インストール。 パスはvendor/bundle にするのが一般的らしい。

webページ作成

** hello.rb **

簡単なHello World!コードです。
これで直下に表示されます。

起動

これで起動します。portも設定できます。デフォルトは4567です。
試しに別ユーザーで curl http://localhost:3000/でちゃんと ** hello world!** と表示されました。

nignxでリバースプロキシ

/etc/nginx/conf.d/sinatra.conf

nginxは単なるリバースプロキシです。ここに関しては長くなるし、いろんなところが書いているので省略。
これで外部からも繋げるようになったのを確認できます。

本当はunicornも使ってパフォーマンスを上げたかったのですが、
途中でrubyのバージョンが古いこと絡みによる依存問題が出たのでこれめんどくさい奴だと思ってとりあえず切り捨てました。
rbenvとかいうrubyのバージョンを管理できるものもあるらしいので、次回があればちゃんとやります。


5日目 →