【Vagrant+VirtualBox】ローカルに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を使用して仮想マシンの構築を行います。

【まとめ】Vagrant コマンド一覧 - Qiita
リファレンス コマンド一覧を表示 vagrant list-commands ヘルプ vagrant -h 仮想マシンの操作 vagrant up 仮想マシンの起動。vagrantfileのあるディレクトリ内で...

インストール作業

Downloads | Vagrant by HashiCorp
Vagrant enables users to create and configure lightweight, reproducible, and portable development environments.

VIRTUAL BOXのインストール

Virtual boxとは

VirtualBox は、使用している PC 上に仮想的な PC を作成し、別の OS をインストール・実行できるフリーの PC 仮想化ソフトです。 WINDOWSマシンしかもっていなくても、仮想化ソフトを利用してLINUXやMAC OSを動かすことができます。

インストール作業

Downloads – Oracle VM VirtualBox
Oracle VM VirtualBox - Downloads | Oracle Technology Network | Oracle
Download the latest version of Oracle VM VirtualBox.

仮想マシンに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コマンドで行います
403 Forbidden

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
403 Forbidden

開発環境をBOX化

ここまでの作業でCENTOS7のLAMP環境が構築できました。一旦ここでいつでもこの環境に戻せるようにBOX化しておきます。
[PC1→PC2] vagrantで独自boxを作って配布する - Qiita
独自boxを作成する VM で /etc/udev を無効化する まずこれを行わないとMACアドレスが固定化されてしまい、別のPCでvagrant upできなくなる。 % vagrant ssh VM 内で下...
既存VirtualBoxマシンをVagrant化するときにハマったエラー回避方法など - Qiita
macbook上で既存VirtualBoxマシンをVagrant化にチャレンジしてみましたが、vagrant up 時に ruby が大量のエラーを吐いたり、ゲストマシンにssh接続できなかったりと、つまずくところが多かったので解決方...

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も一緒に管理する必要があります。

まとめ

参考

 
Vagrant + VirtualBoxでWindows上に開発環境をサクッと構築する - Qiita
最近、Vagrant(ベイグラント)を使い始めてすごい便利だなあと感じたので、Vagrantに関する記事を色々と読んで整理してみました。Windows環境でのセットアップ手順も書いています。 (※Windows向けの手順を書いています...
VagrantでXAMPPに替わる開発環境を整備 | 14時の間食
PHP/Javascript/WORDPRESS案件全般承ります

オーストラリアで主に日系企業や個人のお客様からのご依頼でお仕事をしております。この記事についてのご質問またはお困りのことがございましたら、お気軽にお問い合わせください。

タイトルとURLをコピーしました