サーバとはなんぞや?
2014.07.01 (Tue) : ウェブとパソコン
ここ1カ月ほど新しいサーバの構築&学習、サイト移転、WordPress高速化など、めんどくさい作業ばかり行っていて、ひたすら試行錯誤な日々を過ごしている為、このブログの更新がまったくできていない状況に陥っている。
新しい物事をゼロから始めようとすると、必ずと言っていいほどいつもさまざまな問題に直面する。それを一つ一つ解決しながら前に進めていくのだが、このサーバに関する問題は、ネットで検索してもとにかく情報が少なく、またひじょうに専門的で難しい内容が多いので苦労する。
特にOSやアプリケーションの組み合わせやバージョンの違いなどによる環境の相違がある為、自分が直面している問題への完璧な解答はめったにみつからず、他の環境での解答を元に正解を予想し、トライ・アンド・エラーを繰り返しながら探しだしてゆくという作業が多くなる。なので、たった一つの問題をクリアするのに2~3日から場合によっては1週間という時間を費やしてしまうこともあるのだ。
ただ一般の人は、サーバと言ってもなんとなしか理解していても、具体的にはまったくわからんて人が多いと思う。と言う私もこのサーバを含むネットワークというジャンルに関しては専門外で、しかも苦手意識があるので、自分への備忘録も兼ねてサーバについて簡単に説明してみようと思う。
サーバ(サーバーとも呼ばれる)とは、簡単に言うといわゆるサーバ機能を有するプログラムのことで、おおまかにはサーバ用OS(オペレーティングシステム)と組み込まれるサーバ用ソフトウエアが入ったコンピュータの総称みたいなものである。
サーバ用OSは、Red Hat Enterprise LinuxやCentOSなどのLinux(リナックス)系とFreeBSDなどのBSD(ビーエスディー)系と言うのが有名なんだけれど、たぶん今の主流はLinux系OSかな。他にもSolarisやMacOS X Server などのUNIX系やWindows ServerのWindows系というのもある。主なLinux系OSは下記。
Red Hat系Linux
CentOS・・・商用のRed Hat Enterprise LinuxのクローンOS
Fedora・・・Red Hat Enterprise Linuxの開発のベースになるOS
Debian系Linux
Debian GNU/Linux・・・コミュニティによって作られる自由なOS
Ubuntu・・・Debian GNU/LinuxをベースとしたOS
サーバ用OSの特徴としてマルチユーザーシステムといって、同時に複数のユーザーが利用できるように作られているというのもポイント。
ちなみにOSというのは、たとえば個人用コンピュータで言えば「Windows」、スマホやタブレットで言えば「iOS」や「Android」とよばれるものの事。サーバ用コンピュータの場合はこれが「Linux」になるというわけだ。
ただしサーバ用OSは基本的にWindowsやiOSのように画面上のアイコンやボタンで操作するようなGUI(グラフィカルユーザインタフェース)ではなく、いわゆる黒い画面と呼ばれる文字だけの黒画面にコマンドで操作するCUI(キャラクタユーザインタフェース)(もしくはCLI(コマンドラインインタフェース)とも呼ばれる)になる。わかりやすい例として、コマンドプロンプト(Windows)やターミナル(Mac)などGUI内のCUI環境や大昔のパソコンOSのCP/MやMS-DOSなんかもCUIだ。
≫ 黒い画面の画像
CUIのメリットとして、グラフィカル(画像など)な情報がない分、CPUの処理速度やメモリ容量、プログラムのデータ量などが少なくて済むということが挙げられる。それによりネットワークへの負荷が押さえられ、リモート操作が低回線でも容易にできるというのがサーバとして利用されている理由の一つだろう。
Windowsの場合、複数のソフトを立ち上げて、処理を大量に行うとパソコンが固まったり重くなったりする。それはグラフィカルな処理も伴う為、CPUの処理速度やメモリ容量、プログラムのデータ量が多く必要だからだ。
サーバのソフトウエアは、Windowsのソフトとは違い、あくまでもデータ処理のみが目的なので、操作はすべていわゆるプログラム(文字による命令)で制御され、やはり文字で処理される。だからサーバはいくつものデータを連続して高速に処理できるのだ。
逆に言えば黒い画面なので、サーバはOSだけでは特に何もできない。つまりサーバを機能させるにはサーバ用ソフトウエアが必要になる。
具体的には、ウェブサイトのデータを処理をさせるWebサーバ(HTTPサーバ)、メールサービスを行うメールサーバ(MTA)、データベースの処理を行うデータベースサーバ(DBMS)、ファイルの転送を行うFTPサーバ、ファイル共有を行うファイルサーバ、ドメイン名とIPアドレスを結びつけるDNSサーバ(ネームサーバ)など。語尾にサーバと付くのはたぶんサーバ用のソフトだからかな?
主なWebサーバソフト
Apache HTTP Server、Nginx、Microsoft IIS
主なWebサーバ用スクリプト言語
PHP、Perl、Python、Ruby、JSP、ASP
主なデータベースサーバ(DBMS)ソフト
MySQL、PostgreSQL
主なメールサーバ(MTA)ソフト
Postfix、sendmail、qmail
例えばウェブサイト(ホームページ)を公開するには、ApachなどのWebサーバが必要で、そこでHTMLとJavaScript以外のプログラムを動かすにはPHPやPerlなどのスクリプト言語(プログラミング言語)というのを組み込む必要がある。また、データベースでデータのやりとりをするには、MySQLなどのデータベースサーバが必要になると言った感じ。
ただこれらは一つづつインストールする訳ではなく、サーバ用のLinuxOSソフトには、LAMP(ランプ)などのパッケージがセットになって配布されていることが多い。
LAMPとはサーバOSのLinux、WebサーバのApach(アパッチ)、データベースのMySQL(マイエスキューエル)、スクリプト言語のPHP(ピー・エイチ・ピー)、Perl(パール)、Python(パイソン)の頭文字からなる造語。LAMPのメリットとしては、すべて無償のオープンソース(ソースコードを公開)の組み合わせということ。その為、開発者が世界中にたくさんいるので機能が常に改善され優れているというのが特徴。
Linux
Apach
MySQL
P for PHP・Perl・Python
つまり『 LAMP環境+メール+FTP+DNS 』のサーバが構築できれば、ウェブサイトとメールという基本的なサーバが稼働できる。

DNSサーバは、ドメイン名とIPアドレスの関係を調べてつなげる。たとえばこのドメインのURLはこのサーバのIPだよーって感じで教える機能。
Webサーバは、HTMLやJavaScriptなどのソースコード(プログラム)をファイルとして保存し、ブラウザなどからHTTP(Hypertext Transfer Protocol)という通信手順で要求があれば即座に処理しデータを引き渡す。またそこにPHPなどのプログラムが書かれていたら、PHPがそれを処理した結果を引き渡したり、MySQLなどデータベース内のデータのやりとりを要求されれば、MySQLが連携して処理するといった感じ。

FTPサーバは、FTPソフトを介してFTP(File Transfer Protocol)という通信手順を使ってWebサーバへウェブサイトの元になるファイルの送受信を行う機能。
メールサーバなら管理するメールアドレス宛のメールを受信しサーバ内に保存、要求されれば引き渡す。逆に送信する場合は、宛先のメールアドレスをネット上から探しだして確実に相手のメールサーバへ届けるといった感じ。
以上、まとめると「サーバ機能」とは、データ(ファイル)を文字による命令で保存したり処理したりする機能の事で、つまりそれ専用のコンピュータの事をサーバだと理解すればいいと思う。
今回、サーバとはなんぞや?という解説をだいぶわかりやすく書いたつもりだけれど、うーんやっぱ難しいよね(笑)。
ちなみに最初の写真の本は、実際に仮想マシンによるLinuxの学習環境を用意する手順や最低限の重要な知識を学ぶ為の初心者向けの解説書。「たった2日でわかるLinux」と書いてあるが、たぶん完全な初心者だと実際は「たった2日でなんとなくわかるLinux」って感じかも。でも初心者でもわかりやすい内容。

たった2日でわかるLinux―Cent OS 6.4対応
Linuxの仮想マシンが用意されているから、自宅のマシンで簡単・安全に学習環境を整えられる!(仮想マシンのダウンロードサービス付き)。Linuxを始める上での最重要項目を厳選してあるから、たった2日間で学習できる!だから…はじめてLinuxを触る人も、今までLinuxの学習に挫折したことがある人も、これならLinuxの基本が身につきます!
では、また
※記事の内容には万全を期して作成しておりますが、あくまでも個人的な解釈によるものですので、もしかしたら誤り等があるかもしれませんので、お気づきの方はコメントなどで教えて頂ければありがたいです。
新しい物事をゼロから始めようとすると、必ずと言っていいほどいつもさまざまな問題に直面する。それを一つ一つ解決しながら前に進めていくのだが、このサーバに関する問題は、ネットで検索してもとにかく情報が少なく、またひじょうに専門的で難しい内容が多いので苦労する。
特にOSやアプリケーションの組み合わせやバージョンの違いなどによる環境の相違がある為、自分が直面している問題への完璧な解答はめったにみつからず、他の環境での解答を元に正解を予想し、トライ・アンド・エラーを繰り返しながら探しだしてゆくという作業が多くなる。なので、たった一つの問題をクリアするのに2~3日から場合によっては1週間という時間を費やしてしまうこともあるのだ。
ただ一般の人は、サーバと言ってもなんとなしか理解していても、具体的にはまったくわからんて人が多いと思う。と言う私もこのサーバを含むネットワークというジャンルに関しては専門外で、しかも苦手意識があるので、自分への備忘録も兼ねてサーバについて簡単に説明してみようと思う。
サーバ(サーバーとも呼ばれる)とは、簡単に言うといわゆるサーバ機能を有するプログラムのことで、おおまかにはサーバ用OS(オペレーティングシステム)と組み込まれるサーバ用ソフトウエアが入ったコンピュータの総称みたいなものである。
サーバ用OSは、Red Hat Enterprise LinuxやCentOSなどのLinux(リナックス)系とFreeBSDなどのBSD(ビーエスディー)系と言うのが有名なんだけれど、たぶん今の主流はLinux系OSかな。他にもSolarisやMacOS X Server などのUNIX系やWindows ServerのWindows系というのもある。主なLinux系OSは下記。
Red Hat系Linux
CentOS・・・商用のRed Hat Enterprise LinuxのクローンOS
Fedora・・・Red Hat Enterprise Linuxの開発のベースになるOS
Debian系Linux
Debian GNU/Linux・・・コミュニティによって作られる自由なOS
Ubuntu・・・Debian GNU/LinuxをベースとしたOS
サーバ用OSの特徴としてマルチユーザーシステムといって、同時に複数のユーザーが利用できるように作られているというのもポイント。
ちなみにOSというのは、たとえば個人用コンピュータで言えば「Windows」、スマホやタブレットで言えば「iOS」や「Android」とよばれるものの事。サーバ用コンピュータの場合はこれが「Linux」になるというわけだ。
ただしサーバ用OSは基本的にWindowsやiOSのように画面上のアイコンやボタンで操作するようなGUI(グラフィカルユーザインタフェース)ではなく、いわゆる黒い画面と呼ばれる文字だけの黒画面にコマンドで操作するCUI(キャラクタユーザインタフェース)(もしくはCLI(コマンドラインインタフェース)とも呼ばれる)になる。わかりやすい例として、コマンドプロンプト(Windows)やターミナル(Mac)などGUI内のCUI環境や大昔のパソコンOSのCP/MやMS-DOSなんかもCUIだ。
≫ 黒い画面の画像
CUIのメリットとして、グラフィカル(画像など)な情報がない分、CPUの処理速度やメモリ容量、プログラムのデータ量などが少なくて済むということが挙げられる。それによりネットワークへの負荷が押さえられ、リモート操作が低回線でも容易にできるというのがサーバとして利用されている理由の一つだろう。
Windowsの場合、複数のソフトを立ち上げて、処理を大量に行うとパソコンが固まったり重くなったりする。それはグラフィカルな処理も伴う為、CPUの処理速度やメモリ容量、プログラムのデータ量が多く必要だからだ。
サーバのソフトウエアは、Windowsのソフトとは違い、あくまでもデータ処理のみが目的なので、操作はすべていわゆるプログラム(文字による命令)で制御され、やはり文字で処理される。だからサーバはいくつものデータを連続して高速に処理できるのだ。
逆に言えば黒い画面なので、サーバはOSだけでは特に何もできない。つまりサーバを機能させるにはサーバ用ソフトウエアが必要になる。
具体的には、ウェブサイトのデータを処理をさせるWebサーバ(HTTPサーバ)、メールサービスを行うメールサーバ(MTA)、データベースの処理を行うデータベースサーバ(DBMS)、ファイルの転送を行うFTPサーバ、ファイル共有を行うファイルサーバ、ドメイン名とIPアドレスを結びつけるDNSサーバ(ネームサーバ)など。語尾にサーバと付くのはたぶんサーバ用のソフトだからかな?
主なWebサーバソフト
Apache HTTP Server、Nginx、Microsoft IIS
主なWebサーバ用スクリプト言語
PHP、Perl、Python、Ruby、JSP、ASP
主なデータベースサーバ(DBMS)ソフト
MySQL、PostgreSQL
主なメールサーバ(MTA)ソフト
Postfix、sendmail、qmail
例えばウェブサイト(ホームページ)を公開するには、ApachなどのWebサーバが必要で、そこでHTMLとJavaScript以外のプログラムを動かすにはPHPやPerlなどのスクリプト言語(プログラミング言語)というのを組み込む必要がある。また、データベースでデータのやりとりをするには、MySQLなどのデータベースサーバが必要になると言った感じ。
ただこれらは一つづつインストールする訳ではなく、サーバ用のLinuxOSソフトには、LAMP(ランプ)などのパッケージがセットになって配布されていることが多い。
LAMPとはサーバOSのLinux、WebサーバのApach(アパッチ)、データベースのMySQL(マイエスキューエル)、スクリプト言語のPHP(ピー・エイチ・ピー)、Perl(パール)、Python(パイソン)の頭文字からなる造語。LAMPのメリットとしては、すべて無償のオープンソース(ソースコードを公開)の組み合わせということ。その為、開発者が世界中にたくさんいるので機能が常に改善され優れているというのが特徴。
Linux
Apach
MySQL
P for PHP・Perl・Python
つまり『 LAMP環境+メール+FTP+DNS 』のサーバが構築できれば、ウェブサイトとメールという基本的なサーバが稼働できる。

DNSサーバは、ドメイン名とIPアドレスの関係を調べてつなげる。たとえばこのドメインのURLはこのサーバのIPだよーって感じで教える機能。
Webサーバは、HTMLやJavaScriptなどのソースコード(プログラム)をファイルとして保存し、ブラウザなどからHTTP(Hypertext Transfer Protocol)という通信手順で要求があれば即座に処理しデータを引き渡す。またそこにPHPなどのプログラムが書かれていたら、PHPがそれを処理した結果を引き渡したり、MySQLなどデータベース内のデータのやりとりを要求されれば、MySQLが連携して処理するといった感じ。

FTPサーバは、FTPソフトを介してFTP(File Transfer Protocol)という通信手順を使ってWebサーバへウェブサイトの元になるファイルの送受信を行う機能。
メールサーバなら管理するメールアドレス宛のメールを受信しサーバ内に保存、要求されれば引き渡す。逆に送信する場合は、宛先のメールアドレスをネット上から探しだして確実に相手のメールサーバへ届けるといった感じ。
以上、まとめると「サーバ機能」とは、データ(ファイル)を文字による命令で保存したり処理したりする機能の事で、つまりそれ専用のコンピュータの事をサーバだと理解すればいいと思う。
今回、サーバとはなんぞや?という解説をだいぶわかりやすく書いたつもりだけれど、うーんやっぱ難しいよね(笑)。
ちなみに最初の写真の本は、実際に仮想マシンによるLinuxの学習環境を用意する手順や最低限の重要な知識を学ぶ為の初心者向けの解説書。「たった2日でわかるLinux」と書いてあるが、たぶん完全な初心者だと実際は「たった2日でなんとなくわかるLinux」って感じかも。でも初心者でもわかりやすい内容。
たった2日でわかるLinux―Cent OS 6.4対応
Linuxの仮想マシンが用意されているから、自宅のマシンで簡単・安全に学習環境を整えられる!(仮想マシンのダウンロードサービス付き)。Linuxを始める上での最重要項目を厳選してあるから、たった2日間で学習できる!だから…はじめてLinuxを触る人も、今までLinuxの学習に挫折したことがある人も、これならLinuxの基本が身につきます!
では、また
※記事の内容には万全を期して作成しておりますが、あくまでも個人的な解釈によるものですので、もしかしたら誤り等があるかもしれませんので、お気づきの方はコメントなどで教えて頂ければありがたいです。
スポンサード リンク

ひと言でいいので、気軽にコメントしていってください!
あなたのそのひと言がこのブログ運営の原動力なのです。よろしくお願いします。
あなたのそのひと言がこのブログ運営の原動力なのです。よろしくお願いします。
関連記事:ウェブとパソコン
-
サーバとはなんぞや?