Suche senden
Hochladen
Heroku で作る スケーラブルな PHP アプリケーション
•
15 gefällt mir
•
25,475 views
Masashi Shinbara
Folgen
2014/06/19 第16回関西PHP勉強会
Weniger lesen
Mehr lesen
Internet
Diashow-Anzeige
Melden
Teilen
Diashow-Anzeige
Melden
Teilen
1 von 63
Jetzt herunterladen
Downloaden Sie, um offline zu lesen
Empfohlen
Vagrant体験入門
Vagrant体験入門
Masashi Shinbara
Vagrant で作る PHP 開発環境 [実践編]
Vagrant で作る PHP 開発環境 [実践編]
Masashi Shinbara
開発現場で活用するVagrant
開発現場で活用するVagrant
Masashi Shinbara
わかってるフレームワーク Laravel
わかってるフレームワーク Laravel
Masashi Shinbara
Vagrant で PHP 開発環境を作る ハンズオン
Vagrant で PHP 開発環境を作る ハンズオン
Masashi Shinbara
Azure Websites で作るスケーラブルな PHP アプリケーション
Azure Websites で作るスケーラブルな PHP アプリケーション
Masashi Shinbara
Ansible ではじめるサーバ作業の自動化
Ansible ではじめるサーバ作業の自動化
Masashi Shinbara
認証機能で学ぶ Laravel 5 アプリケーション
認証機能で学ぶ Laravel 5 アプリケーション
Masashi Shinbara
Empfohlen
Vagrant体験入門
Vagrant体験入門
Masashi Shinbara
Vagrant で作る PHP 開発環境 [実践編]
Vagrant で作る PHP 開発環境 [実践編]
Masashi Shinbara
開発現場で活用するVagrant
開発現場で活用するVagrant
Masashi Shinbara
わかってるフレームワーク Laravel
わかってるフレームワーク Laravel
Masashi Shinbara
Vagrant で PHP 開発環境を作る ハンズオン
Vagrant で PHP 開発環境を作る ハンズオン
Masashi Shinbara
Azure Websites で作るスケーラブルな PHP アプリケーション
Azure Websites で作るスケーラブルな PHP アプリケーション
Masashi Shinbara
Ansible ではじめるサーバ作業の自動化
Ansible ではじめるサーバ作業の自動化
Masashi Shinbara
認証機能で学ぶ Laravel 5 アプリケーション
認証機能で学ぶ Laravel 5 アプリケーション
Masashi Shinbara
いまどきのPHP
いまどきのPHP
Masashi Shinbara
もう XAMPP / MAMP はいらない! Vagrant で作る PHP 開発環境
もう XAMPP / MAMP はいらない! Vagrant で作る PHP 開発環境
Masashi Shinbara
ビルドサーバで使うDocker
ビルドサーバで使うDocker
Masashi Shinbara
Laravel ユーザなら知っておくべきAuthオートログイン
Laravel ユーザなら知っておくべきAuthオートログイン
Masashi Shinbara
Twilio API を PHP で触ってみよう
Twilio API を PHP で触ってみよう
Masashi Shinbara
Vagrant を Web開発環境に使う
Vagrant を Web開発環境に使う
Masashi Shinbara
VagrantからDockerに開発環境を移行した時の話
VagrantからDockerに開発環境を移行した時の話
Daijiro Abe
PHPコードではなく PHPコードの「書き方」を知る
PHPコードではなく PHPコードの「書き方」を知る
Masashi Shinbara
Vagrant入門以前
Vagrant入門以前
katanyan
AWSをコードで定義する
AWSをコードで定義する
Sugawara Genki
レイヤードアーキテクチャを意識した PHPアプリケーションの構築 ver2
レイヤードアーキテクチャを意識した PHPアプリケーションの構築 ver2
Masashi Shinbara
成長を加速する minne の技術基盤戦略
成長を加速する minne の技術基盤戦略
Hiroshi SHIBATA
イベント駆動プログラミングとI/O多重化
イベント駆動プログラミングとI/O多重化
Gosuke Miyashita
Elixir Meetup #1 Loggerの構造と拡張
Elixir Meetup #1 Loggerの構造と拡張
Sugawara Genki
コンテナ事例 CircleCI, Cucumber-Chef
コンテナ事例 CircleCI, Cucumber-Chef
Yukihiko SAWANOBORI
Ansibleを使ってdockerコンテナをプロビジョニングする
Ansibleを使ってdockerコンテナをプロビジョニングする
Ryo Adachi
Mobage を支える Ruby の技術 ~ 複数DB編 ~
Mobage を支える Ruby の技術 ~ 複数DB編 ~
Naotoshi Seo
20140930 anything as_code
20140930 anything as_code
Sugawara Genki
フィードフォースと AWS と私
フィードフォースと AWS と私
a know
コンテナ時代だからこそ要注目! Cloud Foundry
コンテナ時代だからこそ要注目! Cloud Foundry
Kazuto Kusama
Game BaaS Implemented in Ruby
Game BaaS Implemented in Ruby
dena_study
[REV UP] あなたならどう使う?最新Azureレシピ for LINE Platform
[REV UP] あなたならどう使う?最新Azureレシピ for LINE Platform
拓将 平林
Weitere ähnliche Inhalte
Was ist angesagt?
いまどきのPHP
いまどきのPHP
Masashi Shinbara
もう XAMPP / MAMP はいらない! Vagrant で作る PHP 開発環境
もう XAMPP / MAMP はいらない! Vagrant で作る PHP 開発環境
Masashi Shinbara
ビルドサーバで使うDocker
ビルドサーバで使うDocker
Masashi Shinbara
Laravel ユーザなら知っておくべきAuthオートログイン
Laravel ユーザなら知っておくべきAuthオートログイン
Masashi Shinbara
Twilio API を PHP で触ってみよう
Twilio API を PHP で触ってみよう
Masashi Shinbara
Vagrant を Web開発環境に使う
Vagrant を Web開発環境に使う
Masashi Shinbara
VagrantからDockerに開発環境を移行した時の話
VagrantからDockerに開発環境を移行した時の話
Daijiro Abe
PHPコードではなく PHPコードの「書き方」を知る
PHPコードではなく PHPコードの「書き方」を知る
Masashi Shinbara
Vagrant入門以前
Vagrant入門以前
katanyan
AWSをコードで定義する
AWSをコードで定義する
Sugawara Genki
レイヤードアーキテクチャを意識した PHPアプリケーションの構築 ver2
レイヤードアーキテクチャを意識した PHPアプリケーションの構築 ver2
Masashi Shinbara
成長を加速する minne の技術基盤戦略
成長を加速する minne の技術基盤戦略
Hiroshi SHIBATA
イベント駆動プログラミングとI/O多重化
イベント駆動プログラミングとI/O多重化
Gosuke Miyashita
Elixir Meetup #1 Loggerの構造と拡張
Elixir Meetup #1 Loggerの構造と拡張
Sugawara Genki
コンテナ事例 CircleCI, Cucumber-Chef
コンテナ事例 CircleCI, Cucumber-Chef
Yukihiko SAWANOBORI
Ansibleを使ってdockerコンテナをプロビジョニングする
Ansibleを使ってdockerコンテナをプロビジョニングする
Ryo Adachi
Mobage を支える Ruby の技術 ~ 複数DB編 ~
Mobage を支える Ruby の技術 ~ 複数DB編 ~
Naotoshi Seo
20140930 anything as_code
20140930 anything as_code
Sugawara Genki
フィードフォースと AWS と私
フィードフォースと AWS と私
a know
コンテナ時代だからこそ要注目! Cloud Foundry
コンテナ時代だからこそ要注目! Cloud Foundry
Kazuto Kusama
Was ist angesagt?
(20)
いまどきのPHP
いまどきのPHP
もう XAMPP / MAMP はいらない! Vagrant で作る PHP 開発環境
もう XAMPP / MAMP はいらない! Vagrant で作る PHP 開発環境
ビルドサーバで使うDocker
ビルドサーバで使うDocker
Laravel ユーザなら知っておくべきAuthオートログイン
Laravel ユーザなら知っておくべきAuthオートログイン
Twilio API を PHP で触ってみよう
Twilio API を PHP で触ってみよう
Vagrant を Web開発環境に使う
Vagrant を Web開発環境に使う
VagrantからDockerに開発環境を移行した時の話
VagrantからDockerに開発環境を移行した時の話
PHPコードではなく PHPコードの「書き方」を知る
PHPコードではなく PHPコードの「書き方」を知る
Vagrant入門以前
Vagrant入門以前
AWSをコードで定義する
AWSをコードで定義する
レイヤードアーキテクチャを意識した PHPアプリケーションの構築 ver2
レイヤードアーキテクチャを意識した PHPアプリケーションの構築 ver2
成長を加速する minne の技術基盤戦略
成長を加速する minne の技術基盤戦略
イベント駆動プログラミングとI/O多重化
イベント駆動プログラミングとI/O多重化
Elixir Meetup #1 Loggerの構造と拡張
Elixir Meetup #1 Loggerの構造と拡張
コンテナ事例 CircleCI, Cucumber-Chef
コンテナ事例 CircleCI, Cucumber-Chef
Ansibleを使ってdockerコンテナをプロビジョニングする
Ansibleを使ってdockerコンテナをプロビジョニングする
Mobage を支える Ruby の技術 ~ 複数DB編 ~
Mobage を支える Ruby の技術 ~ 複数DB編 ~
20140930 anything as_code
20140930 anything as_code
フィードフォースと AWS と私
フィードフォースと AWS と私
コンテナ時代だからこそ要注目! Cloud Foundry
コンテナ時代だからこそ要注目! Cloud Foundry
Ähnlich wie Heroku で作る スケーラブルな PHP アプリケーション
Game BaaS Implemented in Ruby
Game BaaS Implemented in Ruby
dena_study
[REV UP] あなたならどう使う?最新Azureレシピ for LINE Platform
[REV UP] あなたならどう使う?最新Azureレシピ for LINE Platform
拓将 平林
先取り!PHP 7 と WordPress
先取り!PHP 7 と WordPress
Masashi Shinbara
【PHPカンファレンス福岡】PHP 5.3 + CakePHP 1.3 → PHP 7 + CakePHP 3 移行を決めた話
【PHPカンファレンス福岡】PHP 5.3 + CakePHP 1.3 → PHP 7 + CakePHP 3 移行を決めた話
Yuki Kanazawa
PHPアプリの品質を(ある程度)保つために出来る事 〜組織編〜
PHPアプリの品質を(ある程度)保つために出来る事 〜組織編〜
Katsuhiro Miura
OSC2013@FUKUOKA
OSC2013@FUKUOKA
Ryuji Egashira
VagrantユーザのためのDocker入門
VagrantユーザのためのDocker入門
Masashi Shinbara
PHPで並列処理する ライブラリを作った
PHPで並列処理する ライブラリを作った
Hironobu Saitoh
クラウドコンピューティングでつくるビッグデータ解析のいまとこれから
クラウドコンピューティングでつくるビッグデータ解析のいまとこれから
Shohei Kobayashi
Java Clientで入門する Apache Kafka #jjug_ccc #ccc_e2
Java Clientで入門する Apache Kafka #jjug_ccc #ccc_e2
Yahoo!デベロッパーネットワーク
PHP カンファレンス福岡 参加報告
PHP カンファレンス福岡 参加報告
y-uti
RFC: "var" Deprecation
RFC: "var" Deprecation
y-uti
オフラインファーストの思想と実践
オフラインファーストの思想と実践
Shumpei Shiraishi
三位一体の自動化で壊せ DevとOpsの壁~アラサーエンジニアの挑戦~
三位一体の自動化で壊せ DevとOpsの壁~アラサーエンジニアの挑戦~
Rakuten Group, Inc.
PaaSの作り方 Sqaleの場合
PaaSの作り方 Sqaleの場合
hiboma
技術選択とアーキテクトの役割
技術選択とアーキテクトの役割
Toru Yamaguchi
OSC福岡 20111203
OSC福岡 20111203
Hiroshi Bunya
HHVM/Hackを本番投入した話
HHVM/Hackを本番投入した話
Kenjiro Kubota
HBase Meetup Tokyo Summer 2015 #hbasejp
HBase Meetup Tokyo Summer 2015 #hbasejp
Cloudera Japan
Ruby開発者のためのHeroku入門
Ruby開発者のためのHeroku入門
Salesforce Developers Japan
Ähnlich wie Heroku で作る スケーラブルな PHP アプリケーション
(20)
Game BaaS Implemented in Ruby
Game BaaS Implemented in Ruby
[REV UP] あなたならどう使う?最新Azureレシピ for LINE Platform
[REV UP] あなたならどう使う?最新Azureレシピ for LINE Platform
先取り!PHP 7 と WordPress
先取り!PHP 7 と WordPress
【PHPカンファレンス福岡】PHP 5.3 + CakePHP 1.3 → PHP 7 + CakePHP 3 移行を決めた話
【PHPカンファレンス福岡】PHP 5.3 + CakePHP 1.3 → PHP 7 + CakePHP 3 移行を決めた話
PHPアプリの品質を(ある程度)保つために出来る事 〜組織編〜
PHPアプリの品質を(ある程度)保つために出来る事 〜組織編〜
OSC2013@FUKUOKA
OSC2013@FUKUOKA
VagrantユーザのためのDocker入門
VagrantユーザのためのDocker入門
PHPで並列処理する ライブラリを作った
PHPで並列処理する ライブラリを作った
クラウドコンピューティングでつくるビッグデータ解析のいまとこれから
クラウドコンピューティングでつくるビッグデータ解析のいまとこれから
Java Clientで入門する Apache Kafka #jjug_ccc #ccc_e2
Java Clientで入門する Apache Kafka #jjug_ccc #ccc_e2
PHP カンファレンス福岡 参加報告
PHP カンファレンス福岡 参加報告
RFC: "var" Deprecation
RFC: "var" Deprecation
オフラインファーストの思想と実践
オフラインファーストの思想と実践
三位一体の自動化で壊せ DevとOpsの壁~アラサーエンジニアの挑戦~
三位一体の自動化で壊せ DevとOpsの壁~アラサーエンジニアの挑戦~
PaaSの作り方 Sqaleの場合
PaaSの作り方 Sqaleの場合
技術選択とアーキテクトの役割
技術選択とアーキテクトの役割
OSC福岡 20111203
OSC福岡 20111203
HHVM/Hackを本番投入した話
HHVM/Hackを本番投入した話
HBase Meetup Tokyo Summer 2015 #hbasejp
HBase Meetup Tokyo Summer 2015 #hbasejp
Ruby開発者のためのHeroku入門
Ruby開発者のためのHeroku入門
Mehr von Masashi Shinbara
日本語消えたスライド
日本語消えたスライド
Masashi Shinbara
Twilio入門 -Web アプリ編-
Twilio入門 -Web アプリ編-
Masashi Shinbara
いまどきのPHP開発現場 -2015年秋-
いまどきのPHP開発現場 -2015年秋-
Masashi Shinbara
Twilio を使えば簡単にできる アプリケーションと電話/SMS連携
Twilio を使えば簡単にできる アプリケーションと電話/SMS連携
Masashi Shinbara
レイヤードアーキテクチャを意識したPHPアプリケーションの構築
レイヤードアーキテクチャを意識したPHPアプリケーションの構築
Masashi Shinbara
How to learn Laravel5 application from Authentication
How to learn Laravel5 application from Authentication
Masashi Shinbara
キャラ立ちしたエンジニアになる!
キャラ立ちしたエンジニアになる!
Masashi Shinbara
Composer 再入門
Composer 再入門
Masashi Shinbara
PHP 5.5 Zend OPcache
PHP 5.5 Zend OPcache
Masashi Shinbara
サーバの防災訓練
サーバの防災訓練
Masashi Shinbara
Kansai PHP Users Group 2012年活動報告
Kansai PHP Users Group 2012年活動報告
Masashi Shinbara
10分で分かる最近のCakePHP
10分で分かる最近のCakePHP
Masashi Shinbara
Mehr von Masashi Shinbara
(12)
日本語消えたスライド
日本語消えたスライド
Twilio入門 -Web アプリ編-
Twilio入門 -Web アプリ編-
いまどきのPHP開発現場 -2015年秋-
いまどきのPHP開発現場 -2015年秋-
Twilio を使えば簡単にできる アプリケーションと電話/SMS連携
Twilio を使えば簡単にできる アプリケーションと電話/SMS連携
レイヤードアーキテクチャを意識したPHPアプリケーションの構築
レイヤードアーキテクチャを意識したPHPアプリケーションの構築
How to learn Laravel5 application from Authentication
How to learn Laravel5 application from Authentication
キャラ立ちしたエンジニアになる!
キャラ立ちしたエンジニアになる!
Composer 再入門
Composer 再入門
PHP 5.5 Zend OPcache
PHP 5.5 Zend OPcache
サーバの防災訓練
サーバの防災訓練
Kansai PHP Users Group 2012年活動報告
Kansai PHP Users Group 2012年活動報告
10分で分かる最近のCakePHP
10分で分かる最近のCakePHP
Heroku で作る スケーラブルな PHP アプリケーション
1.
2014/06/19 shin1x1 第16回関西PHP勉強会 Heroku で作る スケーラブルな PHP
アプリケーション
2.
Agenda (c) 2014 Masashi
Shinbara @shin1x1 • Heroku とは • PHPアプリケーションのデプロイ • スケーラブルな構成を作る • 大事なこと • まとめ
3.
Herokuとは (c) 2014 Masashi
Shinbara @shin1x1
4.
• Salesforce 社が運営する
PaaS • 2007年サービスイン • 3,000,000以上のアプリケーションが稼働 • Ruby をはじめとして、複数言語の実行環境 • PHPが 2014/04 に正式対応 (c) 2014 Masashi Shinbara @shin1x1 Herokuとは
5.
• git push
だけで、デプロイ完了 • ミドルウェアのインストールや設定などが不要 • 無料枠があり、かなり試すことができる • 豊富な動作実績があり、ノウハウも多数ある (c) 2014 Masashi Shinbara @shin1x1 Herokuのうれしいところ
6.
• PHP 5.5.12
/ 5.5.13 • HHVM 3.1.0 • 拡張も追加可能(mbstring, memcached等) • Composer が使える (c) 2014 Masashi Shinbara @shin1x1 HerokuでのPHP
7.
• PostgreSQL /
MySQL / KVS • メール送受信 • ログ転送 • 監視 • キュー • etc (c) 2014 Masashi Shinbara @shin1x1 豊富なアドオン
8.
PHPアプリケーションの デプロイ (c) 2014 Masashi
Shinbara @shin1x1
9.
(c) 2014 Masashi
Shinbara @shin1x1 PHPアプリケーション $ ls! index.php! ! $ cat index.php! <?php phpinfo();! ! $ git init! $ git add .; git commit -m “init”
10.
1. heroku.com でサインアップ(サインアップ) 2.
Heroku Toolbelt インストール 3. Heroku でアプリケーションを作成 4. PHPアプリケーションをデプロイ (c) 2014 Masashi Shinbara @shin1x1 Quick Start
11.
(c) 2014 Masashi
Shinbara @shin1x1 サインアップ https://id.heroku.com/signup
12.
(c) 2014 Masashi
Shinbara @shin1x1 Heroku Toolbelt • Heroku クライアントツールセット • OSX, Windows, Debian / Ubuntsu • Heroku の操作を CLI で行う • Web 画面でも可能だが、あると便利
13.
(c) 2014 Masashi
Shinbara @shin1x1 Heroku Toolbelt https://devcenter.heroku.com/articles/quickstart
14.
(c) 2014 Masashi
Shinbara @shin1x1 Heroku Toolbelt $ heroku login! Enter your Heroku credentials.! Email: shin1x1@gmail.com! Password (typing will be hidden):! Two-factor code: xxxxx! Authentication successful.! • ログイン 2要素認証も可能
15.
(c) 2014 Masashi
Shinbara @shin1x1 アプリケーション作成 ! $ heroku create -r heroku! Creating xxx-xxxx-xxxx... done, stack is cedar! http://xxx-xxxx-xxxx.herokuapp.com/ | git@heroku.com:xxx-xxxx-xxxx.git! •アプリ名は、ランダムで自動生成 •̶app NAME で、アプリ名を指定することも可能 •-r heroku で、「git remote add heroku URL」を実行
16.
(c) 2014 Masashi
Shinbara @shin1x1 デプロイ ! $ git push heroku master! Initializing repository, done.! Counting objects: 3, done.! Writing objects: 100% (3/3), 218 bytes | 0 bytes/s, done.! Total 3 (delta 0), reused 0 (delta 0) ! (snip)! -----> Setting up runtime environment...! - PHP 5.5.12! - Apache 2.4.9! - Nginx 1.4.6!
17.
(c) 2014 Masashi
Shinbara @shin1x1 完了! ! $ heroku open!
18.
(c) 2014 Masashi
Shinbara @shin1x1 管理画面
19.
スケーラブルな構成を作る (c) 2014 Masashi
Shinbara @shin1x1
20.
(c) 2014 Masashi
Shinbara @shin1x1 アプリケーション • 画像アップロードサイト • ログイン認証 • 画像アップロード • Laravel 4.2 https://github.com/shin1x1/laravel-on-heroku
21.
(c) 2014 Masashi
Shinbara @shin1x1 アプリケーション https://github.com/shin1x1/laravel-on-heroku
22.
(c) 2014 Masashi
Shinbara @shin1x1 シンプルな構成 Apache / PHP Log DB Session File
23.
(c) 2014 Masashi
Shinbara @shin1x1 シンプルな構成 • 全てが 1 台のサーバにある • Apache(nginx) / PHP / DB etc • スケールアップしかできない
24.
(c) 2014 Masashi
Shinbara @shin1x1 Apache / PHP Log DB Session File スケーラブルな構成
25.
(c) 2014 Masashi
Shinbara @shin1x1 スケーラブルな構成 DB FileSession Log Apache / PHP
26.
(c) 2014 Masashi
Shinbara @shin1x1 スケーラブルな構成 Apache / PHP DB FileSession Log Apache / PHP
27.
(c) 2014 Masashi
Shinbara @shin1x1 スケーラブルな構成 Apache / PHP DB FileSession Log Apache / PHP Apache / PHP
28.
(c) 2014 Masashi
Shinbara @shin1x1 Herokuでの構成 Apache / PHP DB FileSession Log Apache / PHP Apache / PHP Dyno
29.
(c) 2014 Masashi
Shinbara @shin1x1 Herokuでの構成 Apache / PHP DB FileSession Log Apache / PHP Apache / PHP Dyno Dyno Dyno
30.
(c) 2014 Masashi
Shinbara @shin1x1 Herokuでの構成 Apache / PHP DB FileSession Log Apache / PHP Apache / PHP Dyno Dyno Dyno 3 Dynos
31.
(c) 2014 Masashi
Shinbara @shin1x1 Herokuでの構成 Apache / PHP DB FileSession Log Apache / PHP Apache / PHP Add-ons Add-ons
32.
(c) 2014 Masashi
Shinbara @shin1x1 Herokuでの構成 Apache / PHP DB FileSession Log Apache / PHP Apache / PHP
33.
(c) 2014 Masashi
Shinbara @shin1x1 スケーラブルな構成 • Dyno(PHPサーバ)は、ステートレスにする • Dyno を増やしてスケールさせる • アプリケーションデータは、アドオンに置く
34.
(c) 2014 Masashi
Shinbara @shin1x1 データベース • Heroku Postgres(無料枠あり) • 接続情報を環境変数から取得 DATABASE_URL=postgres://xxxxx:yyyyyy@ec2-nnn-nnn- nnn-nnn.compute-1.amazonaws.com:5432/XXXXXXX • parse_url() でパース • アドオンは、ほぼこのパターン
35.
(c) 2014 Masashi
Shinbara @shin1x1 データベース <?php! $url = parse_url(getenv('DATABASE_URL')); array(6) {! 'scheme' =>! string(8) "postgres"! 'host' =>! string(43) "ec2-nnn-nnn-nnn-nnn.compute-1.amazonaws.com"! 'port' =>! int(5432)! 'user' =>! string(4) "user"! 'pass' =>! string(4) "pass"! 'path' =>! string(7) "/dbname"! }
36.
(c) 2014 Masashi
Shinbara @shin1x1 データベース <?php! $url = parse_url(getenv('DATABASE_URL'));! ! $dsn = sprintf(‘pgsql:host=%s;dbname=%s',! $url['host'], substr($url['path'], 1));! ! $pdo = new PDO($dsn, $url['user'], $url['pass']); • PDO の例
37.
(c) 2014 Masashi
Shinbara @shin1x1 データベース <?php! $postgresqlUrl = parse_url(getenv('DATABASE_URL'));! ! return [! 'default' => 'pgsql',! 'connections' => [! 'pgsql' => [! 'driver' => 'pgsql',! 'host' => $postgresqlUrl['host'],! 'database' => substr($postgresqlUrl['path'], 1),! 'username' => $postgresqlUrl['user'],! 'password' => $postgresqlUrl['pass'],! 'charset' => 'utf8',! 'prefix' => '',! 'schema' => 'public',! ],! ],! ]; • Laravel の例
38.
(c) 2014 Masashi
Shinbara @shin1x1 データベース http://qiita.com/shin1x1/items/68732dcf02a93c0a0fbb
39.
(c) 2014 Masashi
Shinbara @shin1x1 ログイン認証(セッション) • Redis でセッション情報を共有 • Redis To Go(無料枠あり) • 接続情報を環境変数から取得 • composer.json で redis を有効に REDISTOGO_URL=redis:// redistogo:xxxxxxxxxxxxxxx@xxxxx.redistogo.com:PORT/
40.
(c) 2014 Masashi
Shinbara @shin1x1 ログイン認証(セッション) <?php! $url = parse_url(getenv('REDISTOGO_URL'));! ! $redisServer = sprintf(‘tcp://%s:%d?auth=%s',! $url['host'], $url['port'], $url['pass']);! ! ini_set('session.save_handler', 'redis');! ini_set('session.save_path', $redisServer);! • redis セッションハンドラの例
41.
(c) 2014 Masashi
Shinbara @shin1x1 ログイン認証(セッション) http://qiita.com/shin1x1/items/43181cd0487c72cb87a3
42.
(c) 2014 Masashi
Shinbara @shin1x1 画像ファイル • S3 に保存(アドオンではない) • AWS SDK for PHP で実装 • 接続情報は、環境変数にセットしておくと良い • heroku config:set で環境変数をセット $ heroku config:set AWS_ACCESS_ID=xxxx! $ heroku config:set AWS_ACCESS_SECRET_KEY=xxxx
43.
(c) 2014 Masashi
Shinbara @shin1x1 ログ • ログは、stdout or stderr に出力 • PaperTail などのアドオンで保存 • 複数 Dyno のログをアドオンに集約 • monolog / file_put_contents()
44.
(c) 2014 Masashi
Shinbara @shin1x1 ログ
45.
(c) 2014 Masashi
Shinbara @shin1x1 デモ アクセスする Dyno が違う
46.
(c) 2014 Masashi
Shinbara @shin1x1 デモ アクセスする Dyno が違う
47.
(c) 2014 Masashi
Shinbara @shin1x1 デモ アクセスする Dyno が違う
48.
(c) 2014 Masashi
Shinbara @shin1x1 デモ アクセスする Dyno が違う
49.
大事なこと (c) 2014 Masashi
Shinbara @shin1x1
50.
(c) 2014 Masashi
Shinbara @shin1x1 大事なこと • ファイルに保存したデータは消える!! • デプロイ、環境変数変更等の操作 • 1日1回の再起動時 • アクセスが無い場合、自動停止 (Dyno が 1 台構成だとアクセスが無い時間は、 自動でスリープする)
51.
(c) 2014 Masashi
Shinbara @shin1x1 ファイルが消える <?php! const FILE_PATH = '/tmp/file';! ! file_put_contents(FILE_PATH, ! date('Y/m/d H:i:s') . '<br>', FILE_APPEND);! ! echo file_get_contents(FILE_PATH); • file.php として、デプロイ
52.
(c) 2014 Masashi
Shinbara @shin1x1 ファイルが消える • ブラウザでアクセス
53.
(c) 2014 Masashi
Shinbara @shin1x1 ファイルが消える • 何度かリロード
54.
(c) 2014 Masashi
Shinbara @shin1x1 ファイルが消える $ echo “//foo” >> file.php! $ git add file.php; git commit -m “add comment”! $ git push heroku master • 変更して、再デプロイ • ブラウザでアクセスすると、消えている
55.
(c) 2014 Masashi
Shinbara @shin1x1 Herokuとは Heroku では、データファイルは消える
56.
(c) 2014 Masashi
Shinbara @shin1x1 Herokuとは Heroku では、データファイルは消える データは全て外部に逃す
57.
(c) 2014 Masashi
Shinbara @shin1x1 Herokuとは Heroku では、データファイルは消える データは全て外部に逃す スケーラブルなアプリケーションに!!
58.
(c) 2014 Masashi
Shinbara @shin1x1 Heroku では、データファイルは消える データは全て外部に逃す スケーラブルなアプリケーションに!! Herokuは スケーラブルな アプリケーション 矯正ギプス Herokuとは
59.
まとめ (c) 2014 Masashi
Shinbara @shin1x1
60.
(c) 2014 Masashi
Shinbara @shin1x1 まとめ • Heroku は、無料から使える • アドオンの活用が肝 • スケーラブルアプリケーション矯正ギプス
61.
(c) 2014 Masashi
Shinbara @shin1x1 参考 https://devcenter.heroku.com/categories/php
62.
(c) 2014 Masashi
Shinbara @shin1x1 参考 http://tatsu-zine.com/books/heropro
63.
@shin1x1 (c) 2014 Masashi
Shinbara @shin1x1
Jetzt herunterladen