とあるエンジニア系ライダーの日常

Webエンジニアの話、バイクの話

Mac上にVirtualBoxでLAMP環境構築

ふとWordpressで遊んでみたいなと思いMac上にUbuntuLAMP環境構築

今回の目的はずばり

[ Macローカル上にて編集したものをすぐに見れる環境構築 ]

下準備

Virtual Box

https://www.virtualbox.org/

公式サイトからインストールして言われるがままにインストール

Vagrant

おなじみ、仮想環境管理用の最強ツールです。

https://www.vagrantup.com/

これもダウンロードして言われるがままにインストール

Berkshelf

Chefのcookbookの面倒な依存関係を解消してダウンロードするのに使います。

下記コマンドでインストール

sudo gem install berkshelf

時間がかかるけど待ちます。

これにて下準備完了。さてさてさっさとやりますか。

調理

作業用のディレクトリをworkspaceとします。

まずはChefのcookbookを手に入れましょう

workspace/Berksfile

を作成し、下記を記述

site :opscode

cookbook 'mysql'
cookbook 'php'
cookbook 'apache2'

cookbookをopscodeから取得しちゃいましょう!

workspaceにて下記コマンドを実行

berks vendor cookbooks

これでworkspace/cookbooksに必要なcookbookが揃ったはずです。

今回PHPなのでローカルで編集したものをすぐに見たいので、

apacheの設定だけVirtualBoxとの共有ディレクトリに変更しておきます。

ローカルに workspace/webapp ディレクトリを作成。

確認用index.phpの作成

echo '<?php echo "Hello LAMP";?>' > webapp/index.php

さて、お次はVagrantの設定

vagrant init ubuntu/trusty64

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 = "ubuntu/trusty64"
  config.vm.network "private_network", ip: "192.168.33.10"
  config.vm.provider "virtualbox" do |vb|
      vb.customize ["modifyvm", :id, "--memory", "2048"]
  end  
  config.vm.provision "chef_solo" do |chef|
    chef.cookbooks_path = "./cookbooks"
    chef.add_recipe "php"
    chef.add_recipe "php::module_mysql"
    chef.add_recipe "apache2"
    chef.add_recipe "apache2::mod_php5"
    chef.add_recipe "mysql::server"
    chef.add_recipe "mysql::client"
    chef.json = {
          apache: {
                      docroot_dir:  "/vagrant/webapp",
                      default_site_name: "default",
                      default_site_enabled: true
                  }
          }
  end
end

起動!

vagrant up

さてさてあとはカプメンでも食べながら待ちますか。

。。。

完了したらローカルからアクセスできる様にファイヤーウォールを切ってしまって

vagrant ssh
sudo ufw disable

http://192.168.33.10/index.php

にアクセス。

LAMP環境完成!

ディレクトリは下記の様になってるはずです。

workspace/cookbooks : Chefのクックブックたち

workspace/webapp/ : Document root

workspace/Vagrantfile : Vagrantの設定ファイル

workspace/Berksfile : Berkshelfの設定ファイル

あとはwebapp上でアプリをいじいじしていくだけですなー。

作業自体は10分ぐらいかな。

(2014/12/11 指摘があったchefのattributeの件修正しました!)