何、これは?
phpのローカル開発環境の構築手順です。windows向けでvirtualboxとvagrantを使用しています。
php5.4、mysql5.6を対象にし、リモートデバッグできるように設定を追加してます。
また、apacheは特にバージョンを気にしてません。
基本、centos6.4の最小構成のイメージにシェルで必要な設定を足していく感じです。
chefとかは使いません。
virtualboxとvagrantのインストール
VirtualBox(4.2.24) / https://www.virtualbox.org/
vagrant (1.7.1) / https://www.vagrantup.com/
動作確認したのは↑の組み合わせ。
両方とも最新ではないので、それぞれ過去バージョンからダウンロードしてインストール。
自分のときだと、バージョンによってはまともに動作せず、windows再起動とか必要になった
ケースがあったので、いつもこのバージョンを使用しています。
ファイル構成
Cドライブ配下にlocaldevフォルダを作成。
C:\localdev
│ Vagrantfile
│
├───box
│ CentOS-6.4-x86_64-v20131103.box
│
├───provision
│ apache.sh
│ base.sh
│ etc.sh
│ mysql.sh
│ php.sh
│ proxy.sh
│
├───setting
│ vhost.conf
│ xdebug.ini
│
└───src
index.html
Boxをvagrantへ登録
http://www.vagrantbox.es/
CentOS-6.4-x86_64-v20131103.box
面倒ですが、boxを一度ローカルにダウンロードし、その配置先を
vagrantのbox追加コマンドのurlにしてます。
通常のやり方でboxを追加しようとした時に特定のproxy下で失敗した経験からです。
vagrant box add centos64 C:\localdev\box\CentOS-6.4-x86_64-v20131103.box
vagrant up
vagrant up
以下はVagrantfileとプロビジョニングシェル。
vagrant up時に、Vagrantfileで指定したシェルが順番に実行される
# -*- mode: ruby -*-
# vi: set ft=ruby :
# Vagrantfile API/syntax version. Don't touch unless you know what you're doing!
VAGRANTFILE_API_VERSION = "2"
Vagrant.configure(VAGRANTFILE_API_VERSION) do |config|
config.vm.box = "centos64"
config.vm.network :private_network, ip: "192.168.33.10"
config.vm.provision :shell, :path => "provision/base.sh"
#config.vm.provision :shell, :path => "provision/proxy.sh"
config.vm.provision :shell, :path => "provision/apache.sh"
config.vm.provision :shell, :path => "provision/mysql.sh"
config.vm.provision :shell, :path => "provision/php.sh"
config.vm.provision :shell, :path => "provision/etc.sh"
end
#!/bin/sh
# fastestmirror
echo "prefer=ftp.jaist.ac.jp" >> /etc/yum/pluginconf.d/fastestmirror.conf
# Firewall、SELinux OFF
/etc/rc.d/init.d/iptables stop
chkconfig iptables off
chkconfig ip6tables off
cp -p /etc/selinux/config /etc/selinux/config.orig
sed -i -e "s|^SELINUX=.*|SELINUX=disabled|" /etc/selinux/config
#!/bin/sh
yum -y install httpd
yum -y install mod_ssl
#!/bin/sh
yum -y install http://dev.mysql.com/get/mysql-community-release-el6-5.noarch.rpm
yum -y install mysql-community-server
chkconfig mysqld on
service mysqld start
mysql -u root -e "UPDATE mysql.user SET Password=PASSWORD('') WHERE User='root';"
mysql -u root -e "GRANT ALL PRIVILEGES ON *.* to user@\"%\" IDENTIFIED BY 'password' WITH GRANT OPTION;"
mysql -u root -e "FLUSH PRIVILEGES;"
#!/bin/sh
rpm -ivh http://dl.fedoraproject.org/pub/epel/6/x86_64/epel-release-6-8.noarch.rpm
rpm -ivh http://rpms.famillecollet.com/enterprise/remi-release-6.rpm
sed -i -e "s/#baseurl=http/baseurl=http/g" /etc/yum.repos.d/epel.repo
sed -i -e "s/mirrorlist/#mirrorlist/g" /etc/yum.repos.d/epel.repo
sed -i -e "s/enabled=1/enabled=0/g" /etc/yum.repos.d/epel.repo
yum install -y --enablerepo=epel,remi,remi-php54 php php-cli php-common php-devel php-gd \
php-intl php-mbstring php-pdo php-mysqlnd php-pear.noarch php-xml php-mcrypt
pecl install xdebug
#!/bin/sh
\cp -f /vagrant/setting/xdebug.ini /etc/php.d/xdebug.ini
\cp -f /vagrant/setting/vhost.conf /etc/httpd/conf.d/vhost.conf
sed -i -e "/AddType text\/html \.php/i\AddType application\/x-httpd-php \.php \.html" /etc/httpd/conf.d/php.conf
rm -rf /var/www/html
ln -fs /vagrant/src /var/www/html
service httpd start
以下はシェルの中で仮想環境のcentosへコピーする設定ファイル
EnableSendfile Off
EnableMMAP Off
zend_extension="/usr/lib64/php/modules/xdebug.so"
xdebug.remote_enable=1
xdebug.remote_connect_back = on
xdebug.remote_handler=dbgp
xdebug.remote_mode=req
xdebug.remote_port=9000
xdebug.collect_params = On
xdebug.dump.GET = *
xdebug.dump.POST = *
C:\localdev\srcが 192.168.33.10のドキュメントルート
になっているはず
使い終わったらvagrant destroyでイメージを削除する