15
19

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 5 years have passed since last update.

vagrant + shellを使用したwindows上でのLAMP環境構築(php5.4 mysql5.6)

Last updated at Posted at 2015-05-27

何、これは?

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下で失敗した経験からです。

windowsコマンドプロンプト
vagrant box add centos64 C:\localdev\box\CentOS-6.4-x86_64-v20131103.box

vagrant up

windowsコマンドプロンプト
vagrant up

以下はVagrantfileとプロビジョニングシェル。
vagrant up時に、Vagrantfileで指定したシェルが順番に実行される

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
base.sh
#!/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
apache.sh
#!/bin/sh

yum -y install httpd
yum -y install mod_ssl
mysql.sh
#!/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;"
php.sh
#!/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
etc.sh
#!/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へコピーする設定ファイル

vhost.conf
EnableSendfile Off
EnableMMAP Off
xdebug.ini
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でイメージを削除する

15
19
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
15
19

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?