インストールとBoxの取得
最初に仮想マシンを入れるフォルダを作っておきます。今回はtestCentosという名前で作成しました。
$ mkdir testCentos //仮想マシン用のフォルダ作成
$ cd testCentos //作成したフォルダに移動
Vagrant https://www.vagrantup.com/downloadsと
Virtualbox https://www.virtualbox.org/ をそれぞれ公式サイトから
ダウンロードし、表示されるままインストールを進めます。
vagrant -v
とターミナルで打ち込んでVagrant 2.2.15
等のバージョンが返ってくればインストールできています。
次にboxを取得します。boxは仮想マシンの雛形のようなものです。
boxのurlは http://www.vagrantbox.es/ からコピーできます。
$ vagrant box add [boxにつけたい名前] [boxのurl]
今回はCentOS 7.0 x64を使ったので
$ vagrant box add centos https://github.com/tommy-muehle/puppet-vagrant-boxes/releases/download/1.1.0/centos-7.0-x86_64.box
となります。
==> box: Successfully added box 'centos' (v0) for 'virtualbox'!
成功すると上記の表示が出ます。
$ vagrant box list
でboxが追加できてるか確認します。
最後にboxを初期化します。このときに仮想マシンの設定が記述されているVagrantfileが生成されます。
$ vagrant init centos //boxの名前
boxの取得をする前に起動させたり、初期化し忘れているとエラーが出るので注意。
起動と接続
$ vagrant up
でvagrantを起動させます。
$ vagrant status
で状態を確認し、runningであれば起動できています。
$ vagrant ssh
でssh接続し、([Vagrant@localhost ~ ]と表示されてればログインは成功しています。
ApacheとPHPをインストール
ここからwebサーバーにアクセスしてブラウザに表示させる為に、webサーバーであるapacheをインストールします。
$ sudo yum -y install httpd
を打ちます。
Vagrant@localhost~の@より前の部分がVagrantになっていますが、これだと書き込みができない第三者的なものなので、このままインストールやらフォルダ作成をしようとすると権限がない!と怒られます。
なので先頭にsudoコマンドをつけます。
またはsudo su
でrootユーザーに切り替えても同じようにインストールやら書き込みが出来るようになります。
元のユーザーに切り替えるときはsu [切り替えたいユーザー(今回だとvagrant)]
で元に戻れます。
$ sudo service httpd start
$ sudo systemctl enable httpd.service
でサーバーを起動させます。ついでに常時起動するようにしておきます。
次に、ファイアウォールの切断
$ sudo systemctl stop firewalld
$ sudo systemctl disable firewalld
$ sudo systemctl status firewalld
切断できていれば Active: inactive (dead)
と表示されます。
ホストOSとゲストOSとのフォルダ共有の為のプラグインをインストール
$ vagrant plugin install vagrant-vbguest
$ vagrant plugin list
vagrant-vbguest (0.29.0, global)等が返ってくればインストールできています。
$ sudo yum install php
PHPをインストール
Is this ok [y/d/N]: y
途中これでいですか?と聞かれるのでyを選択。
php -v
と打ってバージョン等の表示が返ってくればインストールできています。
ブラウザからページが表示されるか確認
今のままだとアクセスできないのでターミナルからVagrantfileの記述を変更します。
$ vi Vagrantfile //Vagrantfileを編集
iキーを押してインサートモードに切り替えたら下記の箇所を変更。
# config.vm.network "private_network", ip: "192.168.33.10" //変更前
config.vm.network "private_network", ip: "192.168.33.10" //変更後
先頭の#を消してコメントアウト状態から有効にします。
次にconfig.vm.synced_folderの設定を変えます。これはホストOSとゲストOSのフォルダを同期するものです。先頭の#を消して、config.vm.synced_folderの後ろにホストOSのパスとゲストOSのパスを指定します。
今回はVagrantfileと同じ階層にdataというフォルダをホスト側で作り、その中にファイルを入れていき、仮想環境上の/var/www/htmlと同期させています。
# config.vm.synced_folder "../data", "/vagrant_data" //変更前
config.vm.synced_folder "./data", "/var/www/html" //変更後
編集が終わったらescキー→:wq→enterで上書き保存します。
保存ができたら vagrant reload
で再起動させます。
最後にブラウザに表示する用にdataフォルダの中にindex.phpファイルを作成します。
<?php
phpinfo();
?>
192.168.33.10のアドレスにアクセスして phpinfoが表示されていれば完了です。
使う必要がなくなったらexitでログアウトし、vagrant halt
で電源を切って終了です。
最後に
PHPの勉強をするにあたってVagrantとVirtualboxを使って仮想環境を作ったのですが、なかなか苦戦したので忘れないうちに備忘録としてまとめようと思いました。
修正などあればコメントでご教示いただけると嬉しいです。