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を作成して.boxファイルとまとめて渡す」でもいいかもしれません。
BoxファイルとVagrantファイルは別々で管理する必要がある、ということに気をつけましょう。
仮想マシンを起動し、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に関しては、ローカル開発環境を(他マシーンへの移植がパパッとできるレベルまで)、急いで確立したい。