【Laravel Practice01】デプロイサーバー、Webサーバー、DBサーバーの準備
Laravelを勉強するにあたって、色々な方面にも興味が出てしまったので、
Laravelアプリケーションを動かすためのサーバー環境構築とか含めて色々やってみようと思ったのでログとして残してみます。
今のところですが、画像のような感じで、
- デプロイサーバー
- Webサーバー
- DBサーバー
を用意して、
- 各サーバーはAnsibleでプロビジョニングする
- デプロイサーバーからlaravel/envoyでデプロイする
- サンプルのLaravelアプリケーションを作る
っていうところまではできたらいいなと思っています。
デプロイは他のツールも試してみたいなぁ。
とりあえずローカルにVirtualBoxとVagrantで仮想環境を立ててやってみます。
デプロイサーバー、Webサーバー、DBサーバーの準備
ローカルにVirtualBoxとVagrantでCentOS7の仮想環境を3台用意します。
VirtualboxとVagrantは各自ご用意ください。
ちなみに私はWindows環境ですが、Chocolateyというソフト(Macでいうbrewみたいなやつ)でインストールしてます。簡単。
Vagrantfile
こちらのコミットをご覧ください。
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に記述することで複数のサーバーを定義できます。
deploy
、web
、db
という名前を設定しています。
個別にサーバーを起動したい場合は、
$ 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分って早くね?