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

PSGIへの誘い

on

  • 5,294 views

 

Statistics

Views

Total Views
5,294
Views on SlideShare
3,813
Embed Views
1,481

Actions

Likes
3
Downloads
2
Comments
0

8 Embeds 1,481

http://www.perl-beginners.org 1404
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
More...

Accessibility

Categories

Upload Details

Uploaded via as Adobe PDF

Usage Rights

© All Rights Reserved

Report content

Flagged as inappropriate Flag as inappropriate
Flag as inappropriate

Select your reason for flagging this presentation as inappropriate.

Cancel
  • Full Name Full Name Comment goes here.
    Are you sure you want to
    Your message goes here
    Processing…
Post Comment
Edit your comment

PSGIへの誘い PSGIへの誘い Presentation Transcript

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