Mac上にVirtualBoxでLAMP環境構築
ふとWordpressで遊んでみたいなと思いMac上にUbuntuのLAMP環境構築
今回の目的はずばり
[ Macローカル上にて編集したものをすぐに見れる環境構築 ]
下準備
Virtual Box
公式サイトからインストールして言われるがままにインストール
Vagrant
おなじみ、仮想環境管理用の最強ツールです。
これもダウンロードして言われるがままにインストール
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の件修正しました!)