SlideShare a Scribd company logo
WEBWEB
EnvironmentsEnvironments
nasa9084nasa9084
自己紹介自己紹介
名前
北村壮大 : Masahiro Kitamura
HN : nasa9084
所属
北海道大学
工学部
情報エレクトロニクス学科
コンピュータサイエンスコース
情報認識学研究室
ServerServer
何らかのサービスを提供するソフトウェア何らかのサービスを提供するソフトウェア
Web Server
Application Server
Mail Server
Database Server
FTP Server
Proxy Server
今回はHTTP ServerとApplication Serverが登場
Web ServerWeb Server
クライアントからのHTTPリクエストに対してHTTPレスポンスでリソースを返す
→HTTP Server
図にすると図にすると
Web Environments
代表的なHTTP Server代表的なHTTP Server
Application ServerApplication Server
アプリケーションを呼び出して仕事をしてくれる
HTTPの復習HTTPの復習
クライアントがリクエストメッセージをサーバに送る
サーバがレスポンスメッセージをクライアントに返す
メッセージメッセージ
ヘッダとボディで構成される
テキスト
CGICGI
Common Gateway Interface
Web Serverでプログラムを動かす仕組み
動作動作
リクエストを受け取る1.
CGIプログラムを起動する2.
CGIプログラムが結果を返す3.
クライアントにレスポンスを返す4.
標準入出力標準入出力
HTTPリクエストのボディは標準入力へ
標準出力は そのまま クライアントに送られる
環境変数(environment variable)環境変数(environment variable)
OS上のタスクがデータを共有するための変数
QUERY_STRING
クライアントが要求したURIのうち、検索文字列部
CONTENT_LENGTH
クライアントからのHTTPリクエストのボディ部の長さ
PATH_INFO
CGIプログラムに対応する仮想パスの後ろに続いた余分のパス
PATH_TRANSLATED
PATH_INFOを物理パスに対応させたもの
Web Environments
WSGIWSGI
Web Server Gateway Interface
Python WebアプリケーションとWeb Serverを接続するための標準仕様
今は昔今は昔
Python Webアプリケーションの実装方法Python Webアプリケーションの実装方法
CGI
FastCGI
mod_python
統一したい!
WSGIの誕生WSGIの誕生
動作動作
リクエストを受け取る1.
アプリケーションのエントリポイントをcallする2.
アプリケーションの返り値を使ってレスポンスを作る3.
callcall
WSGIアプリケーションはcallableオブジェクトを持つ
→コレを呼び出す
callableオブジェクトcallableオブジェクト
callable == 呼び出し可能
hoge()のような形
関数
__call__が定義されたクラス
アプリケーション引数アプリケーション引数
環境変数(env)1.
start_responseオブジェクト2.
start_responseオブジェクトstart_responseオブジェクト
ステータスコードやHTTPレスポンスヘッダを入れる
→コレをもとにサーバがレスポンスをつくる
ボディボディ
iterableオブジェクトの形で返す
iterableiterable
iterable == 反復可能
list
tuple
dict
RackRack
Ruby用の仕様Ruby用の仕様
Rubyの人が思ったRubyの人が思った
"WSGIいいな。。。""WSGIいいな。。。"
Rackの誕生Rackの誕生
動作動作
リクエストを受け取る1.
アプリケーションのエントリポイントをcallする2.
アプリケーションの返り値でレスポンスを作る3.
アプリケーション引数アプリケーション引数
環境変数(env)
アプリケーションの返り値アプリケーションの返り値
ステータスコード(status)
HTTPヘッダ(headers)
ボディ(body)
→3つまとめて配列にして返す
PSGIPSGI
Perl Web Server Gateway Interface
Perl用Perl用
Perlの人が思ったPerlの人が思った
"WSGIとかRackとかいいな。。。""WSGIとかRackとかいいな。。。"
PSGIの誕生PSGIの誕生
動作動作
大体Rackと同じ大体Rackと同じ
Web三層構成Web三層構成
THANK YOUTHANK YOU

More Related Content

PDF
alieaters_tokyo_20200325_yoshimura
Masaki Yoshimura
 
PDF
JSONでメール送信 | HTTP API Server ``Haineko''/YAPC::Asia Tokyo 2013 LT Day2
azumakuniyuki 🐈
 
PDF
コンピューターネットワーク入門
Yusuke Miyazaki
 
PPTX
再入門、サーバープッシュ技術
Shin Sekaryo
 
PDF
20111207 11 aws-meister-ses-public
Amazon Web Services Japan
 
PDF
国内レンタルサーバとAWSで負荷テストしてみました。
株式会社雲屋ネットワーク
 
PDF
AWS Simple Email Service詳細 -ほぼ週刊AWSマイスターシリーズ第11回-
SORACOM, INC
 
PDF
Lolipop server
Jun Chiba
 
alieaters_tokyo_20200325_yoshimura
Masaki Yoshimura
 
JSONでメール送信 | HTTP API Server ``Haineko''/YAPC::Asia Tokyo 2013 LT Day2
azumakuniyuki 🐈
 
コンピューターネットワーク入門
Yusuke Miyazaki
 
再入門、サーバープッシュ技術
Shin Sekaryo
 
20111207 11 aws-meister-ses-public
Amazon Web Services Japan
 
国内レンタルサーバとAWSで負荷テストしてみました。
株式会社雲屋ネットワーク
 
AWS Simple Email Service詳細 -ほぼ週刊AWSマイスターシリーズ第11回-
SORACOM, INC
 
Lolipop server
Jun Chiba
 

What's hot (9)

PDF
Vyatta and Virtualization 仮想環境でのVyatta
Kentaro Ebisawa
 
PDF
Perl and Email #2/Kansai.pm第14回ミーティング@京都
azumakuniyuki 🐈
 
PDF
Streaming API で実現する クラウド ⇔ イントラ連携
Shinichi Tomita
 
PDF
Http
Net Kanayan
 
PDF
AWS S3 ストレージコストの最適化
LeonidKryslov
 
PDF
これから利用拡大?WebSocket
AdvancedTechNight
 
PDF
20120303 jaws summit-meister-05_cloud_front-r53
Amazon Web Services Japan
 
PDF
PHPからJavaへ乗り換えた。そんな昔話をしよう
優介 黒河
 
PDF
MogileFS をバックエンドとしたPrivate S3の作り方 【後半】API 編
hiboma
 
Vyatta and Virtualization 仮想環境でのVyatta
Kentaro Ebisawa
 
Perl and Email #2/Kansai.pm第14回ミーティング@京都
azumakuniyuki 🐈
 
Streaming API で実現する クラウド ⇔ イントラ連携
Shinichi Tomita
 
AWS S3 ストレージコストの最適化
LeonidKryslov
 
これから利用拡大?WebSocket
AdvancedTechNight
 
20120303 jaws summit-meister-05_cloud_front-r53
Amazon Web Services Japan
 
PHPからJavaへ乗り換えた。そんな昔話をしよう
優介 黒河
 
MogileFS をバックエンドとしたPrivate S3の作り方 【後半】API 編
hiboma
 
Ad

Similar to Web Environments (20)

PPTX
勉強会資料①
真亮 坂口
 
PPTX
簡単なHTTPサーバの作成
Panu Avakul
 
PPTX
サーバーの初歩的な話セミナー@大阪20120901
Masayuki Abe
 
PDF
サーバの種別を理解しよう
Hiroyuki Ogawa
 
PDF
1 Linux入門 第6章 Webサーバーの概要
Enpel
 
PPTX
ビジネス職新卒向け Web基礎研修
Taku Unno
 
PPTX
OSGi Applications(Open Alpha) for WAS7.0
Nobuhiro Sue
 
PDF
OSC 2010 Tokyo/Fall MSセッション
Masaki Takeda
 
PPTX
エンジニアという職業について
Hisatoshi Kikumoto
 
PDF
今さら聞けないWebサーバの基本知識と選び方
Endoh Shingo
 
PPT
Lesson01
MRI
 
PPT
Webサーバの基礎知識【編集済み】
Kikunaga Taishi
 
PPT
Web study
chibita
 
PDF
NHNグループ合同勉強会 ライブドア片野
livedoor
 
PDF
JavaScript時代のJava #kansumiB7 #kansumi
Yusuke Yamamoto
 
PPTX
第2回勉強会資料 岩本(配布用)
Takahisa Iwamoto
 
PDF
Perl Ocean
Kazuki KOMORI
 
PPTX
Firebug×smart release20120904
Masayuki Abe
 
PPT
Albatross
Hiroaki Kubota
 
PPTX
PHP 開発環境構築 - Windows 編 -
Masaki Takeda
 
勉強会資料①
真亮 坂口
 
簡単なHTTPサーバの作成
Panu Avakul
 
サーバーの初歩的な話セミナー@大阪20120901
Masayuki Abe
 
サーバの種別を理解しよう
Hiroyuki Ogawa
 
1 Linux入門 第6章 Webサーバーの概要
Enpel
 
ビジネス職新卒向け Web基礎研修
Taku Unno
 
OSGi Applications(Open Alpha) for WAS7.0
Nobuhiro Sue
 
OSC 2010 Tokyo/Fall MSセッション
Masaki Takeda
 
エンジニアという職業について
Hisatoshi Kikumoto
 
今さら聞けないWebサーバの基本知識と選び方
Endoh Shingo
 
Lesson01
MRI
 
Webサーバの基礎知識【編集済み】
Kikunaga Taishi
 
Web study
chibita
 
NHNグループ合同勉強会 ライブドア片野
livedoor
 
JavaScript時代のJava #kansumiB7 #kansumi
Yusuke Yamamoto
 
第2回勉強会資料 岩本(配布用)
Takahisa Iwamoto
 
Perl Ocean
Kazuki KOMORI
 
Firebug×smart release20120904
Masayuki Abe
 
Albatross
Hiroaki Kubota
 
PHP 開発環境構築 - Windows 編 -
Masaki Takeda
 
Ad

More from nasa9084 (14)

PDF
Webエンジニアのためのはじめてのredis.pdf
nasa9084
 
PDF
Webエンジニアのためのはじめてのredis
nasa9084
 
PDF
webエンジニアのためのはじめてのredis
nasa9084
 
PDF
Hubotをはじめる
nasa9084
 
PDF
Efsta student session
nasa9084
 
PDF
LT!
nasa9084
 
PDF
初めてのSQL
nasa9084
 
PDF
Shell入門
nasa9084
 
PDF
DIVE INTO /regexp?/
nasa9084
 
PDF
Flowchart w/program structure
nasa9084
 
PDF
HTTPのお話
nasa9084
 
PDF
エディタ戦争のお話
nasa9084
 
PDF
Linuxディストリビューションのお話
nasa9084
 
PDF
Introduction of Programming language
nasa9084
 
Webエンジニアのためのはじめてのredis.pdf
nasa9084
 
Webエンジニアのためのはじめてのredis
nasa9084
 
webエンジニアのためのはじめてのredis
nasa9084
 
Hubotをはじめる
nasa9084
 
Efsta student session
nasa9084
 
初めてのSQL
nasa9084
 
Shell入門
nasa9084
 
DIVE INTO /regexp?/
nasa9084
 
Flowchart w/program structure
nasa9084
 
HTTPのお話
nasa9084
 
エディタ戦争のお話
nasa9084
 
Linuxディストリビューションのお話
nasa9084
 
Introduction of Programming language
nasa9084
 

Web Environments