Upload
yoshihiro-ohsuka
View
1.852
Download
0
Embed Size (px)
Citation preview
whoami
• 大須賀 義浩
• PHPエンジニア@株式会社 Loco Partners
• twitter @oh_sky
• facebook http://fb.com/ohsky
第1話 PaaSは誰が為に
かつてのPHPどのレンタルサーバでも使用できる
お手軽なWeb開発言語
最近のPHPPaaSでは対応をあとまわしにされがち
冷遇されている感
AWS Lambda• Node.js, Java, Pythonのコードをアップロードするだけで実行できるPaaS的なサービス
• イベント駆動
• オートスケール
• リクエスト回数・実行時間(/100ms)で課金
AWS Lambdaで使用できる言語
• Node.js, Python, Java • Amazon Linuxでサポートされている言語(?)
第2話 サポート言語のなぞ
例えば、perlコマンドを呼び出してperlのスクリプトを実行可能 http://oh-sky.hatenablog.com/entry/2015/10/19/010516
Perl は使える
PHPは使えない
その他
FAQにはGo, Rubyを使用できると書いてあるが、
その他、sh, bash, awk, luaなどが使えた 使える言語は他にもありそう
(PHPは無かったが)
第3話 AWS Lambdaの愛し方
AWS Lambdaで PHPは使えないのか
• PHPコマンドをアップロードすれば良い
• Linux用のパッケージからPHPコマンドを拝借する
• あるいは自分でコンパイルしたPHPをアップロードする
AWS LambdaでPHPを動かす├── index.js ├── script.sh ├── hello.php ├── php/ │ ├── php │ └── php.ini └── lib/ ├── libicudata.so.50 ├── libicui18n.so.50 ├── libicuio.so.50 └── libicuuc.so.50
exports.handler = function(event, context) { var exec = require('child_process').exec;
exec('sh script.sh', function (error, stdout, stderr) { if(stdout){ console.log('stdout: ' + stdout); } if(stderr){ console.log('stderr: ' + stderr); } if (error !== null) { console.log('Exec error: ' + error); } context.succeed(stdout); }); };
Node.jsからシェルスクリプトを起動する
AWS LambdaでPHPを動かす├── index.js ├── script.sh ├── hello.php ├── php/ │ ├── php │ └── php.ini └── lib/ ├── libicudata.so.50 ├── libicui18n.so.50 ├── libicuio.so.50 └── libicuuc.so.50
<script.sh>
#!/bin/sh export LD_LIBRARY_PATH=`pwd`/lib:\ $LD_LIBRARY_PATH
./php/php hello.php
<hello.php>
<?php echo "PHP Version:" . PHP_VERSION . "\n"; echo "Hello world.\n";
共有ライブラリのPATHを通す
第6話 手作りのぬくもり
AWS LambdaでPHPを動かす├── index.js ├── script.sh ├── hello.php ├── php/ │ ├── php │ └── php.ini └── lib/ ├── libicudata.so.50 ├── libicui18n.so.50 ├── libicuio.so.50 └── libicuuc.so.50
./configure \ --prefix=/var/task/php \ --disable-all \ --enable-intl \ --enable-mbstring \ --enable-json \ --enable-session \ --enable-pdo \ --with-sqlite=shared \ --with-openssl \ && make
php.ini を読み込めるように
オプションは お好みで
(これらはCakePHP3を動かしたくて 付けたオプション)
AWS LambdaでPHPを動かす├── index.js ├── script.sh ├── hello.php ├── php/ │ ├── php │ └── php.ini └── lib/ ├── libicudata.so.50 ├── libicui18n.so.50 ├── libicuio.so.50 └── libicuuc.so.50
configureオプションによって 必要となるライブラリはここに置く。 これらは--enable-intlを付けたため必要。 このディレクトリへのライブラリPATHは、 script.sh で設定済み。
AWS LambdaでPHPを動かす$ zip -r hello-php.zip index.js lib php script.sh hello.php
zipにまとめてアップロード
実行
まとめ
• AWS LambdaでPHPを使えないことはない
• 公式でサポートしてほしい
• せっかくPHPが動いたので、Webアプリケーションを動かしたい
次回 AWS Lambdaは
PHP Web APPの夢を見るか?
http://lmn.connpass.com/event/23001/2015/11/27 20:00 On Air