2017年10月20日金曜日

vagrantとvirtual box

vagrantで仮想環境を作って開発環境を整える方法を書きたいと思います。

1. とりあえずvagrantとvirtual boxをダウンロードする

2つとも無料です。

Virtual Box - https://www.virtualbox.org/wiki/Downloads
Vagrant - https://www.vagrantup.com/

ダウンロード、インストールまでしてみてください。

2. 確認

インストールが終わったら以下のコマンドをコマンドプロンプト上で実行します。
(コマンドプロンプトってあの黒いウィンドウです。なんだそれって人はcmdでPC内を検索すると見つかります。)

vagrant -v

ちなみに書籍では以下のようにコマンドが書かれることがありますが

$ vagrant -v

この「$」はスーパーユーザーでない一般ユーザーとしてログインしていることを示しています。ゆえに「$」は入力しなくて構いません。ちなみにスーパーユーザーを示すのは「#」です。こっちは管理者とかが使うものです。

vagrantがきちんとインストールされている場合は下のようにバージョン情報が出ます。


3. 仮想マシン用のフォルダを作る

とりあえずC直下に「MyVM」というフォルダを作ります。


ここに「MyCentOs」というフォルダをさらに作ります。

この「MyCentOs」内に仮想マシンを入れます。コマンドプロンプト上でも同じディレクトリに移動する必要があるので、以下のコマンドを入れます。

$ cd C:\MyVM\MyCentOs

するとコマンドプロンプト上のディレクトリも変わるはずです。

4. Boxをinitする

とりあえずbento/centos-7.3というboxを使ってcentos バージョン7.3の仮想マシンを作ってみます。Bento Boxはこちらで確認できます。Boxというのは仮想マシンを作るための情報が詰まっているいわば種みたいなものです。ここから仮想マシンを作るのです。

以下のコマンドを入力してください。

$ vagrant init bento/centos-7.3

すると以下のようなメッセージがでます。

するとさっきのディレクトリに「Vagrantfile」というファイルができます。

これをメモ帳で開きます。



それでVagrantfileを次のように変えます。


#がいっぱいならんでますが、これは#の右側をコメントアウト(プログラム実行時に無視される)するものです。下の「ici」って書いてあるところの#を消してprivate networkの部分をコメントインします。

(ちなみにiciっていうのはフランス語でここって意味です)

(ちなみにメモ帳よりは「Sublime Text」のほうがずっと使いやすいです)

5. Vagrant up

上記のようにコメントインできたらそれをいったん保存して閉じてください。その後にコマンドプロンプト上でvagrant upと入力、実行します。

vagrant up

それで以下のような感じになったら成功。仮想マシン(Cent OS 7.3)が立ち上がります。こいつは仮想マシン(Cent OS 7.3)なので内部でいくら無茶なプログラム走らせようがめちゃくちゃな設定をしようが、最悪ぶっ壊したとしても代わりの仮想マシンをいくらでも同じように作れます。なので練習や開発に最適なのです。

仮想マシンを止めるときは次のコマンドを使ってください。

vagrant halt

仮想マシンを再起動するときは次のコマンドを使ってください。

vagrant reload


6. SSH接続をする

Windowsを使っている場合、vagrantでSSH接続をするにはTeratermが必要です。
ダウンロードしてインストールしてください。
Teraterm: https://ttssh2.osdn.jp/index.html.en

MacやLinuxを使っている場合はOpen SSHが入っていると思うのでコマンドプロンプト上で

$ vagrant ssh

でssh接続ができると思います。

Teratermを使う場合はこんな風に設定します。



ユーザー名とパスワードは両方とも「vagrant」です。


こんな風になったら接続成功です。

なお、できないという人はおそらくWindowsかアンチウイルスソフトのファイアウォールに接続がブロックされてます。どうしてもできない場合は接続がブロックされていないか、ネットワークのセキュリティを確認してください。

7. Update

SSH接続できたらとりあえずアップデートします。以下のコマンドを使ってください。

$ sudo yum update
$ sudo yum upgrade



なお、vagrantのGuestAdditionsとホストのバージョンが合っていないとフォルダがちゃんとリアルタイムで同期しなくなります。なのでGuestAdditionsとホストのバージョンを自動的に調整してくれる便利なvbguestをインストールします。

コマンドプロンプト上で以下のコマンドを使います。

vagrant plugin install vagrant-vbguest

そしたらコマンドプロンプト上でこういうコマンドが使えるようになります。以下のコマンドはGuestAdditionsとホストのバージョンが合っているかを確認するコマンドです。

vagrant vbguest --status

アップデート(GuestAdditionsとホストのバージョンを合わせたい場合)は以下のコマンドを使います。

vagrant vbguest

Mounting failed with the error: No such deviceとかいうエラーがでて共有フォルダーが使えない場合

おまけ centos/7

Boxの初期化にbento/centos-7.3を使いました。
$ vagrant init bento/centos-7.3
こいつの代わりにcentos/7を使ってBoxを初期化することもできます。
$ vagrant init centos/7
centos/7はより安定した動作が期待できます。 ただし、もしこれを使う場合はprivate_keyを使ったログインをする必要があります。private_keyの場所はここです。

C:\vagrant\centos\.vagrant\machines\default\virtualbox


centos/7を使う場合、さらにこの1文をVagrantfileに追加してください。
config.vm.synced_folder ".", "/vagrant", type: "virtualbox"

centos/7の場合、SELinuxのせいでPHPファイルの実行ができない場合があるので以下のコマンドでSELinuxを一時的に無効にします。
$ sudo yum install policycoreutils-python
$ sudo semanage permissive -a httpd_t

リンク:
1. vagrantとvirtual box
2. アパッチのインストール
3. MySQLのインストール
4. PHPのインストール
5. CakePHP3のインストール
6. MigrationとBake