sinatraでミニマムなWebサービスを公開してみるよ【sinatra + nginx + puma + Capistrano】

   

sinatraとはRubuで作成されたWebフレームワークです。かなりシンプルな構成ですので、Ruby自体の勉強用としてはRailsより向いているかも知れません。

今回はRailsを使うまでもない小規模なWebサイトを作成する機会がありましたので、sinatra + Puma + nginxの構成で公開し、Capistranoでデプロイできるようになるまでを作業をまとめてみました。

Rubyのインストール・公開サーバーの準備等は完了している前提で進めていきます。

作業PCでの作業

まずは開発用のローカル環境下での作業から。

今回はポートフォリオサイトを作るので、アプリケーション名はportfolioです。

まずはディレクトリを作成し、そのディレクトリに移動。その後bundle initでGemfileを生成します。

そして作成されるGemfileの最後にsinatraを追加します。

保存したら、以下のコマンドでvendor/bundle配下にgemをインストールします。ローカル環境は極力汚さない。

これでローカル開発環境自体は完成となります。

動作確認のために、Rubyファイルを作成し、修正します。

ひとまずはRubyファイルから直接表示します。最終的にはviewファイルを読み込むように修正します。

そしてsinatraを起動。

起動されたらブラウザからhttp://localhost:4567/にアクセスしてみましょう。

上記のようにmain.rbに記載した内容が表示されていればOKです。

Gitの初期設定

なにはともあれソースを書いたらバージョン管理。Gitの初期設定を行います。

以降のコマンドは基本的にアプリケーションディレクトリ(今回であればportfolio)配下で実行します。

使用しているPCで初めてGitを使用する場合

git init

アプリケーションディレクトリでgit initします。これでportfolio配下がGitによってバージョン管理される対象となります。

gitignoreを設定

git上にアップしたくないファイルを設定します。今回はvendor/bundle配下とbundlerのconfigはアップしないようにします。

add & commit

リモート設定

Gitリポジトリサービスの登録は済ませておいてください。

Bitbucket,GitHubなりお好みのサービスをどうぞ。

登録しているサービスでリポジトリを作成するとリモート設定のコマンドが表示されますので、そちらを実行しましょう。基本的には以下のような形です。

以上でバージョン管理の設定は完了です。長丁場ですね。コーヒーでも飲んで一休みしましょう。

サーバーへの配布準備

サーバーに公開するだけなら、作成したファイルをサーバーにコピーしてWebサーバーの準備をするだけですが、それだけだと変更を加えた時に、いちいちコピーし直さなければなりません。それって結構手間になります。

プログラマーは怠惰であれの言葉に則り、Capistranoというツールを使って、自動デプロイを実現しておきます。

Gitリポジトリにpushしたソースを公開サーバーにコピーするという処理をCapistranoにやってもらう流れです。

Webサービスの構築などについては下記サイトを参考に進めました。Railsでの例ではありますが、ディレクトリの設定などは同様に進めることが可能です。Rails、DBの設定の部分などは今回スキップしてしまって構いません。

http://qiita.com/eiei19/items/7c08d358c82cb538def0

まずはGemfileに下記を追加し、bundle installしましょう。

インストールが完了したら、下記コマンドでCapistranoの初期設定を行いましょう。

コマンドを実行して生成されたCapfileに以下のコマンドを追加しましょう。

更にconfig/deployファイルも生成されているので、こちらに配布用のコードを書いていきます。

あとは今回アプリケーションをPumaで動かすので、config.ruをアプリケーションディレクトリに作成しておきます。

ここまで完了したら下記コマンドで配布実行。

権限によってはwww配下にディレクトリが作れないよ!と怒られることもあるので、その場合はサーバーにアクセスし、直接作成しておきましょう。

エラーが発生したり、修正を行った時はリポジトリへのpushを忘れないようにしましょう。特にGemfileを修正した時などは、pushしてから再リトライしないと反映されないので要注意!

正常に終了したら、デプロイは完了です。

nginxの設定

これでアプリケーションが動く仕組みはできましたが、実際にインターネットからアクセスされた時にアプリケーションに繋げる仕組みができていませんので、nginxの設定を行います。nginxのインストールや基本的な設定は上で紹介した記事を参考にしてみてください。

今回は設定ファイルの例だけ書いておきます。

設定を記述し終わったら、nginxを起動、または再起動します。

これで実際にサーバーのドメインまたはIPにアクセスすれば作成したsinatraアプリケーションが表示されます。

これからモリモリカスタマイズしていこうと思います。

閲覧いただき、ありがとうございました。

 - プログラミング