「webで何か」作るブログ

35歳という遅すぎるスタートをなんとかする為のブログです。基本的に自分にとっての役立ちメモ。

Webサーバーの仕組みをざっくりまとめておく

初めてWebサーバを構築するという経験をしたことで、いろいろと分かった部分があったのでまとめておきます。
今後、周囲にwebサーバーってなんなのか?を説明しなければならないことも有るでしょうし。

聞ける相手がいない中での構築はそれなりに大変でしたが、得るものも大きかったです。

なお、この記事の内容は私の個人的解釈ですので、正解は職場の先輩、書籍やgoogle先生などに聞いてください。

Webサーバーを構成するハードウェア

サーバーマシンと呼ばれたりするので、何か専用機器を思い浮かべがちなんですけど実はほとんど普通のPCと同じです。
普段私たちが使うPCと違う点は、記憶容量と処理速度に特化している点です。

一般家庭のPCは色々と用途が色々とありますよね。

  • 写真や動画を加工したり保存したりする
  • 音楽を聴く、編集する
  • オフィスソフトを使う
  • ネットサーフィン

など、いろいろな事に使われます。
すると当然、いろいろな能力がバランスよく使えるようにしなければいけません。
ハードウェアで言えば、スピーカーだってディスプレイだって必要です。

反対に、サーバーの役割は求められた処理をしてファイルを返送する、この一点です。
なので、能力値の大半を記憶容量、処理速度に割り当てることが可能になります。
ディスプレイもスピーカーもいりません。

 

実際は一般用途のPCでも問題なくサーバーとして利用可能です。
ここ数年で発売されたものであれば十分な記憶容量がありますし、処理速度も上がっているので、相当なアクセスや重い処理をするプログラムを仕込んでいるのでなければ実用可能です。

 

今回、業務で構築したサーバも余り物の事務PCです。

まとめ=サーバーとPCのハードウェアに違いはない。

 

Webサーバーのソフトウェア

サーバー管理者などになる予定がないのなら、ハードウェアは乱暴に言ってしまえば気にしなくていい程度の話です。

反対に、ソフト面については知っておくと結構役に立つのではないかと思います。
バックエンドの処理を担当する場合は特にです。
知っておくとさまざまな面で理解が進みやすくなると思います。

まずはLinix

サーバーに少しでも興味を持った時に必ず聞く単語がこの「Linux」。
このLinuxはなんなのかという話をこれまた乱暴に言ってしまうと、コンピューター本体とOSの間に立ってさまざまな処理を引き受けてくれるプログラムです。

そういった存在全般をカーネルといいます。カーネルwindowsでもMacでも搭載されています。
カーネルとPCについてはざっくりとこんなイメージになります。

  1. キーボード押下
  2. Linuxが感知
  3. LinuxからOSへ通知
  4. 通知内容をOSが感知
  5. OSがLinuxに向けて、ディスプレイの表示内容を変更するよう依頼

 

まとめ=linuxカーネルカーネルは入出力の受付や連絡、記録をする。

次にOS。

続いて、OSのお話。

カーネルがコンピューター本体との橋渡しをしてくれるものとするならば、OSは人とカーネルの間に立って様々な便利なことを行なってくれるソフトでしょうか。

フォルダを作成するケースでいうと、このような処理が行われています。

  1.  OSにて「フォルダを作成」を入力
  2. OSからカーネルに対して、フォルダ名や権限などの情報をセットに、記録を依頼
  3. カーネルで、メモリやハードディスクを使用して領域確保と記録を実行
  4. 作成されたフォルダを、OSが見た目に反映

CentOSDebianUbuntuなどは全てLinuxカーネルを利用するOSです。

そして、LAMP

LAMPはそれぞれどういった関係性なのか?すっとわからなかったのですが、今回サーバーについて学んだおかげで少し理解することができました。

LAMPとはLinuxApacheMySQLPHPをインストールしたもで、それぞれは独立したソフトウェアなんだけど、相互にやり取りができるようになっています。

データベースを使うものであれば処理の流れはこんな感じになります。

  1. ApacheがHTTPリクエストを受付け
  2. PHPが使用されているようであればPHPへ処理を依頼
  3. SQLが使用されていれば、PHPからデータベースへ処理を依頼
  4. データベースで処理したデータをPHPへ返送
  5. PHPはデータベースから受け取った情報を反映してHTMLをApacheへファイルを返送

webサーバーって何だ?と問われれば、こんな感じに答えるでしょうか。

今回は結構長々と書いてしまいましたが、ご指摘があれば是非お願い致します!

それでは。