1. TOP
  2. web
  3. php
  4. vagrantの環境移植メモ(PHP)

vagrantの環境移植メモ(PHP)

|

開発環境にvagrant を使ってPHPやLaravelの勉強をしているが、gitを使って同期しながらマシーンAでもマシーンBでも開発できるようにしたい。

実機A(MacBookPro)の ~/MyVagrant/MyCentOS フォルダで vagrant up して仮想マシンを立ち上げて、PHP、Laravelの開発練習をしている。

仮想マシン側の /vagrant フォルダと、実機(ホストマシン)側に作成した MyVagrant/MyCentOS (Vagrantfileがあるフォルダ)が共有フォルダとして同期しているが、自分はもう一段階、階層を深くして、 /vagrant/workspace と MyVagrant/MyCentOS/workapace を共有フォルダとして使っている。

実機Bにも同じ環境を構築し、gitで同期しながら、両方のマシンで開発を進めたい。

Vagrant のバージョンは、実機A、実機Bともに Vagrant 2.2.7

VirtualBoxのバージョンは
実機A: VirtualBox 6.1 [version 6.1.4 r136177 (Qt5.6.3)]
実機B: VirtualBox 6.0 [version 6.0.6 r130049 (Qt5.6.3)]

実機Aホストマシン側の操作

仮想マシンを止めて、現時点でのboxイメージを作成する

$ vagrant halt
$ vagrant package

すると、 Vagrantfile がある同じ階層に package.box ができる。

package.box を Dropbox内フォルダにコピーする。

実機Bホストマシン側の操作

Dropboxにコピーしたmy_boxをシステムに追加する

$ cd ~/MyVagrant/MyCentOS
$ vagrant box add my_box ~/Dropbox/.../package.box

my_box がシステムに追加されているのを確認。なお、boxイメージは ~/.vagrant.d/boxes に保存されている。
ちなみに、サイズは1GB近くになっていることもわかる。

$ vagrant box list
$ ls -la ~/.vagrant.d/boxes/ 
$ du -sh ~/.vagrant.d/boxes/my_box

my_box をベースに仮想マシンを初期化

$ vagrant init my_box

この時に作成される Vagrantfile は、このままでは使えない。実機AのVagrantfile から、ネットワーク設定の部分などをコピーする必要がある。(ただし、テンプレートに使ったboxが別物なので、Vagrantfile丸ごとコピーしてはいけない。)

「Vagrantfileの中身は現環境から引き継がれない」ので、新しく設定項目を追記しなおす必要があります。

「配布用にVagrantfileを作成して.boxファイルとまとめて渡す」でもいいかもしれません。

BoxファイルとVagrantファイルは別々で管理する必要がある、ということに気をつけましょう。

VagrantのBOXを「複製&配布して他人と共有する」方法

仮想マシンを起動し、SSH接続して入る。

$ vagrant up
$ vagrant ssh

実機B仮想マシン側の操作

[vagrant@localhost ~]$ ls -la

ホームで ls -la すると、/vagrant/workspace へのシンボリックリンクが点滅で表示されている。
環境移植では、作成した共有フォルダまでは復元されないということか。

/vagrant/workspace にフォルダを作成すると、ホームからのシンボリックリンクも正常に表示された。

あとは、workspaceフォルダに入って、作成済みの bitBucket のリポジトリをクローンすればよい。

これで、gitを介して同期しながら、実機A でも 実機Bでも 作業を進められる。以上、超個人的なメモでした。

追記

素のPHPに関しては、これで環境共有できるが、Laravelプロジェクトに関しては、これでは無理だった。Homestead など別の手段を使う必要があるようなので、近いうちに挑戦する。
https://laravel.com/docs/5.8/homestead

LaravelとWordPressに関しては、ローカル開発環境を(他マシーンへの移植がパパッとできるレベルまで)、急いで確立したい。