Diese Präsentation wurde erfolgreich gemeldet.
Wir verwenden Ihre LinkedIn Profilangaben und Informationen zu Ihren Aktivitäten, um Anzeigen zu personalisieren und Ihnen relevantere Inhalte anzuzeigen. Sie können Ihre Anzeigeneinstellungen jederzeit ändern.
2013/07/17 shin1x1
第7回 関西PHP勉強会
もう XAMPP / MAMP はいらない!
Vagrant で作る
PHP 開発環境
@shin1x1
(c) 2013 Masashi Shinbara @shin1x1
Shin x blog
http://www.1x1.jp/blog/
PHP / DevOps / AWS /
Varnish / Fabric / Ch...
Agenda
(c) 2013 Masashi Shinbara @shin1x1
• Vagrant とは
• Vagrant で作るPHP 開発環境
• Vagrant Tips
Vagrant
(c) 2013 Masashi Shinbara @shin1x1
(c) 2013 Masashi Shinbara @shin1x1
Web開発あるある
エンジニアSさん
(c) 2013 Masashi Shinbara @shin1x1
• Macbook Air で開発
• Apache / PHP / DB
• 複数案件を一台で
エンジニアSさん
(c) 2013 Masashi Shinbara @shin1x1
1162 <VirtualHost *:80>
1163 ServerName candycane.local
1164 DocumentRoot "/Us...
エンジニアSさん
(c) 2013 Masashi Shinbara @shin1x1
1162 <VirtualHost *:80>
1163 ServerName candycane.local
1164 DocumentRoot "/Us...
とある開発チームA
(c) 2013 Masashi Shinbara @shin1x1
• チームで開発
• Macbook / Windows で開発
• Apache / PHP / DB
とある開発チームA
(c) 2013 Masashi Shinbara @shin1x1
あれ?動かない。
何か変なコード書いた?
こっちは動いてるよ。
拡張追加しないとダメだよ。
とある開発チームA
(c) 2013 Masashi Shinbara @shin1x1
あれ?動かない。
何か変なコード書いた?
こっちは動いてるよ。
拡張追加しないとダメだよ。
俺の環境では動く
WebデザイナーBさん
(c) 2013 Masashi Shinbara @shin1x1
• WordPressのデザイン
• XAMPPをインストール
• でもなんだか動かない。。。
(c) 2013 Masashi Shinbara @shin1x1
WebデザイナーBさん
(c) 2013 Masashi Shinbara @shin1x1
WebデザイナーBさん
Port 80 は
俺のモノ
そんなあなたに
(c) 2013 Masashi Shinbara @shin1x1
Vagrantなら
(c) 2013 Masashi Shinbara @shin1x1
• プロジェクト毎に独立した環境を構築
• 他人と全く同じ環境を共有
• ホストPCとは分離された環境を構築
Vagrantの構成
(c) 2013 Masashi Shinbara @shin1x1
•Vagrant
•仮想サーバ [ Provider ]
(VirtualBox, VMWare, AWS等)
•プロビジョニング [ Provisio...
(c) 2013 Masashi Shinbara @shin1x1
VM起動
プロビジョニング実行
$ vagrant up
Vagrantの構成
(c) 2013 Masashi Shinbara @shin1x1
VM起動
プロビジョニング実行
$ vagrant up
Vagrantの構成
(c) 2013 Masashi Shinbara @shin1x1
VM起動
プロビジョニング実行
$ vagrant up
Vagrantの構成
Vagrant 覚えておきたい用語
(c) 2013 Masashi Shinbara @shin1x1
•Boxファイル
=> 仮想サーバイメージファイル
•Vagrantfile
=> 仮想サーバ構築設定
•vagrantコマンド
=> 全て...
Vagrant 主なコマンド
(c) 2013 Masashi Shinbara @shin1x1
• Vagrantfile作成
$ vagrant init [boxファイル名] [boxファイルURL]
• 仮想サーバ起動
$ vagran...
vagrant 主なコマンド
(c) 2013 Masashi Shinbara @shin1x1
• 仮想サーバシャットダウン
$ vagrant halt
• 仮想サーバサスペンド
$ vagrant suspend
• 仮想サーバシャット...
(c) 2013 Masashi Shinbara @shin1x1
Vagrantで作る
PHP開発環境
サンプルプロジェクト
(c) 2013 Masashi Shinbara @shin1x1
• CakePHPプロジェクト
• OSX 上の Vim で開発
• Vagrant + VirtualBox
+ ShellScript
(c) 2013 Masashi Shinbara @shin1x1
ファイル構成
$ tree /path/to/project
.
!"" src
#   !"" CONTRIBUTING.md
#   !"" README.md
#   ...
(c) 2013 Masashi Shinbara @shin1x1
$ cd vagrant
$ cat .gitignore
.vagrant
•.vagrant/ は仮想サーバ固有の
id が保存されているので git で
管理しない
....
(c) 2013 Masashi Shinbara @shin1x1
# -*- mode: ruby -*-
# vi: set ft=ruby :
Vagrant.configure("2") do |config|
config.vm.b...
(c) 2013 Masashi Shinbara @shin1x1
•ホストPCのディレクトリと
仮想サーバのディレクトリを同期
•開発はホストPCで、
実行は仮想サーバで
•PhpStormやEclipseで開発可能
synced_fold...
(c) 2013 Masashi Shinbara @shin1x1
config.vm.synced_folder "../src", "/src", :create =>
true, :owner=> 'vagrant', :group=>...
synced_folder 注意点
(c) 2013 Masashi Shinbara @shin1x1
•仮想サーバでの権限変更が反映されない
•ホストPCでファイルが多いディレクトリは避ける
•仮想サーバでのディスクアクセスは遅い
=> ア...
(c) 2013 Masashi Shinbara @shin1x1
provision = <<-"EOS"
sudo yum -y update
rpm -ivh http://ftp.riken.jp/Linux/fedora/epel/...
仮想サーバ起動
(c) 2013 Masashi Shinbara @shin1x1
$ vagrant up
$ open http://192.168.33.100/
(c) 2013 Masashi Shinbara @shin1x1
$ vim app/Config/bootstrap.php
$ open http://192.168.33.100/
ホストPCでソース変更
(c) 2013 Masashi Shinbara @shin1x1
<?php
phpinfo();
$ cd ../src/
$ vim app/webroot/info.php
ホストPCでファイル追加
$ open http://192...
本格的な開発環境へ
(c) 2013 Masashi Shinbara @shin1x1
•複雑なプロビジョニングは Chef や Puppet で
•できるだけプロビジョニングで自動化
=> DB構築、初期データ投入、設定ファイル変更
•プロ...
(c) 2013 Masashi Shinbara @shin1x1
$ git clone http://extemple.com/project
$ cd project/vagrant
$ vagrant up
•環境構築はこれだけ!
V...
(c) 2013 Masashi Shinbara @shin1x1
Vagrant Tips
(c) 2013 Masashi Shinbara @shin1x1
Configuration Version
Vagrant::Config.run do |config|
....
end
• Version1
Vagrant.configur...
Sahara Plugin
(c) 2013 Masashi Shinbara @shin1x1
• Vagrant Plugin
https://github.com/jedi4ever/sahara
• 仮想サーバの状態を DB の
ROL...
Sahara Plugin
(c) 2013 Masashi Shinbara @shin1x1
$ vagrant plugin install sahara
• インストール
Sahara Plugin
(c) 2013 Masashi Shinbara @shin1x1
$ vagrant sandbox on
• sandbox モード開始 = BEGIN;
$ vagrant sandbox rollback
...
参考1
(c) 2013 Masashi Shinbara @shin1x1
http://docs.vagrantup.com/v2/
参考2
(c) 2013 Masashi Shinbara @shin1x1
http://www.amazon.co.jp/dp/1449335837
参考2
(c) 2013 Masashi Shinbara @shin1x1
http://www.amazon.co.jp/dp/1449335837
Summary
(c) 2013 Masashi Shinbara @shin1x1
• プロジェクト毎に独立した環境を構築
=> プロジェクト毎にVagrantfile
• 他人と全く同じ環境を共有
=> Boxファイル、Vagrantfileを...
@shin1x1
(c) 2013 Masashi Shinbara @shin1x1
Nächste SlideShare
Wird geladen in …5
×

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

79.070 Aufrufe

Veröffentlicht am

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

Veröffentlicht in: Technologie
  • Sex in your area is here: ❶❶❶ http://bit.ly/2F7hN3u ❶❶❶
       Antworten 
    Sind Sie sicher, dass Sie …  Ja  Nein
    Ihre Nachricht erscheint hier
  • Dating direct: ♥♥♥ http://bit.ly/2F7hN3u ♥♥♥
       Antworten 
    Sind Sie sicher, dass Sie …  Ja  Nein
    Ihre Nachricht erscheint hier
  • Sex in your area is here: ♥♥♥ http://bit.ly/2LaDVgK ♥♥♥
       Antworten 
    Sind Sie sicher, dass Sie …  Ja  Nein
    Ihre Nachricht erscheint hier
  • Dating for everyone is here: ❤❤❤ http://bit.ly/2LaDVgK ❤❤❤
       Antworten 
    Sind Sie sicher, dass Sie …  Ja  Nein
    Ihre Nachricht erscheint hier
  • とても参考になりました。今までテストサーバーとして、VPS借りてたのが馬鹿らしくなりました。
       Antworten 
    Sind Sie sicher, dass Sie …  Ja  Nein
    Ihre Nachricht erscheint hier

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

  1. 1. 2013/07/17 shin1x1 第7回 関西PHP勉強会 もう XAMPP / MAMP はいらない! Vagrant で作る PHP 開発環境
  2. 2. @shin1x1 (c) 2013 Masashi Shinbara @shin1x1 Shin x blog http://www.1x1.jp/blog/ PHP / DevOps / AWS / Varnish / Fabric / Chef
  3. 3. Agenda (c) 2013 Masashi Shinbara @shin1x1 • Vagrant とは • Vagrant で作るPHP 開発環境 • Vagrant Tips
  4. 4. Vagrant (c) 2013 Masashi Shinbara @shin1x1
  5. 5. (c) 2013 Masashi Shinbara @shin1x1 Web開発あるある
  6. 6. エンジニアSさん (c) 2013 Masashi Shinbara @shin1x1 • Macbook Air で開発 • Apache / PHP / DB • 複数案件を一台で
  7. 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. 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. 9. とある開発チームA (c) 2013 Masashi Shinbara @shin1x1 • チームで開発 • Macbook / Windows で開発 • Apache / PHP / DB
  10. 10. とある開発チームA (c) 2013 Masashi Shinbara @shin1x1 あれ?動かない。 何か変なコード書いた? こっちは動いてるよ。 拡張追加しないとダメだよ。
  11. 11. とある開発チームA (c) 2013 Masashi Shinbara @shin1x1 あれ?動かない。 何か変なコード書いた? こっちは動いてるよ。 拡張追加しないとダメだよ。 俺の環境では動く
  12. 12. WebデザイナーBさん (c) 2013 Masashi Shinbara @shin1x1 • WordPressのデザイン • XAMPPをインストール • でもなんだか動かない。。。
  13. 13. (c) 2013 Masashi Shinbara @shin1x1 WebデザイナーBさん
  14. 14. (c) 2013 Masashi Shinbara @shin1x1 WebデザイナーBさん Port 80 は 俺のモノ
  15. 15. そんなあなたに (c) 2013 Masashi Shinbara @shin1x1
  16. 16. Vagrantなら (c) 2013 Masashi Shinbara @shin1x1 • プロジェクト毎に独立した環境を構築 • 他人と全く同じ環境を共有 • ホストPCとは分離された環境を構築
  17. 17. Vagrantの構成 (c) 2013 Masashi Shinbara @shin1x1 •Vagrant •仮想サーバ [ Provider ] (VirtualBox, VMWare, AWS等) •プロビジョニング [ Provisioning ] (Chef, Puppet, ShellScript等)
  18. 18. (c) 2013 Masashi Shinbara @shin1x1 VM起動 プロビジョニング実行 $ vagrant up Vagrantの構成
  19. 19. (c) 2013 Masashi Shinbara @shin1x1 VM起動 プロビジョニング実行 $ vagrant up Vagrantの構成
  20. 20. (c) 2013 Masashi Shinbara @shin1x1 VM起動 プロビジョニング実行 $ vagrant up Vagrantの構成
  21. 21. Vagrant 覚えておきたい用語 (c) 2013 Masashi Shinbara @shin1x1 •Boxファイル => 仮想サーバイメージファイル •Vagrantfile => 仮想サーバ構築設定 •vagrantコマンド => 全ての操作はこのコマンドで
  22. 22. Vagrant 主なコマンド (c) 2013 Masashi Shinbara @shin1x1 • Vagrantfile作成 $ vagrant init [boxファイル名] [boxファイルURL] • 仮想サーバ起動 $ vagrant up • 仮想サーバへ SSH ログイン $ vagrant ssh
  23. 23. vagrant 主なコマンド (c) 2013 Masashi Shinbara @shin1x1 • 仮想サーバシャットダウン $ vagrant halt • 仮想サーバサスペンド $ vagrant suspend • 仮想サーバシャットダウン+破棄 $ vagrant destroy
  24. 24. (c) 2013 Masashi Shinbara @shin1x1 Vagrantで作る PHP開発環境
  25. 25. サンプルプロジェクト (c) 2013 Masashi Shinbara @shin1x1 • CakePHPプロジェクト • OSX 上の Vim で開発 • Vagrant + VirtualBox + ShellScript
  26. 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. 27. (c) 2013 Masashi Shinbara @shin1x1 $ cd vagrant $ cat .gitignore .vagrant •.vagrant/ は仮想サーバ固有の id が保存されているので git で 管理しない .gitignore
  28. 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. 29. (c) 2013 Masashi Shinbara @shin1x1 •ホストPCのディレクトリと 仮想サーバのディレクトリを同期 •開発はホストPCで、 実行は仮想サーバで •PhpStormやEclipseで開発可能 synced_folder
  30. 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. 31. synced_folder 注意点 (c) 2013 Masashi Shinbara @shin1x1 •仮想サーバでの権限変更が反映されない •ホストPCでファイルが多いディレクトリは避ける •仮想サーバでのディスクアクセスは遅い => アプリケーションで大量のディスクIOが 発生する場合は synced_folder 以外の 領域を利用する
  32. 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. 33. 仮想サーバ起動 (c) 2013 Masashi Shinbara @shin1x1 $ vagrant up $ open http://192.168.33.100/
  34. 34. (c) 2013 Masashi Shinbara @shin1x1 $ vim app/Config/bootstrap.php $ open http://192.168.33.100/ ホストPCでソース変更
  35. 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. 36. 本格的な開発環境へ (c) 2013 Masashi Shinbara @shin1x1 •複雑なプロビジョニングは Chef や Puppet で •できるだけプロビジョニングで自動化 => DB構築、初期データ投入、設定ファイル変更 •プロファイリングツールや phpMyAdmin など の管理ツールも一緒に入れると便利
  37. 37. (c) 2013 Masashi Shinbara @shin1x1 $ git clone http://extemple.com/project $ cd project/vagrant $ vagrant up •環境構築はこれだけ! Vagrantfile が git にあれば
  38. 38. (c) 2013 Masashi Shinbara @shin1x1 Vagrant Tips
  39. 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. 40. Sahara Plugin (c) 2013 Masashi Shinbara @shin1x1 • Vagrant Plugin https://github.com/jedi4ever/sahara • 仮想サーバの状態を DB の ROLLBACK のように戻せる
  41. 41. Sahara Plugin (c) 2013 Masashi Shinbara @shin1x1 $ vagrant plugin install sahara • インストール
  42. 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. 43. 参考1 (c) 2013 Masashi Shinbara @shin1x1 http://docs.vagrantup.com/v2/
  44. 44. 参考2 (c) 2013 Masashi Shinbara @shin1x1 http://www.amazon.co.jp/dp/1449335837
  45. 45. 参考2 (c) 2013 Masashi Shinbara @shin1x1 http://www.amazon.co.jp/dp/1449335837
  46. 46. Summary (c) 2013 Masashi Shinbara @shin1x1 • プロジェクト毎に独立した環境を構築 => プロジェクト毎にVagrantfile • 他人と全く同じ環境を共有 => Boxファイル、Vagrantfileを共有 • ホストPCとは分離された環境を構築 => 開発はホストPC、実行は仮想マシン
  47. 47. @shin1x1 (c) 2013 Masashi Shinbara @shin1x1

×