2015/12/20

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 などもあるので試してみる価値はあるのではないでしょうか。

http://www.vagrantbox.es/

なお、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  にブラウザでアクセスします。

Phpinfo

 

問題なく動作しているようですね。

 

Vagrant の起動と終了の仕方

Vagrant の起動と終了の仕方ですが、以下のようになります。Mac側の該当ディレクトリで実行します。

$ vagrant suspend   #スリープ
$ vagrant resume    #スリープからの復帰

$ vagrant halt          #シャットダウン
$ vagrant up           #起動

$ vagrant reload     #再起動 

  

おわりに

Vagrant の使い方を一通り見てきました。これで、Vagrant を取り敢えず使えるようになると思います。

他にも便利なプラグインなどもあるようです。

Vagrant は敬遠しがちかもしれませんが、使うとかなり便利です。

一度試してみてはいかがでしょうか。


スポンサーリンク


このエントリーをはてなブックマークに追加




Twitter ではブログにはない、いろんな情報を発信しています。


コメント

コメントを書く



プロフィール

  • 名前:fnya
    経歴:
    SE としての経験は15年以上。様々な言語と環境で業務系システム開発を行い、セキュリティ対策などもしていました。現在は趣味SE。

    Twitter では、ブログでは取り上げない情報も公開しています。


    ブログについて

    このブログは、IT、スマートフォン、タブレット、システム開発などに関するさまざまな話題を取り上げたり、雑感などをつづっています。


    >>ブログ詳細
    >>自作ツール
    >>運営サイト
    >>Windows 10 まとめ

    Twitter のフォローはこちらから Facebook ページはこちら Google+ページはこちら RSSフィードのご登録はこちらから