Vagrantで簡単に共有できる仮想環境を構築する

Vagrantって言葉をよく聞くようになってきたので試したくなった。
プロジェクト毎に独立した環境が用意できるって結構素敵なことだなあ。
その開発環境の構築と共有を簡単に行うためのツールということで興味が湧いたので早速使ってみることに。

https://www.vagrantup.com/
https://www.vagrantup.com/downloads.html
ここからダウンロードできるようなので早速ダウンロード。

使用しているOSによってインストールの方法は違うけどここではMac OS X ElCapitan (10.11.6)を前提にします。

Vagrantのインストール

https://www.vagrantup.com/

VirtualBoxのインストール

https://www.virtualbox.org

ここらへんでBOXを探します。BOXってのはVagrantで使える中身のOSイメージね。

https://atlas.hashicorp.com/boxes/search

http://www.vagrantbox.es/

CentOS7.0が欲しいのでhttp://www.vagrantbox.es/よりコピー。

BOXを追加する。

vagrant box add CentOS70 <a href="https://github.com/tommy-muehle/puppet-vagrant-boxes/releases/download/1.1.0/centos-7.0-x86_64.box">https://github.com/tommy-muehle/puppet-vagrant-boxes/releases/download/1.1.0/centos-7.0-x86_64.box</a>

BOXが追加出来たかチェック。

$ vagrant box list

使用するディレクトリの準備

$ mkdir -p ~/Vagrant/CentOS70/
$ cd ~/Vagrant/CentOS70/

初期化。

$ vagrant init CentOS70

Vagrantfileという設定ファイルが作成されます。

VM起動。

$ vagrant up --provider virtualbox

vagrant up コマンドで自分の環境ではエラーになった。

An error occurred while downloading the remote file. The error
message, if any, is reproduced below. Please fix this error and try
again.

エラー解決法:

$ vagrant plugin install vagrant-vbguest

再度VM起動。

$ vagrant up

起動しました。

SSH接続(VMにログイン)

vagrant ssh

デフォルトでは
ユーザー名: vagrant
rootのパスワード: vagrant
になってました。

VM終了

vagrant halt

VM上で保存したデータは、

vagrant destroy

で環境を破棄するまでは保存されています。

ネットワーク設定

vim Vagrantfile

config.vm.network "private_network", ip: "192.168.33.10"

この部分のコメントアウトを外す。

PHPの環境を構築したい

PHPのインストール

$ sudo yum install php

apacheのインストールと起動。

$ sudo yum install httpd
$ sudo service httpd start

再起動してもApacheが起動するように。

sudo chkconfig httpd on

ファイアーウォールを切る(ローカル開発環境だから問題ないと思う)

sudo service iptables stop
sudo chkconfig iptables off

さらにMySQLを使いたい。ついでにwgetも欲しい。

$ sudo yum install mysql-server php-mysql wget

MySQLを自分好みに設定

$ sudo vi /etc/my.cnf
[mysqld]
default-character-set = utf8
[mysql]
default-character-set = utf8

上記設定にしてみた。

MySQLを起動

sudo /etc/rc.d/init.d/mysqld start

起動時にMySQLも一緒に起動する設定をしておく。

chkconfig mysqld on

rootでログインできるかな?

mysql -u root

できますね。

Apache再起動しておく

$ sudo service httpd restart

Mac側に戻ってリロードしておく。

vagrant reload

プロビジョニング(Provisioningとはvagrant upした後に実行される一連の処理のこと。ここまで手動でやったhttpdの設定などを自動化する。)別にやらなくてもいいけど環境を誰かと共有するなら。

vagrant provision

index.htmlファイルなんかを作ってみるといいかも。

$ cd /var/www/html
$ sudo vi index.html

この設定で192.168.33.10にアクセスできるのでブラウザで http://192.168.33.10にアクセスし、index.htmlページが表示されれば成功です

手軽に環境構築できる、という触れ込みだったけどはたして手軽なのか何なのか。
まあ慣れれば手軽に思えますね。

LinuxVagrant

Posted by bistro