Vagrant+CentOS7+シェルスクリプトでちゃちゃっとPHPテスト環境構築
ドットインストールでjQueryの勉強をしていて,phpやら何やら動かせるテスト環境が欲しいなと思ってVagrantを使って構築したのでlog.何となくMacのローカルではやりたくなかった.作業自体は少ないけど,インストールやboxのダウンロードに時間がかかる.
準備
- Vagrantのインストール
- VirtualBoxのインストール
手順とコード
boxのダウンロード
http://www.vagrantbox.es から,適当なboxファイルのURLをコピーしてくる.vagrantboxesは有志が公開しているゆえ利用は自己責任で.今回はCentOS7ということで
vagrant box add centos7 https://github.com/tommy-muehle/puppet-vagrant-boxes/releases/download/1.1.0/centos-7.0-x86_64.box
と言った感じ.結構時間かかる.
init
boxのダウンロードが終わったら,先ほどダウンロードしたboxを指定して好きなディレクトリでvagrant initする.例えばユーザディレクトリ下のvmというディレクトリであれば
/Users/$USER/vm% vagrant init centos7
と言った感じ.
Vagrantfileとprovition
provision.shというファイル名で,以下のシェルスクリプトをinitしたディレクトリに作成する.
#!/bin/sh sudo yum -y install httpd sudo yum install -y php lineNum=`sudo grep "AddType application/x-gzip .gz .tgz" -n /etc/httpd/conf/httpd.conf | cut -d ":" -f 1` if [ $lineNum ]; then sudo sed -i -e "${lineNum}a \ AddType application/x-httpd-php .php" /etc/httpd/conf/httpd.conf lineNum=$((lineNum+1)) sudo sed -i -e "${lineNum}a \ AddType application/x-httpd-php-source .phps" /etc/httpd/conf/httpd.conf fi sudo systemctl start httpd sudo systemctl enable httpd sudo systemctl stop firewalld sudo systemctl disable firewalld sudo rm -rf /var/www/html sudo ln -fs /vagrant /var/www/html
欲しいパッケージがあれば適当に追記する.次は,Vagrantfileを次のように書き換える.
# -*- mode: ruby -*- # vi: set ft=ruby : Vagrant.configure("2") do |config| config.vm.box = "centos7" config.vm.network "private_network", ip: "192.168.33.10" config.vm.provision :shell, :path => "provision.sh" end
ついでにinitしたディレクトリにinidex.phpというファイル名で次のphpファイルを作っとく.
<?php phpinfo(); ?>
追記
/var/www/htmlにvagrantの共有フォルダを設定していると,次の記事のような事象が起こる模様.
qiita.com
これを回避するために,provision.shに以下の記述を追加する.
lineNum=`sudo grep "<Directory \"/var/www/html\">" -n /etc/httpd/conf/httpd.conf | cut -d ":" -f 1` if [ $lineNum ]; then sudo sed -i -e "${lineNum}a \ EnableSendfile off" /etc/httpd/conf/httpd.conf fi