まいこーmemog

生きづらいとき人の言葉で生き返るので,自分も言葉にしてみる.[memo+blog]

Apache勉強したいので勉強する

こんにちは.まいこーです.

最近ラズパイでいろいろ触っていて近年の素晴らしいテクノロジー,サービス*1のおかげでそれっぽいことはたくさんできました.

 

しかし,正直な感想としては,

実際何やってるのか全くワカンねぇ...です.

 

なんでこの文字打ったらデータ送信できるの?なんでこっちのファイルに打ったら動かなくてあっちに打ったらうごくの?なんでなんで?

 

取り乱している時,師からお言葉をいただきました.

「基礎技術は簡単.組み合わせで複雑になってるし基本発想がそもそも隠れてしまっている.」

 

ということでデータ通信するのにネット使いたいけどネットの世界って怖いのでおとなしくお勉強します.とりあえずApacheの勉強ノート.

 

Apacheとは

Apache(アパッチ)はWebサーバーソフトウェアの一種です.シェアがめちゃくちゃ高く実質の業界標準と思ってもいいそうです.ちなみにWebサーバーはWebページのデータ倉庫です.

 

また約20年間オープンソースで公開されてどんどんバージョンアップされており信頼性が高く,拡張性もあり,複数のサーバーOS上で動かせる環境になっています.

 

Apacheを使う場面

Webページを公開したい,そのために必要なのがWebサーバー.ではWebサーバーは何かと言うと「ハードウェア+Webサーバーソフトウェア」です.

 

ハードウェアは例えばMacBookVAIO,ラズパイまでいろいろ選択肢があります.同じようにWebアプリケーションにも様々種類があり,その中の一つがApacheです.

 

Webサーバーとは

Web(World Wide Web)という文字や画像,動画等のコンテンツを簡単に扱えるサービスにおけるサーバー(供給者),それがWebサーバーです.

 

一方,このページをブラウザで見る私たち側はクライアント(依頼人,顧客)と言います.クライアントがこのページ見たいとリクエストし,Webサーバーがどうぞとページ情報を返してくれます(レスポンス).

f:id:maikocho:20180726112212p:plain

基本の発想,超簡単じゃんか...

 

ちなみにサーバーが返すデータは目に見えるとは限りません.

基本ネットでページを見るというと,htmlファイル等々は見せるための情報のことだけが頭に浮かびがちですがデータを受け取るということはローカルのメモリ上にデータを保持するということです.

 

視覚的に見えないデータが含まれてもおかしくありません.ここにクラッキング等の危険があるということです.ポインタの概念やプログラム実行のイメージがないとわかりにくいので詳細は割愛.

以下のページが参考になります.

https://eng-entrance.com/buffer-overflow#i-4

 

話を戻します.

Webサーバーのお仕事とApache

 Webサーバーはリクエストに応じてレスポンスを返すことはわかったけど,もしこんな状況になったらどうなるでしょう.

f:id:maikocho:20180728105504p:plain

サーバーさん英語がわからず困っちゃってます.

 

こんなことにならないように,やりとりのルールとしてHTTP(HyperText Transfer Protocol)が定められています.このHTTPのルールでやりとりの処理ができるプログラムがWebサーバーソフトウェア,つまりここではApacheです.

 

WebサーバーとURL

クライアントが送るリクエストはURL(Uniform Resource Locator)の形になっています.URLはネット上の情報の位置情報を示すための情報技術,または位置情報そのものと思ってしまっても大丈夫そうです.

 

URLは3つの要素で構成されています.通常は

プロトコル://ドメイン名/ディレクトリパス等ファイルの場所」

と言った具合になっています.

 

プロトコルはさっきのHTTPのような基本ルールです.この手順で処理しようねという情報を与えています.

 

ドメインはインターネット上の住所表示と言えます.しかし,ネット上の住所と言えばIPアドレスです.ドメイン名とIPアドレスDNS(Domain Name System)という仕組みで対応づけられています.

 

ここでは例としてexample.comのページを要求する場合を見ます.3ステップで住所(IPアドレス)特定がされます.

 

1.「example.com」のIPアドレスをルートDNSサーバーに聞く.

→「.com」のDNSサーバーに聞くように要求される.

2.「example.com」のIPアドレスを「.com」のDNSサーバーに聞く.

→「example.com」のDNSサーバーに聞くように要求される.

3.「example.com」のIPアドレスを「example.com」のDNSサーバーに聞く.

→「example.com」のIPアドレスを得る.

f:id:maikocho:20180728114042p:plain

これで欲しい情報の置き場に来ることができました.

 

ディレクトリパス等ファイルの場所というのは,情報置き場の特定ファイルを指すための情報です.お店に行くだけでは買い物できない.ある商品をくださいと指定している感じです.

 

クエリパラメータ

URLにはたまに「?category=a」のような文字列がついていることがあります.これをクエリ(検索条件)パラメータと言います.この例なら「categoryという変数にaをいれてね」ということです.

 

この情報はクライアント側から送る,直接Webサーバーが処理する情報ということになります.便利ながらセキュリティホールにもなる機能で,注意深く対策がなされるようです.

 

まとめ

今回はWeb上の仕組みにおけるApacheの役割,立ち位置を把握する内容を勉強できました.

次からは実際のApache立ち上げ等について勉強していきます.

*1:IFTTTとかLINEDeveloperのいろんな機能とか