Vagrant で CentOS7 + PHP + MySQL の仮想環境を構築する
はじめに
Vagrant を使用すれば、仮想環境をより簡単に使用できるようになるので、実際に構築してみました。
使用環境は以下の通りです。基本的に CentOS7 の基本パッケージをサポートを考えて採用していますが、MySQL だけは CentOS のサポートから外れてしまったので、最新版をインストールしています。
- CentOS 7.1
- Apache 2.4.6
- PHP 5.4.16
- MySQL 5.6.28
事前準備
事前に以下のツールをインストールしておきます。
Vagrant には仮想化ツールが必要なので、仮想化ツールとして VirtualBox を選択しました。
また、実際の環境構築は Mac で行いましたが、上記ツールのインストール以外は、Mac と Windows で差はないと思います。若干読み替える必要があるかもしれませんが、それは随時ご対応ください。
Vagrant の初期化
下記のようにコマンドを実行して、Vagrant の初期化をします。Vagrant は環境ごとにフォルダが必要になることにご注意ください。
$ cd
$ mkdir MyVagrant
$ cd MyVagrant
$ mkdir centos7
$ cd centos7
$ vagrant init bento/centos-7.1
bento は chef 社の公式の BOX リポジトリなので、安心して利用することができます。どのような環境が利用できるかは、以下のサイトをご確認ください。
https://atlas.hashicorp.com/bento/
また、有志で BOX のリポジトリが公開されている以下のものがあります。使用は自己責任になりますが、Windows などもあるので試してみる価値はあるのではないでしょうか。
なお、vagrantbox.es を使用する場合は、コマンドが以下のように変わるのでご注意ください。
$ vagrant box add {title} {url}
$ vagrant init {title}
$ vagrant up
Vagrant の起動
では、いよいよ Vagrant を以下のコマンドで起動します。
$ vagrant up
初期化処理の続きが行われますが、それが終わりエラーメッセージが表示されなければそれで OK です。
Vagrant へログイン
以下のコマンドで vagrant ユーザーとして Vagrant の CentOS にログインできます。
$ vagrant ssh
[vagrant@localhost ~]$
ログアウトする場合は、以下のように行います。
[vagrant@localhost ~]$ exit
Vagrant のネットワークの設定
デフォルトのままだと、Vagrant の環境に外部からアクセスすることができないため、ネットワークの設定を行います。
一旦、Vagrant からログアウトしておいてください。
現在のカレントフォルダ(Mac)に、Vagrantfile があるので、このネットワークのコメントを外します。
# config.vm.network "private_network", ip: "192.168.33.10"
config.vm.network "private_network", ip: "192.168.33.10"
設定を保存後、以下のコマンドを実行します。
$ vagrant reload
設定がうまくいったか、Mac から ping で確認します。
PING 192.168.33.10 (192.168.33.10): 56 data bytes
64 bytes from 192.168.33.10: icmp_seq=0 ttl=64 time=0.598 ms
64 bytes from 192.168.33.10: icmp_seq=1 ttl=64 time=0.697 ms
64 bytes from 192.168.33.10: icmp_seq=2 ttl=64 time=0.758 ms
問題ないようですね。
プロビジョニングの設定
プロビジョニングには Vagrant の機能の1つで、環境設定のためのスクリプトを実行することができます。
今回はシェルでパッケージのインストールや設定をプロビジョニングで行いたいと思います。
まず、先ほどの Vagrantfile を開いて、以下の一行を適当な場所に追記してください。
config.vm.provision :shell, :path => "provision.sh"
この設定は、シェル実行ファイルの “provision.sh" をプロビジョニングで実行するという意味になります。
“provision.sh”の内容は以下のようになります。過不足があれば調整してください。
#Apache
sudo yum -y install httpd
sudo systemctl start httpd.service
sudo systemctl enable httpd.service#firewalld
sudo systemctl start firewalld.service
sudo systemctl enable firewalld.service
sudo firewall-cmd --zone=public --add-port=80/tcp --permanent
sudo firewall-cmd --zone=public --add-port=443/tcp --permanent
sudo firewall-cmd --reload#MariaDB
sudo yum -y remove mariadb*
sudo rm -rf /var/lib/mysql/#wget
sudo yum -y install wget#vim
sudo yum -y install vim#MySQL
sudo wget http://dev.mysql.com/get/mysql-community-release-el7-5.noarch.rpm
sudo rpm -Uvh mysql-community-release-el7-5.noarch.rpm
sudo sed -i 's/enabled=1/enabled=0/g' /etc/yum.repos.d/mysql-community.repo
sudo yum -y --enablerepo=mysql56-community install mysql-community-server
sudo systemctl start mysqld.service
sudo systemctl enable mysqld.service#PHP
sudo yum -y install php php-mysql php-mbstring
sudo systemctl restart httpd.service# chmod
sudo chmod -R 777 /var/www/html
“provision.sh” を Vagrantfile と同じディレクトリに保存して、以下のコマンドを実行します。
$ vagrant provision
若干、警告が表示されますが、内容を確認して問題ないようなら無視して大丈夫です。
再度、ログインして各パッケージが正しくインストールされたか確認します。
$ vagrant ssh
Vagrant側です。
[vagrant@localhost ~]$ httpd -v
Server version: Apache/2.4.6 (CentOS)
Server built: Nov 19 2015 21:43:13[vagrant@localhost ~]$ php -v
PHP 5.4.16 (cli) (built: Jun 23 2015 21:17:27)
Copyright (c) 1997-2013 The PHP Group
Zend Engine v2.4.0, Copyright (c) 1998-2013 Zend Technologies[vagrant@localhost ~]$ mysqld --version
mysqld Ver 5.6.28 for Linux on x86_64 (MySQL Community Server (GPL))
問題なくインストールできていますね。
Web サーバーの確認
Webサーバーが正しく動作しているか、PHP ファイルをサーバーに作成して動作確認をします。
Vagrant 側で以下のコマンドを実行します。
[vagrant@localhost ~]$ echo "<?php phpinfo(); ?>" >> /var/www/html/index.php
サーバーのアドレスの http://192.168.33.10/index.php にブラウザでアクセスします。
問題なく動作しているようですね。
Vagrant の起動と終了の仕方
Vagrant の起動と終了の仕方ですが、以下のようになります。Mac側の該当ディレクトリで実行します。
$ vagrant suspend #スリープ
$ vagrant resume #スリープからの復帰$ vagrant halt #シャットダウン
$ vagrant up #起動$ vagrant reload #再起動
おわりに
Vagrant の使い方を一通り見てきました。これで、Vagrant を取り敢えず使えるようになると思います。
他にも便利なプラグインなどもあるようです。
Vagrant は敬遠しがちかもしれませんが、使うとかなり便利です。
一度試してみてはいかがでしょうか。
スポンサーリンク
Twitter ではブログにはない、いろんな情報を発信しています。
@fnyaさんをフォロー
コメント