今までインフラ系はほとんどまともに勉強した事がなくて、ライブラリのインストールやVagrantで開発をするのに必要な設定ぐらいしか知識がなかった。RailsとかSinatraのデプロイは社内サーバーかheroku。

しかし、今作ってるモノがどうしてもherokuだと厳しい(レイテンシーとかプラン的な問題)ので、勉強も兼ねてRails+nginx+puma+CentOSな本番環境を作ったみた🔧

で、こういうのは毎日やらないと忘れてしまう……👻 いつもはメモや秘伝のレシピ的なモノを作って置いておくのだけど、プロビジョニングをコードに落としておけば「バージョン変わって動かない」なんて事があっても、(やりたい事orやらないといけない事)は分かるよね❗という事で、一通り触って一番自分が分かりやすかったItamaeでプロビジョニングできるようにしてみた。

参考

VPS(サーバー)選び

デプロイ先のサーバーは練習もあるので、

  • まっさらなlinuxが触れる🐧
  • 東京リージョンがある🗼
  • それでお小遣い内で運用できる安さ👛

という3つの条件を満たしてる良さそうなVPSを探した所、Vultrというサービスが見つかった。

一番安いプランでもメモリ768 MBくれるし、東京リージョンもある。DigitalOceanみたいに時間で料金が発生するタイプだから練習にはもってこいかな。スケールアップも簡単そうだし。

Itamae準備

適当にリポジトリを作ってrbenv initとかbundle initして、itamaeをインストールします。

$ rbenv init ItamaeRecipeSample
$ gem i bundler
$ gem i itamae

レシピの構成など

Itamaeにはジェネレーター機能があってitamae g rubyなどと書くと、フォルダやファイルのテンプレートを生成してくれます。あと、ベストプラクティス(Best Practice · itamae-kitchen/itamae Wiki · GitHub)が紹介されていたので、それを参考にしました。

├── cookbooks
│   └── nginx
│       ├── default.rb
│       ├── files
│       │   └── static.conf
│       └── templates
│           └── sample.conf
└── recipe.rb
└── node.yml

こんな感じ。ディレクトリとかは実際のサーバーの階層と同じにしてるってパターンが多いけど、とりあえず練習なんでこんな具合です。itamae g foobarで生成されたものをrecipe.rbで全部includeする感じにしています。


1つの記事にするとすごく長いし分かりづらいので分割する事にしました。次は基本的なsshとかポートとかを書きます。

Itamae自分メモ

  • 基本的な設定とか準備
  • sshとかセキュリティ
  • 必要なライブラリとかgitのインストール
  • Ruby(rbenv+ruby-build)のセットアップ
  • nginxのインストール&セットアップ