はじめに
サーバーで公開しているブログやサーバーアプリの開発は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を使用して仮想マシンの構築を行います。
[blogcard url=”https://www.vagrantup.com/docs/cli/”] [blogcard url=”https://qiita.com/oreo3@github/items/4054a4120ccc249676d9″]
インストール作業
[blogcard url=”https://www.vagrantup.com/downloads.html”]
VIRTUAL BOXのインストール
Virtual boxとは
VirtualBox は、使用している PC 上に仮想的な PC を作成し、別の OS をインストール・実行できるフリーの PC 仮想化ソフトです。
WINDOWSマシンしかもっていなくても、仮想化ソフトを利用してLINUXやMAC OSを動かすことができます。
インストール作業
[blogcard url=”https://www.virtualbox.org/wiki/Downloads”] [blogcard url=”http://www.oracle.com/technetwork/server-storage/virtualbox/downloads/index.html?ssSourceSiteId=otnjp”]
仮想マシンにLAMP環境を設定
CENTOS7インストール作業
BOXイメージを準備する
下記サイトよりインストールしたいBOXイメージを取り込みます。
[blogcard url=”http://www.vagrantbox.es/”]
今回は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コマンドで行います[blogcard url=”http://diy.sinceretechnology.work/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化しておきます。
[blogcard url=”https://qiita.com/YusukeHigaki/items/36cd2d4b60f049815fc6″] [blogcard url=”https://qiita.com/J_Sugar__/items/29517967417543dd98d9″]
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も一緒に管理する必要があります。
まとめ
参考
[blogcard url=”https://qiita.com/ozawan/items/160728f7c6b10c73b97e”] [blogcard url=”http://14-00.com/archives/26″]