Twitter: @kphpug / #phpkansai
FB: Kansai PHP Users Group
大事な案内
PHPカンファレンス関西2014 2014/06/28(土) 大阪産業創造館
blog(Kobito)を書くまでが勉強会
自己紹介
氏名、TwitterIDなど、PHP歴とか。
Herokuで作るスケーラブルなPHPアプリケーション
@shin1x1 さんの話
Herokuとはなんぞや
- Heroku社(なのかな?)が運営するPaaS
- 2007 年 Service In.
- 300 万以上のアプリ動いてる
- 初めRuby が初め、Java、Nodeが動き…2014/04にPHP正式対応
Herokuの嬉しい所
- Git push で Deploy
- middlewareのインストールなどが不要
- 無料枠でわりと試せる。
対応
- PHP 5.5.12/ 5.5.13
- hhvm 2.1.0
- mbstring, memcached 等有り
- using composer.
Add-On
- PostgreSQL/MySQL/KVS
- Log
- 監視
- Queue
- とかとか…
PHP アプリのデプロイ
$ ls
index.php
$ cat index.php
<?php phpinfo();
$ git init
Deploy
サインアップ
どこも同じ
heroku toolbelt インストール
- 黒い画面で、Herokuを操作するためのコマンドラインを提供
- ブラウザであるけど、こちらも便利なのでおすすめ
アプリケーション作成
Heroku上でアプリケーションを作成する。
〜〜 でも 〜〜
index.php があれば、よしなにそれが動くが、composer.json がないとワーニングが出る
!! Git は使わないといけないのが注意 !!
スケーラブルな構成を作る
- 画像アップロードサイト
- ログイン認証
- Laravel 4.2
のサンプルアプリケーション。Githubにアップロード済み
Simple Architecture
サーバとか必要な構成: Apache/PHP, Log, DB, Session, File
これだと、
- 1台のサーバにあるので、サーバを増やすことができない(None Scalable)
- Apache+PHP / DB / Session / File →それぞれバラバラにする
- Apache+PHP = Dyno (Heroku用語)
- 他の DB / Session / File は Add-On を使う(外部サービスの連携)
スケーラブルな構成
- Dynoはスケートレスにする
- アプリケーションデータは Add-Ons におく
中のこと
- DB の環境設定は環境変数で受け取るので、parse_url 関数で展開させて、それに書かれているサーバに接続する
- 他の Add-Ons もこのようなやり方で使う
- というのが Qiita に記事が(ry
- ログイン認証はRedisでこれも記事がQiitaに(ry
- AWS S3 の接続キーとかは、heroku config:set で環境変数にセットする
- ログ stdout/stderr に書き出して、PaperTailとかの Add-ons にする
〜〜デモは飛ばします〜〜
大事なこと(ハマった所)
- ファイルに保存したデータは消える
- Deploy や、環境変数の設定変更等の走査
- 一日一回の再起動
- 無料枠の時は、アクセスなけりゃ寝てる
- アクセスするたびに、タイムスタンプをファイルに保存するアプリをDeploy
- push したらタイムスタンプの内容が書き換わる
データは消える(ただし、ソースコードは消えない) = データは外部に逃す = 自然とスケーラブルな構成にせざるおえない
まとめ
- Heroku は無料枠で使える
- Add-ons の活用が肝
- スケーラブルアプリケーション矯正ギブス
参考:
- 公式ドキュメント(英語なのでGoogle翻訳などで。)
- 電書でHerokuの本がある(ただし、まだベータ版なので、章ごと白紙とかある)
Yii2 ベータなのに実務に使ってる様子
YiiFramework (ィーフレームワーク)
- 1.1 ( PHP 5.1 >= ) CentOS5.0 のみ…
- 2.0 ( PHP 5.4 >= )
結構流行ってる
1.1 → 2.0 でPHPのいいところが取り込まれた
beta で Q/A
- 使えるの?→納品近いならやめとけ
- リリース直近では?→メンテし続けれるならいいんじゃない
使ってみた
去年末からαを使っていた。
いいところは?
やってみます。(デモ)
http://goo.gl/729eMq → https://github.com/tanakahisateru/yii2-sample
2,3時間ぐらいの作業ろぐ
composer create-project でYii2の初期状態ができる
-
お問い合わせフォームがある
-
static ページもできている
-
PHPinfo もある
という状態 -
Gii のフラットジェネレータを使って webブラウザ上でモデルを作成すると、ActiveRecodeを作って、PHPコードも吐いてくれる
-
Model の中にバリデーターがある
-
IDE ( PHPStorm ) にフレンドリー
-
DataProviderにPagingやFilterなどを取り回すので、それが良しなにやって、管理画面がサクサクつくれる
-
これらが、管理側/表側、両方一度に作成できる
Composer のお話
みかかね ( @mkkn_info ) さん.
Composer
依存管理ツール。
- 無い時
- 同じコードが別々の箇所にあって、えらいことになる
- バージョン管理したくねぇ
- 構築とかとか
これらが解決する
composer.json
ライブラリ依存が書かれているので、これがあればcomposerでインストールできる
- composer.phar があればOK。
- composer.json
- composer.phar init で作成される
- 他のプロジェクトからコピペ
- ライブラリの調べ方: Packagist
- composer.phar require でcomposer.json に追記される
- composer.phar install でインストール
- vendors/autoload.php を reuqire すれば、使えるようになる
- composer.phar update でアップデートされる
- composer.lock にバージョン情報はいってるので、git add しとくといいよ
require dev で入れた場合、requireエントリとは別に入るので、開発環境と本番を切り分けることができる
packagist にない
phar / github とかとかでも composer 経由でインストール可
repositories エントリーに書けばいい。
repositories: {
type: vcs
url: https://github.com/...
}
とか
Version 情報
tag がそのままバージョン情報になる
dev-master: Master ブランチ
基本的には tag のほうが良い。ブランチは開発中のが含まれる。
---- 気力尽きたのでたとたどでメモ -----
Satis
Composer のリポジトリビルダー
PHPStorm
@msng さん
色々さわったらこれが一番いい
個人ライセンス $99
KeyRemap4MacBook : Mac のキーバインドをかなりいじる。 Space -> \ にしたり。