SlideShare une entreprise Scribd logo
1  sur  44
Télécharger pour lire hors ligne
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
図にすると図にすると
代表的な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を物理パスに対応させたもの
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

Contenu connexe

Tendances

Streaming API で実現する クラウド ⇔ イントラ連携
Streaming API で実現する クラウド ⇔ イントラ連携Streaming API で実現する クラウド ⇔ イントラ連携
Streaming API で実現する クラウド ⇔ イントラ連携
Shinichi Tomita
 

Tendances (9)

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

Similaire à Web Environments

Abコマンドを使ったウェブアプリケーションのパフォーマンス計測
Abコマンドを使ったウェブアプリケーションのパフォーマンス計測Abコマンドを使ったウェブアプリケーションのパフォーマンス計測
Abコマンドを使ったウェブアプリケーションのパフォーマンス計測
Hidenori Goto
 
泥臭い運用から、プログラマブルインフラ構築(に行きたい)
泥臭い運用から、プログラマブルインフラ構築(に行きたい) 泥臭い運用から、プログラマブルインフラ構築(に行きたい)
泥臭い運用から、プログラマブルインフラ構築(に行きたい)
Akihiro Kuwano
 
Lesson01
Lesson01Lesson01
Lesson01
MRI
 
HttpとTelnetをつなぐ何か
HttpとTelnetをつなぐ何かHttpとTelnetをつなぐ何か
HttpとTelnetをつなぐ何か
ShigekiYamada
 
Webサーバの基礎知識【編集済み】
Webサーバの基礎知識【編集済み】Webサーバの基礎知識【編集済み】
Webサーバの基礎知識【編集済み】
Kikunaga Taishi
 

Similaire à Web Environments (20)

勉強会資料①
勉強会資料①勉強会資料①
勉強会資料①
 
Clrh 110716 wcfwf
Clrh 110716 wcfwfClrh 110716 wcfwf
Clrh 110716 wcfwf
 
サーバーを作ろう (毎週のハンズオン勉強会の資料)
サーバーを作ろう (毎週のハンズオン勉強会の資料)サーバーを作ろう (毎週のハンズオン勉強会の資料)
サーバーを作ろう (毎週のハンズオン勉強会の資料)
 
Study2study3 nslope
Study2study3 nslopeStudy2study3 nslope
Study2study3 nslope
 
Abコマンドを使ったウェブアプリケーションのパフォーマンス計測
Abコマンドを使ったウェブアプリケーションのパフォーマンス計測Abコマンドを使ったウェブアプリケーションのパフォーマンス計測
Abコマンドを使ったウェブアプリケーションのパフォーマンス計測
 
泥臭い運用から、プログラマブルインフラ構築(に行きたい)
泥臭い運用から、プログラマブルインフラ構築(に行きたい) 泥臭い運用から、プログラマブルインフラ構築(に行きたい)
泥臭い運用から、プログラマブルインフラ構築(に行きたい)
 
WindowsAzureの長所を活かすクラウド アプリ開発(PDF版)
WindowsAzureの長所を活かすクラウド アプリ開発(PDF版)WindowsAzureの長所を活かすクラウド アプリ開発(PDF版)
WindowsAzureの長所を活かすクラウド アプリ開発(PDF版)
 
OpenStack API
OpenStack APIOpenStack API
OpenStack API
 
Lesson01
Lesson01Lesson01
Lesson01
 
HTTP入門
HTTP入門HTTP入門
HTTP入門
 
2022_1210_WordpressMeetup.pdf
2022_1210_WordpressMeetup.pdf2022_1210_WordpressMeetup.pdf
2022_1210_WordpressMeetup.pdf
 
Restful Web Service Ch2
Restful Web Service Ch2Restful Web Service Ch2
Restful Web Service Ch2
 
HttpとTelnetをつなぐ何か
HttpとTelnetをつなぐ何かHttpとTelnetをつなぐ何か
HttpとTelnetをつなぐ何か
 
WebSocket / WebRTCの技術紹介
WebSocket / WebRTCの技術紹介WebSocket / WebRTCの技術紹介
WebSocket / WebRTCの技術紹介
 
夏サミ2014 クラウドとCIツールで変わるエンタープライズJava開発
夏サミ2014 クラウドとCIツールで変わるエンタープライズJava開発 夏サミ2014 クラウドとCIツールで変わるエンタープライズJava開発
夏サミ2014 クラウドとCIツールで変わるエンタープライズJava開発
 
LinAction Theme LPICの問題を解いてみる~ネットワーク編~
LinAction Theme LPICの問題を解いてみる~ネットワーク編~LinAction Theme LPICの問題を解いてみる~ネットワーク編~
LinAction Theme LPICの問題を解いてみる~ネットワーク編~
 
Cloud stack入門
Cloud stack入門Cloud stack入門
Cloud stack入門
 
P2Pって何?
P2Pって何?P2Pって何?
P2Pって何?
 
エンジニアのための勉強会 #4 『Serverless』
エンジニアのための勉強会 #4 『Serverless』エンジニアのための勉強会 #4 『Serverless』
エンジニアのための勉強会 #4 『Serverless』
 
Webサーバの基礎知識【編集済み】
Webサーバの基礎知識【編集済み】Webサーバの基礎知識【編集済み】
Webサーバの基礎知識【編集済み】
 

Plus de nasa9084

Plus de nasa9084 (14)

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

Web Environments