PSGIへの誘い
Upcoming SlideShare
Loading in...5
×

Like this? Share it with your network

Share
  • Full Name Full Name Comment goes here.
    Are you sure you want to
    Your message goes here
    Be the first to comment
No Downloads

Views

Total Views
5,654
On Slideshare
4,170
From Embeds
1,484
Number of Embeds
8

Actions

Shares
Downloads
2
Comments
0
Likes
3

Embeds 1,484

http://www.perl-beginners.org 1,407
https://cybozulive.com 53
http://firecracker.ytnobody.net 10
http://www.blogger.com 3
http://webcache.googleusercontent.com 3
http://paradeless29.kassuri.com 3
http://beginners429.rssing.com 3
http://translate.googleusercontent.com 2

Report content

Flagged as inappropriate Flag as inappropriate
Flag as inappropriate

Select your reason for flagging this presentation as inappropriate.

Cancel
    No notes for slide

Transcript

  • 1. PSGIへの誘い~CGIと比較して利便性を実感~ Perl Beginners #2 Lightning Talk @ytnobody
  • 2. 対象とねらい これからCGIについて学ぼうとしている方いまCGIについて学んでいる方に言いたい。「ぜひPSGIを触ってみてくれ!」と。
  • 3. PSGIとは?● Webサーバレイヤを抽象化するための仕様。 ● http://d.hatena.ne.jp/keyword/PSGI● Plack ● PerlでのPSGIリファレンス実装● 類似品(というか大体は兄貴分みたいなの) ● Ruby – Rack ● Python – WSGI
  • 4. よくわかんねえw
  • 5. 要するにPSGIというのは CGIと同じようにwebページを動的に生成する技術です
  • 6. シンプルなCGI#!/usr/bin/env perluse strict;### HTTPレスポンスヘッダprint “Content-type: text/htmlnn”;### HTTPレスポンスボディprint <<EOF;<html><body> <h1>Hello, world!</h1></body></html>EOF
  • 7. CGI.pmをつかってみる#!/usr/bin/env perluse strict;use CGI;### CGIインスタンス生成my $cgi = CGI->new;### HTTPレスポンスヘッダprint $cgi->header( -type => text/html );### HTTPレスポンスボディprint <<EOF;<html><body> <h1>Hello, world!</h1></body></html>EOF
  • 8. PSGIならこうなる● 下記ファイルをapp.psgiとして保存。use strict;my $body = <<EOF;<html><body> <h1>Hello, world!</h1></body></html>EOFsub { [ 200, [ Content-Type => text/html ], [ $body ] ]};
  • 9. PSGI-appの基本use strict; ← shebang(#!/usr/bin/env perl)は無し。my $body = <<EOF;<html><body> <h1>Hello, world!</h1></body></html>EOFsub { [ 200, [ Content-Type => text/html ], [ $body ] ]};
  • 10. PSGI-appの基本use strict;my $body = <<EOF;<html><body> <h1>Hello, world!</h1></body></html>EOFsub { [ 200, [ Content-Type => text/html ], [ $body ] ]};← PSGI-appは、コードリファレンス(sub {...})を返す。
  • 11. PSGI-appの基本use strict;my $body = <<EOF;<html><body> <h1>Hello, world!</h1></body></html>EOFsub { [ 200, [ Content-Type => text/html ], [ $body ] ] ← コードリファレンスは、配列リファレンスを返す。};
  • 12. PSGI-appの基本use strict;my $body = <<EOF;<html><body> <h1>Hello, world!</h1></body></html>EOFsub { [ 200, ← レスポンスコード。 [ Content-Type => text/html ], ← HTTPレスポンスヘッダ [ $body ] ← HTTPボディ ]};
  • 13. CGIのデプロイ(?)● httpデーモン(Apacheとか)側での設定 ● 特定のパス以下にリクエストが来た場合にCGIを実行 する指定 ● 上記で指定されたパスに相当するディレクトリにプログ ラムを設置 ● プログラムに実行権限を与える(パーミッションの設定)
  • 14. PSGI-appのデプロイ● あらかじめサーバにPlackをインストールしておく ● cpanm Plack● plackupコマンドでアプリケーションサーバを起動 ● plackup ./app.psgi
  • 15. デプロイの相違点● app.psgiに実行権限を与える必要はない● apacheなどのhttpデーモンを必要としない
  • 16. DEMOPSGI-appのライブコーディング & デプロイ
  • 17. PSGIを導入できる条件● SSHなどでシェルを実行できる環境であること – いわゆるレンタルwebスペースだと、この点はクリアできない● プロセスを常駐させても怒られないこと – いわゆるレンタルwebスペースだと(ry● (必須じゃないけど推奨)perlbrew+cpanmが使えること – いわゆるレン(ry
  • 18. オススメのデプロイ先● VPS ● さくらVPS ● WebARENA ● などなど。。。● お手持ちのMac● 自宅サーバ ● 各種LinuxやBSDなど● PaaS ● DotCloud – 但しデプロイ方法が独特。慣れると楽。
  • 19. まとめ● PSGIは難しくない ● CGIより簡単● デプロイするにはそれなりの環境が必要。 ● CGIみたいにレンタルスペースじゃ動かせない ● VPS/自宅サーバ/MacBookあたりがあれば楽々。● 今から学習するなら、断然PSGI ● CGIについて学習するのがダメなんじゃなくて、先に PSGIを触っておいたほうが、動くものを手早く作れる。 ● PSGIならWAFも色々あるよ! ● まずは恐れずにPSGIを触ろうよ!
  • 20. さいごに Twitterで #perl 付けて 「教えてください」っていうと、意外と教えてくれる人がいるかもしれないので やってみるといいんじゃないでしょうか。
  • 21. ご清聴ありがとうございました