読者です 読者をやめる 読者になる 読者になる

終電23時15分って早くね?

都内のIT企業で働くカラオケ大好きエンジニアの雑記

【Laravel Practice01】デプロイサーバー、Webサーバー、DBサーバーの準備

f:id:blue_goheimochi:20160622231431p:plain

Laravelを勉強するにあたって、色々な方面にも興味が出てしまったので、
Laravelアプリケーションを動かすためのサーバー環境構築とか含めて色々やってみようと思ったのでログとして残してみます。

今のところですが、画像のような感じで、

  • デプロイサーバー
  • Webサーバー
  • DBサーバー

を用意して、

  • 各サーバーはAnsibleでプロビジョニングする
  • デプロイサーバーからlaravel/envoyでデプロイする
  • サンプルのLaravelアプリケーションを作る

っていうところまではできたらいいなと思っています。
デプロイは他のツールも試してみたいなぁ。
とりあえずローカルにVirtualBoxVagrantで仮想環境を立ててやってみます。

デプロイサーバー、Webサーバー、DBサーバーの準備

ローカルにVirtualBoxVagrantでCentOS7の仮想環境を3台用意します。
VirtualboxVagrantは各自ご用意ください。
ちなみに私はWindows環境ですが、Chocolateyというソフト(Macでいうbrewみたいなやつ)でインストールしてます。簡単。

Vagrantfile

github.com

こちらのコミットをご覧ください。
3つのサーバーを起動するだけのVagrantfileになっております。
README.mdにも書きましたが、

$ git clone https://github.com/blue-goheimochi/laravel-servers.git
$ cd laravel-server
$ vagrant up

で、3つのサーバーをすべて起動する事ができます。

サーバーの定義
config.vm.define "deploy" do |server|
~~~~~~
end

config.vm.define "web" do |server|
~~~~~~
end

config.vm.define "db" do |server|
~~~~~~
end

と、Vagrantfileに記述することで複数のサーバーを定義できます。
deploywebdbという名前を設定しています。

個別にサーバーを起動したい場合は、

$ vagrant up deploy

のように、定義した名前をvagrant up [名前]とつけることで個別に起動できます。

Boxファイルの指定

各サーバーで同じBoxファイルを指定しています。

今回はbento/centos-7.1というBoxを使います。
CentOS7のBoxファイルです。

server.vm.box = "bento/centos-7.1"

【参考】bentoプロジェクトのBoxファイル一覧
bento | Atlas by HashiCorp
chef社が正式にサポートしているbentoというプロジェクトのBoxのようです。
多分安心して使っていいはず・・・!
色々なディストリビューションがそろってます。

IPアドレスの指定

IPアドレスは各サーバー別々のものを指定します。
すでに仮想サーバーがローカルに存在する場合は、それともかぶらないIPアドレスを指定しましょう。

server.vm.network "private_network", ip: "192.168.33.70"
vagrant-vbguestプラグインの自動アップデートを無効にする

vagrant-vbguestの自動アップデートを無効にします。

if defined?(server.vbguest)
  server.vbguest.auto_update = false
end

boxファイルが作成されたときのVirtualBoxのバージョンと自分がインストールしているVirtualBoxのバージョンが違う際に、
VirtualBox Guest Additionsを自動で更新してくれるプラグインvagrant-vbguestプラグインなのですが、
自動アップデートされてしまう際に、フォルダの共有が失敗する場合があるっぽかったので無効にしています。

アップデートしたい場合は手動で

$ vagrant vbguest deploy

と実行すればできると思います。

【参考】dotless-de/vagrant-vbguest
https://github.com/dotless-de/vagrant-vbguest

VirtualBoxの設定

VirtualBox周りの設定です。

vb.customize ["modifyvm", :id, "--natdnsproxy1", "on"]
vb.customize ["modifyvm", :id, "--natdnshostresolver1", "on"]

okisanjp.hatenablog.jp
上記サイトを参考に、わたしの環境でネットワークが遅かったので指定しています。

vb.gui = false

これをtrueにすると仮想ディスプレイが一緒に起動しますが、いらないのでfalseを指定。

vb.memory = 1024
vb.cpus = 2

こちらはメモリとCPUのコア数設定です。

まとめ

  • デプロイサーバー、Webサーバー、DBサーバーの3台をローカルに準備
  • Vagrantfileで複数台の仮想環境を指定できる
  • 個別にサーバーを起動することも可能
  • BoxファイルはChef社のbentoプロジェクトのBoxファイルが安心っぽい
  • IPアドレスはかぶらないように設定する
  • vagrant-vbguestの自動アップデートは無効にした
  • VirtualBoxのネットワークが遅いときの設定をいれた
  • 仮想ディスプレイはオフ

次は、デプロイサーバーにAnsibleをインストールして自分自身をプロビジョニングしてみたいと思います。

本当はたぶんデプロイサーバーに向けてAnsibleをホストOSから実行すればよいのですが、
Windows環境で(面倒なので)ローカルからAnsibleを実行するのではなく、
デプロイサーバー(兼プロビジョニングサーバー)という風に位置づけてAnsibleのインストールをしたいと思います。


次の記事はこちら
【Laravel Practice02】デプロイサーバーにAnsibleをインストール - 終電23時15分って早くね?