【VAGRANT+VIRTUAL BOX】ローカル環境にLAMP環境を構築する

 

 

はじめに

サーバーで公開しているブログやサーバーアプリの開発はWINDOWS上にXAMPPでLAMP環境を構築してPHPSTORMというIDE(統合デバッグ環境)を使って開発をしています。しかし、いくらLAMP環境がWindows上で動くとはいえ実際の環境とは違いがありすぎるので、仮想マシンに環境をインストールすることにしました。最近は、VAGRANTというツールがあって簡単に環境を構築できるようになりました。

今回はVAGRANTを使ってローカル上に仮想マシンを作成します。

 

 

環境

  • WINDOWS10 HOME
  • VAGRANT
  • VIRTUAL BOX
  • APACHE2.4
  • MYSQL5.7.21
  • PHP5.4

 

 

準備

 

 

VAGRANTのインストール

 

Vagrantとは

Vagrantは、違う環境に移行可能な開発環境を簡単に構築・管理し、配布することができるすばらしい開発環境作成ツールです。今回は、Vagrantを使用して仮想マシンの構築を行います。

 

インストール作業

 

 

VIRTUAL BOXのインストール

 

Virtual boxとは

VirtualBox は、使用している PC 上に仮想的な PC を作成し、別の OS をインストール・実行できるフリーの PC 仮想化ソフトです。

WINDOWSマシンしかもっていなくても、仮想化ソフトを利用してLINUXやMAC OSを動かすことができます。

 

インストール作業

 

 

仮想マシンにLAMP環境を設定

CENTOS7インストール作業

 

BOXイメージを準備する

下記サイトよりインストールしたいBOXイメージを取り込みます。

今回はCENTOS7ですので、ento/centos-7をBOX名に指定します。

vagrant init bento/centos-7

※VAGRANT1.5までは「vagrant box add box名 URL」としてBoxを追加していましたが、現在ではinitコマンドで「Boxの追加」と「初期化」が同時にできるようになったようです。(vagrant init ベンダー名/Box名)

仮想マシン内にCENTOS7を構築する

vagrant up

Vagrantで端末からssh接続する

vagrant ssh

ssh接続から抜ける

exit

仮想マシン内のCENTOS7をシャットダウンする

vagrant halt

ホストOSからのアクセスを許可するためVagrantfileに次の一行を追加する

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

 

ipconfigでipアドレスを確認する

ifconfig

TERA TERMで仮想マシン上のCENTOS7に接続する

 

 

apache2.4のインストール

apache2をインストールします。インストールはyumコマンドで行います

apacheをインストールする

yum -y install httpd

apacheのバージョンを確認する

httpd -version

apacheが起動していることを確認する

systemctl enable httpd.service

 

 

composerのインストール

 

 

ホストOSからWEBサーバーをアクセス

 

 

ホストOSとファイル共有

次の一行をVagrantfileに追加することでホストOSと仮想マシン内のCENTOS7のデータを共有することができます

config.vm.synced_folder "ホストOS側のパス", "Vagrant側のパス"

ホストOS側のフォルダ

仮想マシン内のフォルダ

 

 

mysql5.7のインストール

ROOT PW変更

 

 

php5.4のインストール

 

 

DBツールのインストール

 

 

ADMINERのインストール

 

 

A5:SQL Mk-2のデータベース設定

 

【注意】大きなデータのインポート

数百万件を超えるようなデータをADMINERで取り込もうとすると処理が途中で中断してしまいます。PHPのプロセスが突然終了してしまっているようです。PHPの実行時間の制限は0(無制限)にしています。 しかし、数百万件以上になるとかなり時間がかかるので、MYSQLのCLIと使って直接取り込んだ方がよさそうです。
ちなみにCLIで200万件のデータインポートにかかる時間はおおよそ1分でした。

mysql -h ホスト名 -u ユーザー名 -pパスワード データベース名 < インポートするファイル.sql

 

開発環境をBOX化

ここまでの作業でCENTOS7のLAMP環境が構築できました。一旦ここでいつでもこの環境に戻せるようにBOX化しておきます。

 

 

MACアドレスの解除

MACアドレスが固定されて起動時にネットワークエラーが発生するため、udevルールを無効化しておきます。

sudo ln -s -f /dev/null /etc/udev/rules.d/70-persistent-net.rules

 

 

最適化

可能な限り最適化してBOX化した時のサイズを縮小します。

sudo yum clean all
sudo dd if=/dev/zero of=/EMPTY bs=1M
sudo rm -f /EMPTY

 

 

パッケージ作成

Vagrantでパッケージにします。配布する場合はこのパッケージファイル(.boxファイル)と必要であればVagrantfileを渡します。

vagrant package --output パッケージファイル名.box

 

 

ボックスに登録

Vagrantでボックスに登録にします

vagrant box add 登録BOX名 パッケージファイル名.box

 

 

登録されたボックスの確認

Vagrantで登録されたボックスを確認します

vagrant box list

※注意
BOX化したファイルにVagrantfileは含まれません。
配布時にはVagrantfileも一緒に渡す必要があるかもしれません。
ホストOSと特定フォルダをシェアしたり外部からのアクセスを受け付けたりする場合はVagrantfileも一緒に管理する必要があります。

 

 

まとめ

 

 

参考