Dive into the Cloud with our buddy,
lovely PHP!
関西PHP勉強会 #9 in JAWS FESTA Kansai 2013
September 26th, 2013
Sotaro OMURA
@o...
#jawsfesta
About Me
#jawsfesta
About Me
•Sotaro OMURA
#jawsfesta
About Me
•Sotaro OMURA
•株式会社タップ
#jawsfesta
About Me
•Sotaro OMURA
•株式会社タップ
•PHP歴は12年ほど(最近はFuelPHPとか)
#jawsfesta
About Me
•Sotaro OMURA
•株式会社タップ
•PHP歴は12年ほど(最近はFuelPHPとか)
•love noodles
#jawsfesta
About Me
•Sotaro OMURA
•株式会社タップ
•PHP歴は12年ほど(最近はFuelPHPとか)
•love noodles
•omoon.org
#jawsfesta
About Me
•Sotaro OMURA
•株式会社タップ
•PHP歴は12年ほど(最近はFuelPHPとか)
•love noodles
•omoon.org
•@omoon
#jawsfesta
About Me
•Sotaro OMURA
•株式会社タップ
•PHP歴は12年ほど(最近はFuelPHPとか)
•love noodles
•omoon.org
•@omoon
#jawsfesta
京セラドームと聞いて
#jawsfesta
#jawsfesta
安心しました
#jawsfesta
今日話すこと
#jawsfesta
今日話すこと
•クラウドにまつわる言葉の整理
#jawsfesta
今日話すこと
•クラウドにまつわる言葉の整理
•代表的クラウド紹介
#jawsfesta
今日話すこと
•クラウドにまつわる言葉の整理
•代表的クラウド紹介
•実際にクラウドでPHPアプリケーションを公開する場合の具体的手順
#jawsfesta
ところで
#jawsfesta
About Me
#jawsfesta
About Me
#jawsfesta
#jawsfesta
#jawsfesta
About Me
#jawsfesta
About Me
#jawsfesta
#jawsfesta
クラウドとは
#jawsfesta
クラウド3つの分類
#jawsfesta
クラウド3つの分類
•IaaS (Infrastructure as a Service)
#jawsfesta
クラウド3つの分類
•IaaS (Infrastructure as a Service)
•PaaS (Platform as a Service)
#jawsfesta
クラウド3つの分類
•IaaS (Infrastructure as a Service)
•PaaS (Platform as a Service)
•SaaS (Software as a Service)
#jawsfesta
IaaS
#jawsfesta
IaaS(あいあーす)
#jawsfesta
IaaS(いあーす)
#jawsfesta
IaaS
#jawsfesta
IaaS
•Amazon Web Services(http://aws.amazon.com/jp/)
#jawsfesta
IaaS
•Amazon Web Services(http://aws.amazon.com/jp/)
•さくらのクラウド(http://cloud.sakura.ad.jp/)
#jawsfesta
IaaS
•Amazon Web Services(http://aws.amazon.com/jp/)
•さくらのクラウド(http://cloud.sakura.ad.jp/)
•NIFTY Cloud(http://...
#jawsfesta
IaaS
•Amazon Web Services(http://aws.amazon.com/jp/)
•さくらのクラウド(http://cloud.sakura.ad.jp/)
•NIFTY Cloud(http://...
#jawsfesta
PaaS
#jawsfesta
PaaS(ぱあす)
#jawsfesta
PaaS
#jawsfesta
PaaS
• AppFog(https://www.appfog.com)
#jawsfesta
PaaS
• AppFog(https://www.appfog.com)
• AWS Elastic Beanstalk(http://aws.amazon.com/jp/elasticbeanstalk/)
#jawsfesta
PaaS
• AppFog(https://www.appfog.com)
• AWS Elastic Beanstalk(http://aws.amazon.com/jp/elasticbeanstalk/)
• clo...
#jawsfesta
PaaS
• AppFog(https://www.appfog.com)
• AWS Elastic Beanstalk(http://aws.amazon.com/jp/elasticbeanstalk/)
• clo...
#jawsfesta
PaaS
• AppFog(https://www.appfog.com)
• AWS Elastic Beanstalk(http://aws.amazon.com/jp/elasticbeanstalk/)
• clo...
#jawsfesta
PaaS
• AppFog(https://www.appfog.com)
• AWS Elastic Beanstalk(http://aws.amazon.com/jp/elasticbeanstalk/)
• clo...
#jawsfesta
PaaS
• AppFog(https://www.appfog.com)
• AWS Elastic Beanstalk(http://aws.amazon.com/jp/elasticbeanstalk/)
• clo...
#jawsfesta
SaaS(さあす)
#jawsfesta
SaaS
#jawsfesta
SaaS
•Gmail
#jawsfesta
SaaS
•Gmail
•GitHub / Bitbucket
#jawsfesta
SaaS
•Gmail
•GitHub / Bitbucket
•サイボウズLive (https://live.cybozu.co.jp)
#jawsfesta
SaaS
•Gmail
•GitHub / Bitbucket
•サイボウズLive (https://live.cybozu.co.jp)
•SendGrid (http://sendgrid.com)
#jawsfesta
SaaS
•Gmail
•GitHub / Bitbucket
•サイボウズLive (https://live.cybozu.co.jp)
•SendGrid (http://sendgrid.com)
•New Rel...
#jawsfesta
本には書けなかったはなし
#jawsfesta
SaaS
#jawsfesta
SaaS
•API経由で利用
#jawsfesta
SaaS
•API経由で利用
•SDKが用意されている場合が結構ある
#jawsfesta
#jawsfesta
#jawsfesta
#jawsfesta
#jawsfesta
#jawsfesta
クラウド3つの分類のはなしでした
#jawsfesta
クラウド3つの分類のはなしでした
•IaaS (Infrastructure as a Service)
#jawsfesta
クラウド3つの分類のはなしでした
•IaaS (Infrastructure as a Service)
•PaaS (Platform as a Service)
#jawsfesta
クラウド3つの分類のはなしでした
•IaaS (Infrastructure as a Service)
•PaaS (Platform as a Service)
•SaaS (Software as a Service)
#jawsfesta
ええの?わるいの?
#jawsfesta
時と場合による
#jawsfesta
考えられるメリット(かなり大雑把)
#jawsfesta
考えられるメリット(かなり大雑把)
•すぐできる
#jawsfesta
考えられるメリット(かなり大雑把)
•すぐできる
•なかったことにできる
#jawsfesta
考えられるメリット(かなり大雑把)
•すぐできる
•なかったことにできる
•コスト
#jawsfesta
考えられるデメリット(かなり大雑把)
#jawsfesta
考えられるデメリット(かなり大雑把)
•最後のところで融通がきかない
#jawsfesta
考えられるデメリット(かなり大雑把)
•最後のところで融通がきかない
•英語!
#jawsfesta
考えられるデメリット(かなり大雑把)
•最後のところで融通がきかない
•英語!
•コスト
#jawsfesta
時と場合による
#jawsfesta
まずはためしてみましょう
#jawsfesta
#jawsfesta
#jawsfesta
About Me
#jawsfesta
About Me
#jawsfesta
ためしてみるにあたって
#jawsfesta
知っておくべき周辺技術
#jawsfesta
ssh
#jawsfesta
%	
  ssh	
  root@xxx.xxx.xxx.xxx	
  	
  	
  
root@xxx.xxx.xxx.xxx's	
  
password:
#jawsfesta
%	
  ssh	
  root@xxx.xxx.xxx.xxx	
  	
  	
  
root@xxx.xxx.xxx.xxx's	
  
password:
#jawsfesta
ssh
#jawsfesta
ssh
•パスワードは使わずに
#jawsfesta
ssh
•パスワードは使わずに
•鍵のペアをつくり
#jawsfesta
ssh
•パスワードは使わずに
•鍵のペアをつくり
•ひとつは秘密
#jawsfesta
ssh
•パスワードは使わずに
•鍵のペアをつくり
•ひとつは秘密
•ひとつは相手に渡す
#jawsfesta
ssh
•パスワードは使わずに
•鍵のペアをつくり
•ひとつは秘密
•ひとつは相手に渡す
•やりとりするときに照合して
#jawsfesta
ssh
•パスワードは使わずに
•鍵のペアをつくり
•ひとつは秘密
•ひとつは相手に渡す
•やりとりするときに照合して
•アクセスしていいよ∼
#jawsfesta
#jawsfesta
#jawsfesta
#jawsfesta
#jawsfesta
コードのデプロイの1案(AWS)
#jawsfesta
コードのデプロイの1案(AWS)
•Git のリモートリポジトリを作る
#jawsfesta
コードのデプロイの1案(AWS)
•Git のリモートリポジトリを作る
•サーバとの通信はキーペアを使ったssh
#jawsfesta
コードのデプロイの1案(AWS)
•Git のリモートリポジトリを作る
•サーバとの通信はキーペアを使ったssh
•サーバ側で git pull
#jawsfesta
コードのデプロイの1案(AWS)
•Git のリモートリポジトリを作る
•サーバとの通信はキーペアを使ったssh
•サーバ側で git pull
•composer install など
#jawsfesta
コードのデプロイの1案(Pagoda Box)
#jawsfesta
コードのデプロイの1案(Pagoda Box)
•Git のリモートリポジトリを作る
#jawsfesta
コードのデプロイの1案(Pagoda Box)
•Git のリモートリポジトリを作る
•手元に git clone
#jawsfesta
コードのデプロイの1案(Pagoda Box)
•Git のリモートリポジトリを作る
•手元に git clone
•Pagoda Boxのリポジトリを git remote add
#jawsfesta
コードのデプロイの1案(Pagoda Box)
•Git のリモートリポジトリを作る
•手元に git clone
•Pagoda Boxのリポジトリを git remote add
•サーバとの通信はキーペアを使ったssh
#jawsfesta
コードのデプロイの1案(Pagoda Box)
•Git のリモートリポジトリを作る
•手元に git clone
•Pagoda Boxのリポジトリを git remote add
•サーバとの通信はキーペアを使ったss...
#jawsfesta
コードのデプロイの1案(Pagoda Box)
•Git のリモートリポジトリを作る
•手元に git clone
•Pagoda Boxのリポジトリを git remote add
•サーバとの通信はキーペアを使ったss...
#jawsfesta
サンプルコード
#jawsfesta
サンプルコード
•https://github.com/PHP-Engineers-Training-Book/
php_mook_sample
#jawsfesta
サンプルコード
•https://github.com/PHP-Engineers-Training-Book/
php_mook_sample
•デモします
#jawsfesta
git clone
%	
  git	
  clone	
  git@github.com:PHP-­‐Engineers-­‐Training-­‐Book/php_mook_sample.git
Cloning	
  ...
#jawsfesta
#jawsfesta
▾	
  php_mook_sample/
	
  	
  ▾	
  bin/
	
  	
  	
  	
  	
  	
  phpmig*	
  -­‐>	
  /Users/omoon/Documents/php_m...
#jawsfesta
	
  1	
  {
	
  2	
  	
  	
  	
  	
  "require":	
  {
	
  3	
  	
  	
  	
  	
  	
  	
  	
  	
  "silex/silex":	
  ...
#jawsfesta
composer install (1)
$	
  curl	
  -­‐s	
  http://getcomposer.org/installer	
  |	
  php
#!/usr/bin/env	
  php
Al...
#jawsfesta
composer install (2)
%	
  php	
  composer.phar	
  install
Loading	
  composer	
  repositories	
  with	
  packag...
#jawsfesta	
  1	
  <?php
	
  2	
  require	
  __DIR__	
  .	
  '/../vendor/autoload.php';
	
  3	
  
	
  4	
  $app	
  =	
  ne...
#jawsfesta	
  1	
  <?php
	
  2	
  require	
  __DIR__	
  .	
  '/../vendor/autoload.php';
	
  3	
  
	
  4	
  $app	
  =	
  ne...
#jawsfesta
	
  1	
  <?php
	
  2	
  require	
  __DIR__	
  .	
  '/../vendor/autoload.php';
	
  3	
  
	
  4	
  $app	
  =	
  n...
#jawsfesta
10	
  //	
  データベース接続情報の読込
11	
  $env	
  =	
  getenv('APP_ENV')	
  ?:	
  'development';
12	
  $config	
  =	
  re...
#jawsfesta
17	
  //	
  トップ画面
18	
  $app-­‐>get('/',	
  function(SilexApplication	
  $app)	
  {
19	
  	
  	
  	
  	
  $post...
#jawsfesta
	
  1	
  {
	
  2	
  	
  	
  	
  	
  "require":	
  {
	
  3	
  	
  	
  	
  	
  	
  	
  	
  	
  "silex/silex":	
  ...
#jawsfesta
28	
  //	
  投稿処理
29	
  $app-­‐>post('/speak',	
  function(SilexApplication	
  $app)	
  {
30	
  	
  	
  	
  	
  ...
#jawsfesta
38	
  $app-­‐>run();
#jawsfesta
とにかくためしてみましょう
#jawsfesta
ありがとうございました
Upcoming SlideShare
Loading in...5
×

Dive into the Cloud with our buddy, lovely PHP!

9,512

Published on

PHP と一緒にクラウドの世界へ飛び込もう。
JAWS FESTA Kansai 2013 でのスライドです。

Published in: Technology, Business
0 Comments
2 Likes
Statistics
Notes
  • Be the first to comment

No Downloads
Views
Total Views
9,512
On Slideshare
0
From Embeds
0
Number of Embeds
1
Actions
Shares
0
Downloads
3
Comments
0
Likes
2
Embeds 0
No embeds

No notes for slide

Dive into the Cloud with our buddy, lovely PHP!

  1. 1. Dive into the Cloud with our buddy, lovely PHP! 関西PHP勉強会 #9 in JAWS FESTA Kansai 2013 September 26th, 2013 Sotaro OMURA @omoon
  2. 2. #jawsfesta About Me
  3. 3. #jawsfesta About Me •Sotaro OMURA
  4. 4. #jawsfesta About Me •Sotaro OMURA •株式会社タップ
  5. 5. #jawsfesta About Me •Sotaro OMURA •株式会社タップ •PHP歴は12年ほど(最近はFuelPHPとか)
  6. 6. #jawsfesta About Me •Sotaro OMURA •株式会社タップ •PHP歴は12年ほど(最近はFuelPHPとか) •love noodles
  7. 7. #jawsfesta About Me •Sotaro OMURA •株式会社タップ •PHP歴は12年ほど(最近はFuelPHPとか) •love noodles •omoon.org
  8. 8. #jawsfesta About Me •Sotaro OMURA •株式会社タップ •PHP歴は12年ほど(最近はFuelPHPとか) •love noodles •omoon.org •@omoon
  9. 9. #jawsfesta About Me •Sotaro OMURA •株式会社タップ •PHP歴は12年ほど(最近はFuelPHPとか) •love noodles •omoon.org •@omoon
  10. 10. #jawsfesta 京セラドームと聞いて
  11. 11. #jawsfesta
  12. 12. #jawsfesta 安心しました
  13. 13. #jawsfesta 今日話すこと
  14. 14. #jawsfesta 今日話すこと •クラウドにまつわる言葉の整理
  15. 15. #jawsfesta 今日話すこと •クラウドにまつわる言葉の整理 •代表的クラウド紹介
  16. 16. #jawsfesta 今日話すこと •クラウドにまつわる言葉の整理 •代表的クラウド紹介 •実際にクラウドでPHPアプリケーションを公開する場合の具体的手順
  17. 17. #jawsfesta ところで
  18. 18. #jawsfesta About Me
  19. 19. #jawsfesta About Me
  20. 20. #jawsfesta
  21. 21. #jawsfesta
  22. 22. #jawsfesta About Me
  23. 23. #jawsfesta About Me
  24. 24. #jawsfesta
  25. 25. #jawsfesta クラウドとは
  26. 26. #jawsfesta クラウド3つの分類
  27. 27. #jawsfesta クラウド3つの分類 •IaaS (Infrastructure as a Service)
  28. 28. #jawsfesta クラウド3つの分類 •IaaS (Infrastructure as a Service) •PaaS (Platform as a Service)
  29. 29. #jawsfesta クラウド3つの分類 •IaaS (Infrastructure as a Service) •PaaS (Platform as a Service) •SaaS (Software as a Service)
  30. 30. #jawsfesta IaaS
  31. 31. #jawsfesta IaaS(あいあーす)
  32. 32. #jawsfesta IaaS(いあーす)
  33. 33. #jawsfesta IaaS
  34. 34. #jawsfesta IaaS •Amazon Web Services(http://aws.amazon.com/jp/)
  35. 35. #jawsfesta IaaS •Amazon Web Services(http://aws.amazon.com/jp/) •さくらのクラウド(http://cloud.sakura.ad.jp/)
  36. 36. #jawsfesta IaaS •Amazon Web Services(http://aws.amazon.com/jp/) •さくらのクラウド(http://cloud.sakura.ad.jp/) •NIFTY Cloud(http://cloud.nifty.com/)
  37. 37. #jawsfesta IaaS •Amazon Web Services(http://aws.amazon.com/jp/) •さくらのクラウド(http://cloud.sakura.ad.jp/) •NIFTY Cloud(http://cloud.nifty.com/) •Windows Azure(http://www.windowsazure.com/ja-jp/)
  38. 38. #jawsfesta PaaS
  39. 39. #jawsfesta PaaS(ぱあす)
  40. 40. #jawsfesta PaaS
  41. 41. #jawsfesta PaaS • AppFog(https://www.appfog.com)
  42. 42. #jawsfesta PaaS • AppFog(https://www.appfog.com) • AWS Elastic Beanstalk(http://aws.amazon.com/jp/elasticbeanstalk/)
  43. 43. #jawsfesta PaaS • AppFog(https://www.appfog.com) • AWS Elastic Beanstalk(http://aws.amazon.com/jp/elasticbeanstalk/) • cloudControl(https://www.cloudcontrol.com)
  44. 44. #jawsfesta PaaS • AppFog(https://www.appfog.com) • AWS Elastic Beanstalk(http://aws.amazon.com/jp/elasticbeanstalk/) • cloudControl(https://www.cloudcontrol.com) • DotCloud(https://www.dotcloud.com)
  45. 45. #jawsfesta PaaS • AppFog(https://www.appfog.com) • AWS Elastic Beanstalk(http://aws.amazon.com/jp/elasticbeanstalk/) • cloudControl(https://www.cloudcontrol.com) • DotCloud(https://www.dotcloud.com) • Engine Yard(http://www.engineyard.co.jp)
  46. 46. #jawsfesta PaaS • AppFog(https://www.appfog.com) • AWS Elastic Beanstalk(http://aws.amazon.com/jp/elasticbeanstalk/) • cloudControl(https://www.cloudcontrol.com) • DotCloud(https://www.dotcloud.com) • Engine Yard(http://www.engineyard.co.jp) • Google App Engine(https://developers.google.com/appengine/)
  47. 47. #jawsfesta PaaS • AppFog(https://www.appfog.com) • AWS Elastic Beanstalk(http://aws.amazon.com/jp/elasticbeanstalk/) • cloudControl(https://www.cloudcontrol.com) • DotCloud(https://www.dotcloud.com) • Engine Yard(http://www.engineyard.co.jp) • Google App Engine(https://developers.google.com/appengine/) • Pagoda Box(http://pagodabox.com)
  48. 48. #jawsfesta SaaS(さあす)
  49. 49. #jawsfesta SaaS
  50. 50. #jawsfesta SaaS •Gmail
  51. 51. #jawsfesta SaaS •Gmail •GitHub / Bitbucket
  52. 52. #jawsfesta SaaS •Gmail •GitHub / Bitbucket •サイボウズLive (https://live.cybozu.co.jp)
  53. 53. #jawsfesta SaaS •Gmail •GitHub / Bitbucket •サイボウズLive (https://live.cybozu.co.jp) •SendGrid (http://sendgrid.com)
  54. 54. #jawsfesta SaaS •Gmail •GitHub / Bitbucket •サイボウズLive (https://live.cybozu.co.jp) •SendGrid (http://sendgrid.com) •New Relic (http://newrelic.com)
  55. 55. #jawsfesta 本には書けなかったはなし
  56. 56. #jawsfesta SaaS
  57. 57. #jawsfesta SaaS •API経由で利用
  58. 58. #jawsfesta SaaS •API経由で利用 •SDKが用意されている場合が結構ある
  59. 59. #jawsfesta
  60. 60. #jawsfesta
  61. 61. #jawsfesta
  62. 62. #jawsfesta
  63. 63. #jawsfesta
  64. 64. #jawsfesta クラウド3つの分類のはなしでした
  65. 65. #jawsfesta クラウド3つの分類のはなしでした •IaaS (Infrastructure as a Service)
  66. 66. #jawsfesta クラウド3つの分類のはなしでした •IaaS (Infrastructure as a Service) •PaaS (Platform as a Service)
  67. 67. #jawsfesta クラウド3つの分類のはなしでした •IaaS (Infrastructure as a Service) •PaaS (Platform as a Service) •SaaS (Software as a Service)
  68. 68. #jawsfesta ええの?わるいの?
  69. 69. #jawsfesta 時と場合による
  70. 70. #jawsfesta 考えられるメリット(かなり大雑把)
  71. 71. #jawsfesta 考えられるメリット(かなり大雑把) •すぐできる
  72. 72. #jawsfesta 考えられるメリット(かなり大雑把) •すぐできる •なかったことにできる
  73. 73. #jawsfesta 考えられるメリット(かなり大雑把) •すぐできる •なかったことにできる •コスト
  74. 74. #jawsfesta 考えられるデメリット(かなり大雑把)
  75. 75. #jawsfesta 考えられるデメリット(かなり大雑把) •最後のところで融通がきかない
  76. 76. #jawsfesta 考えられるデメリット(かなり大雑把) •最後のところで融通がきかない •英語!
  77. 77. #jawsfesta 考えられるデメリット(かなり大雑把) •最後のところで融通がきかない •英語! •コスト
  78. 78. #jawsfesta 時と場合による
  79. 79. #jawsfesta まずはためしてみましょう
  80. 80. #jawsfesta
  81. 81. #jawsfesta
  82. 82. #jawsfesta About Me
  83. 83. #jawsfesta About Me
  84. 84. #jawsfesta ためしてみるにあたって
  85. 85. #jawsfesta 知っておくべき周辺技術
  86. 86. #jawsfesta ssh
  87. 87. #jawsfesta %  ssh  root@xxx.xxx.xxx.xxx       root@xxx.xxx.xxx.xxx's   password:
  88. 88. #jawsfesta %  ssh  root@xxx.xxx.xxx.xxx       root@xxx.xxx.xxx.xxx's   password:
  89. 89. #jawsfesta ssh
  90. 90. #jawsfesta ssh •パスワードは使わずに
  91. 91. #jawsfesta ssh •パスワードは使わずに •鍵のペアをつくり
  92. 92. #jawsfesta ssh •パスワードは使わずに •鍵のペアをつくり •ひとつは秘密
  93. 93. #jawsfesta ssh •パスワードは使わずに •鍵のペアをつくり •ひとつは秘密 •ひとつは相手に渡す
  94. 94. #jawsfesta ssh •パスワードは使わずに •鍵のペアをつくり •ひとつは秘密 •ひとつは相手に渡す •やりとりするときに照合して
  95. 95. #jawsfesta ssh •パスワードは使わずに •鍵のペアをつくり •ひとつは秘密 •ひとつは相手に渡す •やりとりするときに照合して •アクセスしていいよ∼
  96. 96. #jawsfesta
  97. 97. #jawsfesta
  98. 98. #jawsfesta
  99. 99. #jawsfesta
  100. 100. #jawsfesta コードのデプロイの1案(AWS)
  101. 101. #jawsfesta コードのデプロイの1案(AWS) •Git のリモートリポジトリを作る
  102. 102. #jawsfesta コードのデプロイの1案(AWS) •Git のリモートリポジトリを作る •サーバとの通信はキーペアを使ったssh
  103. 103. #jawsfesta コードのデプロイの1案(AWS) •Git のリモートリポジトリを作る •サーバとの通信はキーペアを使ったssh •サーバ側で git pull
  104. 104. #jawsfesta コードのデプロイの1案(AWS) •Git のリモートリポジトリを作る •サーバとの通信はキーペアを使ったssh •サーバ側で git pull •composer install など
  105. 105. #jawsfesta コードのデプロイの1案(Pagoda Box)
  106. 106. #jawsfesta コードのデプロイの1案(Pagoda Box) •Git のリモートリポジトリを作る
  107. 107. #jawsfesta コードのデプロイの1案(Pagoda Box) •Git のリモートリポジトリを作る •手元に git clone
  108. 108. #jawsfesta コードのデプロイの1案(Pagoda Box) •Git のリモートリポジトリを作る •手元に git clone •Pagoda Boxのリポジトリを git remote add
  109. 109. #jawsfesta コードのデプロイの1案(Pagoda Box) •Git のリモートリポジトリを作る •手元に git clone •Pagoda Boxのリポジトリを git remote add •サーバとの通信はキーペアを使ったssh
  110. 110. #jawsfesta コードのデプロイの1案(Pagoda Box) •Git のリモートリポジトリを作る •手元に git clone •Pagoda Boxのリポジトリを git remote add •サーバとの通信はキーペアを使ったssh •サーバ側に git push
  111. 111. #jawsfesta コードのデプロイの1案(Pagoda Box) •Git のリモートリポジトリを作る •手元に git clone •Pagoda Boxのリポジトリを git remote add •サーバとの通信はキーペアを使ったssh •サーバ側に git push •composer install など
  112. 112. #jawsfesta サンプルコード
  113. 113. #jawsfesta サンプルコード •https://github.com/PHP-Engineers-Training-Book/ php_mook_sample
  114. 114. #jawsfesta サンプルコード •https://github.com/PHP-Engineers-Training-Book/ php_mook_sample •デモします
  115. 115. #jawsfesta git clone %  git  clone  git@github.com:PHP-­‐Engineers-­‐Training-­‐Book/php_mook_sample.git Cloning  into  'php_mook_sample'... remote:  Counting  objects:  37,  done. remote:  Compressing  objects:  100%  (33/33),  done. remote:  Total  37  (delta  0),  reused  37  (delta  0) Receiving  objects:  100%  (37/37),  1.02  MiB  |  491  KiB/s,  done.
  116. 116. #jawsfesta
  117. 117. #jawsfesta ▾  php_mook_sample/    ▾  bin/            phpmig*  -­‐>  /Users/omoon/Documents/php_mook_sample/vendor/davedevelopment/phpmig/bin/phpmig    ▾  config/            development.php            pagoda.php    ▸  logs/    ▾  migrations/            20130711105053_CreateInitialTables.php*    ▾  public/        ▸  assets/            index.php    ▾  vendor/        ▸  composer/        ▸  davedevelopment/        ▸  doctrine/        ▸  pimple/        ▸  psr/        ▸  silex/        ▸  symfony/        ▸  twig/            autoload.php    ▾  views/            index.twig        Boxfile        composer.json        composer.lock        composer.phar*        phpmig.php
  118. 118. #jawsfesta  1  {  2          "require":  {  3                  "silex/silex":  "1.*",  4                  "doctrine/dbal":  "2.2.*",  5                  "twig/twig":  "~1.8",  6                  "davedevelopment/phpmig":  "*"  7          },  8          "config":  {  9                  "bin-­‐dir":  "bin/" 10          } 11  }
  119. 119. #jawsfesta composer install (1) $  curl  -­‐s  http://getcomposer.org/installer  |  php #!/usr/bin/env  php All  settings  correct  for  using  Composer Downloading... Composer  successfully  installed  to:  /Users/omoon/Documents/php_mook_sample/ composer.phar Use  it:  php  composer.phar
  120. 120. #jawsfesta composer install (2) %  php  composer.phar  install Loading  composer  repositories  with  package  information ... (略) ... symfony/event-­‐dispatcher  suggests  installing  symfony/dependency-­‐injection  () symfony/http-­‐kernel  suggests  installing  symfony/browser-­‐kit  () symfony/http-­‐kernel  suggests  installing  symfony/dependency-­‐injection  () symfony/http-­‐kernel  suggests  installing  symfony/finder  () silex/silex  suggests  installing  symfony/browser-­‐kit  (>=2.3,<2.4-­‐dev) silex/silex  suggests  installing  symfony/css-­‐selector  (>=2.3,<2.4-­‐dev) silex/silex  suggests  installing  symfony/dom-­‐crawler  (>=2.3,<2.4-­‐dev) silex/silex  suggests  installing  symfony/form  (>=2.3,<2.4-­‐dev) Generating  autoload  files
  121. 121. #jawsfesta  1  <?php  2  require  __DIR__  .  '/../vendor/autoload.php';  3    4  $app  =  new  SilexApplication();  5    6  $app-­‐>register(new  SilexProviderTwigServiceProvider(),  array(  7          'twig.path'  =>  __DIR__.'/../views',  8  ));  9   10  //  データベース接続情報の読込 11  $env  =  getenv('APP_ENV')  ?:  'development'; 12  $config  =  require  __DIR__  .  "/../config/$env.php"; 13  $app-­‐>register(new  SilexProviderDoctrineServiceProvider(),  array( 14          'db.options'  =>  $config['db'], 15  )); 16   17  //  トップ画面 18  $app-­‐>get('/',  function(SilexApplication  $app)  { 19          $posts  =  $app['db']-­‐>fetchAll(' 20                  SELECT  name,  message,  unix_timestamp(created)  as  created 21                  FROM  posts  ORDER  BY  created  DESC  LIMIT  5 22          '); 23          return  $app['twig']-­‐>render('index.twig',  array( 24                  'posts'  =>  $posts, 25          )); 26  }); 27   28  //  投稿処理 29  $app-­‐>post('/speak',  function(SilexApplication  $app)  { 30          $name  =  $app['request']-­‐>get('name'); 31          $message  =  $app['request']-­‐>get('message'); 32          if  ($name  &&  $message)  { 33                  $app['db']-­‐>insert('posts',  array('name'  =>  $name,  'message'  =>  $message)); 34          } 35          return  $app-­‐>redirect('/'); 36  }); 37   38  $app-­‐>run();
  122. 122. #jawsfesta  1  <?php  2  require  __DIR__  .  '/../vendor/autoload.php';  3    4  $app  =  new  SilexApplication();  5    6  $app-­‐>register(new  SilexProviderTwigServiceProvider(),  array(  7          'twig.path'  =>  __DIR__.'/../views',  8  ));  9   10  //  データベース接続情報の読込 11  $env  =  getenv('APP_ENV')  ?:  'development'; 12  $config  =  require  __DIR__  .  "/../config/$env.php"; 13  $app-­‐>register(new  SilexProviderDoctrineServiceProvider(),  array( 14          'db.options'  =>  $config['db'], 15  )); 16   17  //  トップ画面 18  $app-­‐>get('/',  function(SilexApplication  $app)  { 19          $posts  =  $app['db']-­‐>fetchAll(' 20                  SELECT  name,  message,  unix_timestamp(created)  as  created 21                  FROM  posts  ORDER  BY  created  DESC  LIMIT  5 22          '); 23          return  $app['twig']-­‐>render('index.twig',  array( 24                  'posts'  =>  $posts, 25          )); 26  }); 27   28  //  投稿処理 29  $app-­‐>post('/speak',  function(SilexApplication  $app)  { 30          $name  =  $app['request']-­‐>get('name'); 31          $message  =  $app['request']-­‐>get('message'); 32          if  ($name  &&  $message)  { 33                  $app['db']-­‐>insert('posts',  array('name'  =>  $name,  'message'  =>  $message)); 34          } 35          return  $app-­‐>redirect('/'); 36  }); 37   38  $app-­‐>run();
  123. 123. #jawsfesta  1  <?php  2  require  __DIR__  .  '/../vendor/autoload.php';  3    4  $app  =  new  SilexApplication();  5    6  $app-­‐>register(new  SilexProviderTwigServiceProvider(),  array(  7          'twig.path'  =>  __DIR__.'/../views',  8  ));
  124. 124. #jawsfesta 10  //  データベース接続情報の読込 11  $env  =  getenv('APP_ENV')  ?:  'development'; 12  $config  =  require  __DIR__  .  "/../config/$env.php"; 13  $app-­‐>register(new  SilexProviderDoctrineServiceProvider(),  array( 14          'db.options'  =>  $config['db'], 15  ));
  125. 125. #jawsfesta 17  //  トップ画面 18  $app-­‐>get('/',  function(SilexApplication  $app)  { 19          $posts  =  $app['db']-­‐>fetchAll(' 20                  SELECT  name,  message,  unix_timestamp(created)  as  created 21                  FROM  posts  ORDER  BY  created  DESC  LIMIT  5 22          '); 23          return  $app['twig']-­‐>render('index.twig',  array( 24                  'posts'  =>  $posts, 25          )); 26  });
  126. 126. #jawsfesta  1  {  2          "require":  {  3                  "silex/silex":  "1.*",  4                  "doctrine/dbal":  "2.2.*",  5                  "twig/twig":  "~1.8",  6                  "davedevelopment/phpmig":  "*"  7          },  8          "config":  {  9                  "bin-­‐dir":  "bin/" 10          } 11  }
  127. 127. #jawsfesta 28  //  投稿処理 29  $app-­‐>post('/speak',  function(SilexApplication  $app)  { 30          $name  =  $app['request']-­‐>get('name'); 31          $message  =  $app['request']-­‐>get('message'); 32          if  ($name  &&  $message)  { 33                  $app['db']-­‐>insert('posts',  array('name'  =>  $name,  'message'  =>  $message)); 34          } 35          return  $app-­‐>redirect('/'); 36  });
  128. 128. #jawsfesta 38  $app-­‐>run();
  129. 129. #jawsfesta とにかくためしてみましょう
  130. 130. #jawsfesta ありがとうございました
  1. A particular slide catching your eye?

    Clipping is a handy way to collect important slides you want to go back to later.

×