WindowsでVagrant + VirtualBox + LAMP環境構築(Cake PHP)を自動化

WindowsでVagrant + VirtualBox + LAMP環境構築(Cake PHP)その1 - かつおブログ

WindowsでVagrant + VirtualBox + LAMP環境構築(Cake PHP)その2 - かつおブログ

WindowsでVagrant + VirtualBox + LAMP環境構築(Cake PHP)その3 - かつおブログ

で書いた内容をVagrantfleでの仮想マシン起動時に出来るだけ構築できるようにしてみた。 MySQLは初回パスワードの取得などの都合上、仮想マシン起動後に設定が必要

vagrant

仮想マシン起動後にスクリプトを実行するようにします。 Vagrantfile内にも書けるのですが、長くなるので、シェルファイル化し、シェルファイルを実行するようにします。

Vagrant.configure("2") do |config|
  config.vm.box = "bento/centos7"

 ~~~ 中略 ~~~

  config.vm.provision :shell, :path => "./provision.sh"

end

下記provision.shをVagrantfileと同じディレクトリに配置し、 vagrant upを実行することで、一通りインストールまで完了します。 vagrant sshMySQLの初回ログインや必要なテーブル作成が完了すれば環境構築は完了です。

provision.sh

#!/bin/sh

echo -------------------------------
echo ロケール、タイムゾーン設定
echo -------------------------------
export LANG=ja_JP.utf-8
locale
timedatectl set-timezone Asia/Tokyo
date

echo -------------------------------
echo remiレポジトリ取得
echo -------------------------------
yum install -y epel-release
yum install -y http://rpms.famillecollet.com/enterprise/remi-release-7.rpm

echo -------------------------------
echo Apacheインストール
echo -------------------------------
yum install -y httpd

echo -------------------------------
echo Apache自動起動設定
echo -------------------------------
systemctl start httpd
systemctl enable httpd


echo -------------------------------
echo MySQLインストール
echo -------------------------------
rpm -ivh https://dev.mysql.com/get/mysql80-community-release-el7-3.noarch.rpm
yum install -y mysql-community-server

systemctl start mysqld.service
systemctl enable mysqld.service

echo -------------------------------
echo MySQLDB作成、初期パスワード設定
echo -------------------------------


echo -------------------------------
echo PHPインストール
echo -------------------------------
yum install -y --enablerepo=remi,remi-php72 php php72-php php-devel php-mbstring php-pdo php-gd php-xml php-intl php-mysqlnd
echo ----- phpバージョン
php -v

echo -------------------------------
echo Composerインストール
echo -------------------------------
cd /home/vagrant
php -r "copy('https://getcomposer.org/installer', 'composer-setup.php');"
php -r "if (hash_file('sha384', 'composer-setup.php') === 'a5c698ffe4b8e849a443b120cd5ba38043260d5c4023dbf93e1558871f1f07f58274fc6f4c93bcfd858c6bd0775cd8d1') { echo 'Installer verified'; } else { echo 'Installer corrupt'; unlink('composer-setup.php'); } echo PHP_EOL;"
php composer-setup.php
php -r "unlink('composer-setup.php');"
echo ----- composer移動
mv composer.phar /usr/local/bin/composer
echo ----- composerバージョン
/usr/local/bin/composer --version


echo -------------------------------
echo CakePHPプロジェクト作成
echo -------------------------------
php /usr/local/bin/composer create-project --prefer-dist cakephp/app cms
chown -R vagrant cms