• Save
もう XAMPP / MAMP はいらない!
Vagrant で作る PHP 開発環境
Upcoming SlideShare
Loading in...5
×
 

Like this? Share it with your network

Share

もう XAMPP / MAMP はいらない!
Vagrant で作る PHP 開発環境

on

  • 60,161 views

http://www.1x1.jp/blog/2013/09/php-enviroment-with-vagrant.html

http://www.1x1.jp/blog/2013/09/php-enviroment-with-vagrant.html

Statistics

Views

Total Views
60,161
Views on SlideShare
50,175
Embed Views
9,986

Actions

Likes
240
Downloads
7
Comments
3

29 Embeds 9,986

http://www.1x1.jp 9057
https://twitter.com 432
http://baser-for-wper.tecking.org 242
http://cptl.corp.yahoo.co.jp 66
http://sinka.gob.jp 61
http://poohsaku.wkeya.com 53
http://tweetedtimes.com 21
http://seoblog.tea-server.com 18
https://www.chatwork.com 6
http://plus.url.google.com 4
http://ab-sn5.tumblr.com 3
http://translate.googleusercontent.com 3
http://wiki.onakasuita.org 2
https://www.facebook.com 2
http://b.hatena.ne.jp 2
https://m.facebook.com&_=1388716784955 HTTP 1
https://m.facebook.com&_=1388716969468 HTTP 1
https://m.facebook.com&_=1388724305633 HTTP 1
https://m.facebook.com&_=1388484729878 HTTP 1
https://www.google.co.jp 1
https://m.facebook.com&_=1388306371632 HTTP 1
https://m.facebook.com&_=1388282330590 HTTP 1
https://m.facebook.com&_=1388282738113 HTTP 1
https://m.facebook.com&_=1388277918687 HTTP 1
https://m.facebook.com&_=1388263530709 HTTP 1
http://kudox.jp 1
http://webcache.googleusercontent.com 1
http://cloud.feedly.com 1
http://cache.yahoofs.jp 1
More...

Accessibility

Categories

Upload Details

Uploaded via as Adobe PDF

Usage Rights

© All Rights Reserved

Report content

Flagged as inappropriate Flag as inappropriate
Flag as inappropriate

Select your reason for flagging this presentation as inappropriate.

Cancel
  • Full Name Full Name Comment goes here.
    Are you sure you want to
    Your message goes here
    Processing…
  • とても参考になりました。今までテストサーバーとして、VPS借りてたのが馬鹿らしくなりました。
    Are you sure you want to
    Your message goes here
    Processing…
  • メモリはVagrantfileにて自由に設定できます。
    もしくはAWS使えば自分のPCのメモリ使わずに使えます。
    (ネットワーク接続必須ですが)
    Are you sure you want to
    Your message goes here
    Processing…
  • 仮想サーバかあ。メモリはどの程度使うんだろ。
    軽かったら入れたいな。
    Are you sure you want to
    Your message goes here
    Processing…
Post Comment
Edit your comment

もう XAMPP / MAMP はいらない!
Vagrant で作る PHP 開発環境 Presentation Transcript

  • 1. 2013/07/17 shin1x1 第7回 関西PHP勉強会 もう XAMPP / MAMP はいらない! Vagrant で作る PHP 開発環境
  • 2. @shin1x1 (c) 2013 Masashi Shinbara @shin1x1 Shin x blog http://www.1x1.jp/blog/ PHP / DevOps / AWS / Varnish / Fabric / Chef
  • 3. Agenda (c) 2013 Masashi Shinbara @shin1x1 • Vagrant とは • Vagrant で作るPHP 開発環境 • Vagrant Tips
  • 4. Vagrant (c) 2013 Masashi Shinbara @shin1x1
  • 5. (c) 2013 Masashi Shinbara @shin1x1 Web開発あるある
  • 6. エンジニアSさん (c) 2013 Masashi Shinbara @shin1x1 • Macbook Air で開発 • Apache / PHP / DB • 複数案件を一台で
  • 7. エンジニアSさん (c) 2013 Masashi Shinbara @shin1x1 1162 <VirtualHost *:80> 1163 ServerName candycane.local 1164 DocumentRoot "/Users/shin/sandbox/demo/candycane/app/webroot" 1165 </VirtualHost> 1166 1167 <VirtualHost *:80> 1168 ServerName demo.local 1169 DocumentRoot "/Users/shin/sandbox/demo/20130601_phpcon" 1170 php_value vld.active 1 1171 </VirtualHost> 1172 1173 <VirtualHost *:80> 1174 ServerName project1.local 1175 DocumentRoot "/Users/shin/project1/app/webroot" 1176 </VirtualHost> 1177 1178 <VirtualHost *:80> 1179 ServerName project2.local 1180 DocumentRoot "/Users/shin/project2/app/webroot" 1181 </VirtualHost>
  • 8. エンジニアSさん (c) 2013 Masashi Shinbara @shin1x1 1162 <VirtualHost *:80> 1163 ServerName candycane.local 1164 DocumentRoot "/Users/shin/sandbox/demo/candycane/app/webroot" 1165 </VirtualHost> 1166 1167 <VirtualHost *:80> 1168 ServerName demo.local 1169 DocumentRoot "/Users/shin/sandbox/demo/20130601_phpcon" 1170 php_value vld.active 1 1171 </VirtualHost> 1172 1173 <VirtualHost *:80> 1174 ServerName project1.local 1175 DocumentRoot "/Users/shin/project1/app/webroot" 1176 </VirtualHost> 1177 1178 <VirtualHost *:80> 1179 ServerName project2.local 1180 DocumentRoot "/Users/shin/project2/app/webroot" 1181 </VirtualHost> 溢れる VirtualHost
  • 9. とある開発チームA (c) 2013 Masashi Shinbara @shin1x1 • チームで開発 • Macbook / Windows で開発 • Apache / PHP / DB
  • 10. とある開発チームA (c) 2013 Masashi Shinbara @shin1x1 あれ?動かない。 何か変なコード書いた? こっちは動いてるよ。 拡張追加しないとダメだよ。
  • 11. とある開発チームA (c) 2013 Masashi Shinbara @shin1x1 あれ?動かない。 何か変なコード書いた? こっちは動いてるよ。 拡張追加しないとダメだよ。 俺の環境では動く
  • 12. WebデザイナーBさん (c) 2013 Masashi Shinbara @shin1x1 • WordPressのデザイン • XAMPPをインストール • でもなんだか動かない。。。
  • 13. (c) 2013 Masashi Shinbara @shin1x1 WebデザイナーBさん
  • 14. (c) 2013 Masashi Shinbara @shin1x1 WebデザイナーBさん Port 80 は 俺のモノ
  • 15. そんなあなたに (c) 2013 Masashi Shinbara @shin1x1
  • 16. Vagrantなら (c) 2013 Masashi Shinbara @shin1x1 • プロジェクト毎に独立した環境を構築 • 他人と全く同じ環境を共有 • ホストPCとは分離された環境を構築
  • 17. Vagrantの構成 (c) 2013 Masashi Shinbara @shin1x1 •Vagrant •仮想サーバ [ Provider ] (VirtualBox, VMWare, AWS等) •プロビジョニング [ Provisioning ] (Chef, Puppet, ShellScript等)
  • 18. (c) 2013 Masashi Shinbara @shin1x1 VM起動 プロビジョニング実行 $ vagrant up Vagrantの構成
  • 19. (c) 2013 Masashi Shinbara @shin1x1 VM起動 プロビジョニング実行 $ vagrant up Vagrantの構成
  • 20. (c) 2013 Masashi Shinbara @shin1x1 VM起動 プロビジョニング実行 $ vagrant up Vagrantの構成
  • 21. Vagrant 覚えておきたい用語 (c) 2013 Masashi Shinbara @shin1x1 •Boxファイル => 仮想サーバイメージファイル •Vagrantfile => 仮想サーバ構築設定 •vagrantコマンド => 全ての操作はこのコマンドで
  • 22. Vagrant 主なコマンド (c) 2013 Masashi Shinbara @shin1x1 • Vagrantfile作成 $ vagrant init [boxファイル名] [boxファイルURL] • 仮想サーバ起動 $ vagrant up • 仮想サーバへ SSH ログイン $ vagrant ssh
  • 23. vagrant 主なコマンド (c) 2013 Masashi Shinbara @shin1x1 • 仮想サーバシャットダウン $ vagrant halt • 仮想サーバサスペンド $ vagrant suspend • 仮想サーバシャットダウン+破棄 $ vagrant destroy
  • 24. (c) 2013 Masashi Shinbara @shin1x1 Vagrantで作る PHP開発環境
  • 25. サンプルプロジェクト (c) 2013 Masashi Shinbara @shin1x1 • CakePHPプロジェクト • OSX 上の Vim で開発 • Vagrant + VirtualBox + ShellScript
  • 26. (c) 2013 Masashi Shinbara @shin1x1 ファイル構成 $ tree /path/to/project . !"" src #   !"" CONTRIBUTING.md #   !"" README.md #   !"" app #   !"" build.properties #   !"" build.xml #   !"" index.php #   !"" lib #   !"" plugins #   $"" vendors $"" vagrant    !"" .gitignore    !"" .vagrant    $"" Vagrantfile アプリケーション Vagrant Git で管理
  • 27. (c) 2013 Masashi Shinbara @shin1x1 $ cd vagrant $ cat .gitignore .vagrant •.vagrant/ は仮想サーバ固有の id が保存されているので git で 管理しない .gitignore
  • 28. (c) 2013 Masashi Shinbara @shin1x1 # -*- mode: ruby -*- # vi: set ft=ruby : Vagrant.configure("2") do |config| config.vm.box = "centos64_ja" config.vm.network :private_network, ip: "192.168.33.100" config.vm.synced_folder "../src", "/src", :create => true, :owner=> 'vagrant', :group=>'vagrant', :extra => 'dmode=777,fmode=666' $ vim Vagrantfile Vagrantfile
  • 29. (c) 2013 Masashi Shinbara @shin1x1 •ホストPCのディレクトリと 仮想サーバのディレクトリを同期 •開発はホストPCで、 実行は仮想サーバで •PhpStormやEclipseで開発可能 synced_folder
  • 30. (c) 2013 Masashi Shinbara @shin1x1 config.vm.synced_folder "../src", "/src", :create => true, :owner=> 'vagrant', :group=>'vagrant', :extra => 'dmode=777,fmode=666' •ホストPC: ../src と 仮想サーバ: /src を共有 •仮想サーバに /src が無ければ自動生成 •/src は vagrant を owner / group に •/src 以下のパーミッションは ディレクトリが777、ファイルが666 synced_folder - Vagrantfile
  • 31. synced_folder 注意点 (c) 2013 Masashi Shinbara @shin1x1 •仮想サーバでの権限変更が反映されない •ホストPCでファイルが多いディレクトリは避ける •仮想サーバでのディスクアクセスは遅い => アプリケーションで大量のディスクIOが 発生する場合は synced_folder 以外の 領域を利用する
  • 32. (c) 2013 Masashi Shinbara @shin1x1 provision = <<-"EOS" sudo yum -y update rpm -ivh http://ftp.riken.jp/Linux/fedora/epel/6/i386/epel-release-6-8.noarch.rpm rpm -ivh http://dl.iuscommunity.org/pub/ius/stable/CentOS/6/x86_64/ius- release-1.0-11.ius.centos6.noarch.rpm yum -y install php54 php54-pdo php54-cli php54-pgsql php54-mbstring php54-mcrypt php54-common php54-pecl-memcache php54-gd php54-xml php54-devel php54-pecl- xdebug php54-pecl-apc yum -y install httpd echo "date.timezone = Asia/Tokyo" >> /etc/php.ini echo "<VirtualHost *:80>" >> /etc/httpd/conf/httpd.conf echo " DocumentRoot /src/app/webroot" >> /etc/httpd/conf/httpd.conf echo "</VirtualHost>" >> /etc/httpd/conf/httpd.conf /sbin/service httpd start /sbin/chkconfig httpd on EOS config.vm.provision :shell, :inline => provision end Vagrantfile synced_folder を document_root に指定
  • 33. 仮想サーバ起動 (c) 2013 Masashi Shinbara @shin1x1 $ vagrant up $ open http://192.168.33.100/
  • 34. (c) 2013 Masashi Shinbara @shin1x1 $ vim app/Config/bootstrap.php $ open http://192.168.33.100/ ホストPCでソース変更
  • 35. (c) 2013 Masashi Shinbara @shin1x1 <?php phpinfo(); $ cd ../src/ $ vim app/webroot/info.php ホストPCでファイル追加 $ open http://192.168.33.100/info.php
  • 36. 本格的な開発環境へ (c) 2013 Masashi Shinbara @shin1x1 •複雑なプロビジョニングは Chef や Puppet で •できるだけプロビジョニングで自動化 => DB構築、初期データ投入、設定ファイル変更 •プロファイリングツールや phpMyAdmin など の管理ツールも一緒に入れると便利
  • 37. (c) 2013 Masashi Shinbara @shin1x1 $ git clone http://extemple.com/project $ cd project/vagrant $ vagrant up •環境構築はこれだけ! Vagrantfile が git にあれば
  • 38. (c) 2013 Masashi Shinbara @shin1x1 Vagrant Tips
  • 39. (c) 2013 Masashi Shinbara @shin1x1 Configuration Version Vagrant::Config.run do |config| .... end • Version1 Vagrant.configure("2") do |config| Vagrant.configure("1") do |config| .... end • Version2 •blog等を見る時は、設定バージョンに注意。 バージョンが異なると動作しないことも。
  • 40. Sahara Plugin (c) 2013 Masashi Shinbara @shin1x1 • Vagrant Plugin https://github.com/jedi4ever/sahara • 仮想サーバの状態を DB の ROLLBACK のように戻せる
  • 41. Sahara Plugin (c) 2013 Masashi Shinbara @shin1x1 $ vagrant plugin install sahara • インストール
  • 42. Sahara Plugin (c) 2013 Masashi Shinbara @shin1x1 $ vagrant sandbox on • sandbox モード開始 = BEGIN; $ vagrant sandbox rollback • 元に戻す = ROLLBACK; $ vagrant sandbox commit • 変更確定 = COMMIT; $ vagrant sandbox off • sandbox モード終了
  • 43. 参考1 (c) 2013 Masashi Shinbara @shin1x1 http://docs.vagrantup.com/v2/
  • 44. 参考2 (c) 2013 Masashi Shinbara @shin1x1 http://www.amazon.co.jp/dp/1449335837
  • 45. 参考2 (c) 2013 Masashi Shinbara @shin1x1 http://www.amazon.co.jp/dp/1449335837
  • 46. Summary (c) 2013 Masashi Shinbara @shin1x1 • プロジェクト毎に独立した環境を構築 => プロジェクト毎にVagrantfile • 他人と全く同じ環境を共有 => Boxファイル、Vagrantfileを共有 • ホストPCとは分離された環境を構築 => 開発はホストPC、実行は仮想マシン
  • 47. @shin1x1 (c) 2013 Masashi Shinbara @shin1x1