主に備忘録

基本的には自分用の備忘録っぽいもの。

MacにVagrantでCentOS+FuelPHPの環境を作成する(その1. Vagrantfile(shell)で頑張る)

実施環境

目標

Vagrantを使用して下記環境を構築する

今回のゴール

vagrant upだけでFuelPHPのWelcomeが表示できるようにする

今回の成果物

こちらに置いてあります

negibouze/vagrant-fuelphp_part1

1. 各ツールの準備(インストール済みの場合不要)

step1. Homebrewをインストールする

ターミナルで下記を実行

$ ruby -e "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/master/install)"

step2. Homebrew Caskをインストールする

$ brew install caskroom/cask/brew-cask

step3. VirtualBoxをインストールする

$ brew cask install virtualbox

step4. Vagrantをインストールする

$ brew cask install vagrant

step5. Vagrant-vbguest pluginをインストールする

$ vagrant plugin install vagrant-vbguest

2. Vagrantfileの作成

step1. 対象ディレクトリ配下で下記を実行

$ vagrant init

3. Vagrantfileの編集

step1. vm.boxを設定

今回はpuppetlabsのCentOS 6.6(64-bit)を使用
!Puppetは使わないので「nocm」

config.vm.box = "puppetlabs/centos-6.6-64-nocm"
# boxがない場合、インストール
config.vm.box_url = "https://vagrantcloud.com/puppetlabs/boxes/centos-6.6-64-nocm/versions/1.0.2/providers/virtualbox.box"

step2. $scriptを追記

$script = <<SCRIPT
  # 詳細は後で追加
SCRIPT

step3. provisionを追記

config.vm.provision "shell", inline: $script

ここまででこんな感じ

$script = <<SCRIPT
 # 詳細は後で追加
SCRIPT

Vagrant.configure(2) do |config|

  config.vm.box = "puppetlabs/centos-6.6-64-nocm"
  config.vm.box_url = "https://vagrantcloud.com/puppetlabs/boxes/centos-6.6-64-nocm/versions/1.0.2/providers/virtualbox.box"

  config.vm.define :"web1" do |host|
    host.vm.hostname = "web1"
    host.vm.network :private_network, ip: "192.168.100.11", netmask: "255.255.255.0"
  end

  config.vm.provision "shell", inline: $script
end

4. $scriptに処理を追加

step1. Timezoneを変更

# timezone
cp -p /usr/share/zoneinfo/Japan /etc/localtime

step2. iptablesを無効にする

# remove all rules
/sbin/iptables -F
# iptables stop
/sbin/service iptables stop
# iptables off
/sbin/chkconfig iptables off

step3. httpd(apache)をインストールする

httpd.confは事前に用意しておく
!DocumentRoot とか編集しています

### apache install ###
# install httpd
yum install -y httpd
# cp local httpd.conf
cp -a /vagrant/httpd.conf /etc/httpd/conf/
# httpd restart
/sbin/service httpd restart
# enable launch settings
/sbin/chkconfig httpd on

step4. Gitをインストールする(やらなくても良い)

FuelPHPをgitで持ってくるのをやめたためこの手順は不要でした(ここは時間がかかるのでやらない方が良いです)
* 多少古くても良い場合

yum install -y git
  • 最新版を入れる場合
### git install ###
# install dependency packages (temporariy install old version git)
yum install -y curl-devel expat-devel gettext-devel openssl-devel zlib-devel perl-ExtUtils-MakeMaker git
cd /usr/local/src/
# download latest version
git clone https://git.kernel.org/pub/scm/git/git.git
# remove old version
sudo yum remove -y git
cd git
# make
make prefix=/usr/local all
make prefix=/usr/local install

step5. PHP5.6をインストールする

### php5.6 install ###
# install epel & remi
sudo rpm -Uvh http://ftp.iij.ad.jp/pub/linux/fedora/epel/6/x86_64/epel-release-6-8.noarch.rpm
sudo rpm -Uvh http://rpms.famillecollet.com/enterprise/remi-release-6.rpm
# install php & packages (& dependencies)
sudo yum install -y --enablerepo=remi --enablerepo=remi-php56 php php-common php-cli

step6. php.iniをコピーする

php.iniは事前に用意しておく
!date.timezone とか編集しています

# cp local php.ini
cp -a /vagrant/php.ini /etc/

step7. curlを更新する(やらなくても良い)

### ref: update curl ###
sudo rpm -Uvh http://www.city-fan.org/ftp/contrib/yum-repo/city-fan.org-release-1-13.rhel6.noarch.rpm
sudo yum install -y libcurl

step8. FuelPHPをインストールする

$ oil create <project_name>
  • gitプロトコルが使えない場合
    GitHubからcloneするとcomposer実行時にtokenが必要になる場合があるため、今回はzipをdownloadする
### FuelPHP install ###
# oil install
curl get.fuelphp.com/oil | sh

# create target directory
sudo mkdir -p /srv/example

# fuelphp1.7.3 download
cd /usr/local/src
sudo wget -O fuelphp-1.7.3.zip http://fuelphp.com/files/download/34
sudo unzip fuelphp-1.7.3.zip -d /srv/example
cd /srv/example
sudo mv fuelphp-1.7.3 fuelphp
cd fuelphp
sudo php oil refine install

step9. httpd(apache)を再起動する

# httpd restart
sudo service httpd restart

5. 動作確認

step1. 仮想マシンを作成する

$ vagrant up

step2. 動作確認

ブラウザで「192.168.100.11」を開いて下記画面が表示されればOK
f:id:ita3y:20151123194535p:plain