LoginSignup
83
83

More than 5 years have passed since last update.

vagrant + chef-solo で LAMP(PHP)の仮想環境を作成

Last updated at Posted at 2014-01-27

目標

  • vagrant + chef-solo で LAMP(PHP)の仮想環境を作成
  • 簡単な動作確認

環境

ローカル

  • Windows 7(64bit)
  • VirtualBox 4.3.6
  • Vagrant 1.4.3
  • ruby 1.9.3
  • chef 11.8.2
  • Berkshelf 2.0.13

仮想環境

  • CentOS 6.5
  • apache 2.2.15
  • MySQL 5.1.71
  • php 5.3.3

手順

VirtualBoxのインストール

Vagrantのインストール

rubyのインストール

RubyInstallerとDEVELOPMENT KITの両方が必要
http://rubyinstaller.org/
Windowsで2.0を使おうとすると問題が多発するので、1.9を強くお勧めします!

RubyInstaller実行

インストール先はc:\Rubyにしました。

DEVELOPMENT KITのインストール

アーカイブを実行すると、解凍先を聞かれるので、好きな場所(インストール先になります)に解凍
c:\RubyDevKitにしました

$ cd c:\RubyDevKit
$ ruby dk.rb init
$ ruby dk.rb install

chefのインストール

$ gem install -V chef --no-ri --no-rdoc

Berkshelfのインストール

$ gem install -V berkshelf --no-ri --no-rdoc

仮想環境イメージファイル選択

仮想環境の初期状態となるイメージファイル(box)を選択
http://www.vagrantbox.es/
VirtualBox用の最新版ということでCentOS 6.5 x86_64にしました。

Vagrant初期設定

:: vagrantの作業フォルダを作成
$ mkdir c:\vagrant
$ cd c:\vagrant

:: boxを設定
$ vagrant box add centos https://github.com/2creatives/vagrant-centos/releases/download/v6.5.1/centos65-x86_64-20131205.box

:: Vagrantfileを作成
$ vagrant init centos

:: 起動だけなら既に出来る状態です。簡単ですね!
$ vagrant up

:: 仮想環境を停止するコマンド
$ vagrant halt

:: 仮想環境を削除するコマンド(VirtualBoxのインスタンスが消えるだけです)
$ vagrant destroy

vagrantにchef用のプラグインを入れる

vagrant-omnibusは、仮想環境にchefをインストールするプラグイン。
vagrant-berkshelfは、vagrantとberkshelfを連携させるプラグイン。

$ vagrant plugin install vagrant-omnibus
$ vagrant plugin install vagrant-berkshelf

Berkshelfの設定

opscodeからダウンロードするcookbookを設定

Berksfile
site :opscode
cookbook 'apache2'
cookbook "mysql"
cookbook 'php'
cookbook 'vim'

Vagrantの設定

Vagrantfile
VAGRANTFILE_API_VERSION = "2"

Vagrant.configure(VAGRANTFILE_API_VERSION) do |config|
  config.vm.box = "centos"
  config.vm.hostname = "centos"
  config.vm.box_url = "https://github.com/2creatives/vagrant-centos/releases/download/v6.5.1/centos65-x86_64-20131205.box"

  # host(127.0.0.1)の8082番を、guest(仮想環境)の80番にポートフォワードする
  config.vm.network :forwarded_port, guest: 80, host: 8082

  # chefの設定
  config.vm.provision :chef_solo do |chef|
    chef.add_recipe     "apache2"
    chef.add_recipe     "apache2::mod_php5"
    chef.add_recipe     "mysql"
    chef.add_recipe     "mysql::client"
    chef.add_recipe     "mysql::server"
    chef.add_recipe     "php"
    chef.add_recipe     "vim"

    chef.json = {
      :apache => {
        :default_site_enabled => true
      },
      :mysql => {
        :server_root_password => "123456",
        :server_repl_password => "123456",
        :server_debian_password => "123456"
      }
    }
  end

  # 仮想環境にインストールするchefのバージョン
  config.omnibus.chef_version = :latest

  # berkshelfを有効にする
  config.berkshelf.enabled = true
end

仮想環境を起動する

::仮想環境の立ち上げからchef-solo実行まで行ってくれる。
$ vagrant up

仮想環境に接続

:: sshコマンド発行まで自動でやってくれる。
:: しかし、windowsはsshが入っていないので、接続情報が出力されて終わる。
$ vagrant ssh

:: 接続情報を出力するコマンド
$ vagrant ssh-config

好きな手段で接続してください。
teratermを使う場合は次のどちらかがオススメです。

(1)TTLファイルで接続

ttlファイルを読み込ませるのはttpmacro.exeです。(ttermpro.exeではない)

(2)sshコマンドを代替するバッチファイルでteratermを起動

ssh.batを作成し、パスを通す。
https://gist.github.com/sampleb3/8631514#file-ssh-bat

こうしておけば、$ vagrant sshでteratermによる接続まで一気にやってくれる。

※こちらを参考にさせて頂きました。
vagrant ssh を Windows でもできるように ssh コマンド作った(teraterm 編) / 虫けらロック

簡単な動作確認

mysql

Vagrantfileで指定した通り、rootのパスワードが設定されている。

$ mysql -uroot -p123456
$ exit

apache + php

デフォルトのDocumentRoot/var/www/htmlで起動しているので、phpinfo.phpを作成してアクセスしてみる。

$ sudo vim /var/www/html/phpinfo.php
phpinfo.php
<?php
  phpinfo();
?>

ブラウザで http://127.0.0.1:8082/phpinfo.php にアクセス。
phpinfoが表示される。

後始末

仮想環境を止める

$ vagrant halt

仮想環境を削除する

$ vagrant destroy

GitHub

ローカルのvagrantフォルダのリポジトリを公開します。
https://github.com/sampleb3/vagrant-lamp

83
83
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
83
83