CakePHP3の最初の一歩、Vagrant を利用したシンプルな開発環境の構築手順

サーバサイドのシステム(プログラム)を開発するにあたり、まずは開発環境を構築する必要があります。弊社では各自の PC 内に仮想サーバを構築して開発しています。これを行うことでプロジェクトごとに異なったサーバ環境を利用でき、また本番環境になるべく近い状態で開発できるためオススメです。使用しているものは、

  • Mac
  • Vagrant / VertualBox
  • CentOS

になります。おそらく平均的な環境で、特別なものを使っていないかと思います。Mac 本体は別として、基本無料で準備できるためこれを標準構成としています。

php のフレームワークである CakePHP3 では、コマンドを実行したり外部サービス(github や packagest 等)と通信することが度々あるため、最初の環境構築をきちんとやっておかないと後でやり直しになってしまう場合があります。かといってガチガチに固めてしまうと各自のプロジェクトに合わせる柔軟性が失われてしまいます。

本記事は、後から追加・変更できるような柔軟性を残しつつ、なるべくシンプルな開発環境を構築する手順を目的とします。

Vagrant のインストール

以下、公式サイトからファイルをダウンロードしてインストールします。すでにインストール済みで最新版に更新したいときも同じインストールファイルを利用します。バージョンが 1.8.5 の場合はバグがあるとのことなので、バージョンを確認して最新版をインストールします。

Vagrant 公式サイト

無事ダウンロードが完了したらファイルを実行してインストールします。最新版に更新する場合は、ファイルを実行して最初の画面で uninstall.tool を選択してアンインストールを行い、その後インストールを完了します。私はすでにインストール済みだったので、これを機会にアンインストール / インストールを行い更新しました。なお、アンインストールに関してファイルが残っていないか不安な場合は以下を参考にチェックします。

Vagrant uninstall command

本体のインストールが完了したら、以下のコマンドを実行してプラグインをインストールします。これ以外にも色々と便利なものがありますが、最低限の環境を目指すためこれにとどめておきます。

vagrant plugin install vagrant-vbguest
vagrant plugin install vagrant-hostsupdater

VirtualBox のインストール

先ほどと同じく公式サイトからファイルをダウンロードしてインストールします。すでにインストール済みで最新版に更新したいときも同じファイルを利用します。

VirtualBox 公式サイト

ダウンロードが完了したらファイルを実行してインストールします。最新版に更新する場合は、最初の画面で VirtualBox_Uninstall.tool を選択します。私はこちらもこれを機会にアンインストール / インストールを行い最新版に更新しました。なお、以下に旧データが保存されているので不要な場合はこれを破棄してください。

~/ユーザ名/VirtualBox VMs

Vagrant ファイルの設定

Vagrant / VirtualBox のインストールが完了したら、仮想サーバを立ち上げるための設定ファイルを作成します。このタイミングで、開発に使用するディレクトリを指定する必要があります。設定ファイルさえきちんと記述できればディレクトリの変更は柔軟にできますので、気軽に場所やディレクトリ名を指定してください。

1. Vagrantfile (設定ファイル)の作成

Vagrant / Vertualbox のインストールが完了したら、仮想サーバを立ち上げる際の設定を記述します。以下のコマンドを実行して設定ファイルを作成してください。作成に成功すると Vagrantfile が作成されます。なお、開発環境のパスは適宜ご自身のものに書き換えてください。弊社ではサイト名をプロジェクトディレクトリとし、その下に vagrant ディレクトリを作成します。

# Coodip サイトの場合
mkdir ~/ユーザ名/htdocs/Coodip/vagrant
cd ~/ユーザ名/htdocs/Coodip/vagrant
 
# 実行完了すると Vagrantfile が作成されます
vagrant init

無事 Vagrantfile が作成されたら内容を確認してください。おそらくほとんどコメントアウトされているかと思いますので、これに設定内容を記述します。修正する内容は以下のインデントされている箇所です。

Vagrant.configure("2") do |config|
 :
 :
 :
end

2. BOX の指定

Vagrantfile を編集して box ファイルを指定します。これはどのOSを使うのか指定するようなもので、カスタマイズ済で配布されているものが多々あります。今回はなるべくシンプルを目指していますので、Vagrant の公式マニュアルにリンクされているものを参考に指定します。

Vagrant 公式マニュアル BOXES

# config.vm.box = "base" の箇所を修正
config.vm.box = "centos/7"

3. ホスト名の指定

仮想サーバを起動した後、ブラウザに IP アドレスを直接入力してアクセスするのは少し味気ないので、仮のホスト名を指定します。IP アドレスでアクセスしたい方はこの記述をスキップしてください。これを指定すると、仮想サーバの起動時に /etc/hosts に情報が書き込まれ、シャットダウンや停止時にそれが削除されます。

# http://coodip と入力するとアクセスできるようになる
config.vm.hostname = "coodip"

4. BOX の自動アップデートチェック

Vagrantfile 内、コメントの英文を読むとデフォルトで自動的にアップデートをチェックするようです。アップデートのチェックのみで自動で更新される訳ではなさそうなので今回はこのままにしておきます。チェックするのが嫌な方はコメントアウトを解除してください。

# config.vm.box_check_update = false

5. ネットワークの設定

各自のローカル開発環境に接続するネットワーク情報を記述します。複数台同時に立ち上げることもあるので、IPアドレスと ssh で接続するときのポートを指定します。なお、外部からローカルの開発環境にアクセスさせる必要はないので、公開ネットワークの設定はコメントアウトしたままにしておきます。

config.vm.network "private_network", ip: "192.168.33.10"
config.vm.network "forwarded_port", id: "ssh", guest: 22, host: 2210
 
# 以下の 2 つはコメントアウトしたままにする
# config.vm.network "forwarded_port", guest: 80, host: 8080
# config.vm.network "public_network"

6. sync ディレクトリの設定

ホスト(Mac側)のディレクトリとゲスト(仮想サーバ側)のディレクトリをシンクロさせる設定を記述します。オプションを指定して、ゲスト側にディレクトリがなければディレクトリが作成され、パーミッションは「777」になるように設定しました。開発環境なのでこれぐらい緩くてもいいかと思いますが、ステージング環境や本番環境でこのパーミッション設定はやらないようにしてください。

config.vm.synced_folder "../", "/usr/share/nginx/html/site",
  create: true, owner: 'vagrant', group: 'vagrant', mount_options: ['dmode=777,fmode=777']

7. Virtualbox の設定

仮想サーバのメモリや名前など、VertualBox の設定を記述します。メモリは 1024MB、名前は coodip にしました。また、仮想サーバを起動させた時に GUI 画面が立ち上がるのが苦手なため、これをオフにしました。

config.vm.provider "virtualbox" do |vb|
  vb.name = "coodip"
  vb.gui = false
  vb.memory = "1024"
end

8. 仮想サーバ内のミドルウェアの設定

今まで仮想サーバそのものの設定を記述してきましたが、CakePHP3 を使ってシステム開発を行うには web サーバやデータベース、php などのインストールが必要になります。これらのインストール手順を全て Vagrantfile 内に記述すると管理が大変になるため、別ファイル管理として仮想サーバの構築時(初回起動時)のみに実行させるように指定します。このタイミングでは一旦 vagrant ディレクトリ内に内容が空の script.sh ファイルを作成してください。

# ~/ユーザ名/htdocs/Coodip/vagrant/script.sh を指定
config.vm.provision :shell, :path => "script.sh"

仮想サーバの立ち上げ

script.sh の内容が空のためミドルウェアは何一つインストールされませんが、仮想サーバを立ち上げて問題がないか確認します。以下コマンドを入力して仮想サーバを立ち上げてください。

cd ~/ユーザ名/htdocs/Coodip/vagrant
vagrant up

ホスト名を指定した方は /etc/hosts に情報を書き込むため、パスワードの入力を求められることがあります。その際は Mac にログインする際のパスワードを入力してください。無事立ち上がり、以下コマンドで仮想サーバ内にログインできるか確認してください。ログインできれば仮想サーバの構築完了です。

vagrant ssh

あとは適宜好きなミドルウェアをインストールするコマンドを script.sh に記述して仮想サーバの破棄・構築を繰り返してください。

# 仮想サーバにログインしていれば、ログアウトする
exit;
 
# 仮想サーバを破棄する
cd ~/ユーザ名/htdocs/Coodip/vagrant
vagrant destroy
 
# 仮想サーバを構築する
cd ~/ユーザ名/htdocs/Coodip/vagrant
vagrant up

script.sh ファイルのサンプル

本当は nginx, mariaDB, php のインストールなども書きたかったのですが、selinux や各ミドルウェアの設定内容、また各自の PC のセキュリティ関連も含めるとキリがないので、この記事はここで一旦締めることにしました。

全て設定完了済みの script.sh ファイルのサンプルが欲しい方はお問い合わせよりご連絡ください。ただし、お渡しできるものはあくまでもサンプルであり、これを使用して何か不都合が生じても一切責任は負えません。あらかじめご了承ください。

終わりに

CakePHP3 で開発というまとめページを作成しました。随時更新していく予定なので、興味のある方はこちらもご覧ください。また、何かございましたら遠慮なくお問い合わせください。

Enjoy Develop Life!!