コンピューターをWebサーバーとして使用することについて質問があります。特定のコンピューターをWebサーバーにすることができるのはなぜですか。どのような機能がWebサーバーになることを可能にしますか?コンピュータがWebサーバーとして機能できない場合はありますか?
ネットワークに接続でき、Webサーバーソフトウェアを実行できるのであれば、ほとんどすべてのコンピューターを[Web]サーバーとして使用できます。 Webサーバーは非常に単純で、フリーでオープンソースのWebサーバーがあるため、実際には、どのデバイスでもWebサーバーとして機能できます。
もっと大きな問題はネットワーキング面です。システムがサーバーとして機能するためには、他のマシンがそれにアクセスできる必要があります。 LANで使用するだけの場合は問題ありません。ただし、より広いインターネットから使用する場合は、データをそれにルーティングする必要があります。これには、サーバーに関連付けられた静的IPアドレス(またはルーター経由で転送されたポート)、またはドメイン名/サブドメインを変化する動的IPアドレスにマッピングできる外部サービスのいずれかが必要です。
(FWIW、あなたは $ 10台のコンピューター を購入することができます。これは基本的なWebサーバーとして機能することができます。)
もちろん、どのデバイスでもWebサーバーとして機能できますが、Webサイトの機能は大きく異なる可能性があり、安価なデバイス(または低速の接続)では、特定のWebサイトの内容によっては需要に追いつかない可能性があります。
私は上記のすべてがWebサーバーについて話していることに注意してください - しかし、同じことがほとんどすべてのタイプのサーバーに言えることです。
まったく難しいことではありません。それは単にあなたの "Webサーバ"の定義に依存します。
マイクロコントローラのように単純なデバイスで「Webサーバー」を実行することは完全に可能です。
最低限必要なWebサーバーが何をする必要があるのかを考えてみましょう。それは何らかのテキストを出力する必要があるでしょう - 必ずしもHTMLでさえクライアントに。要求が要求であることを知り、適切に応答する必要があります。あなたの「クライアント」がローカルであれば、ネットワーク接続さえも必要ないでしょう。それは全く無意味なWebサーバーでしょう。
それは これらの のいずれかと同等のWebサーバーになります。
クライアントにネットワーク接続性を追加する(イーサネットはいいが、あなたがwifiで走っているウェブサーバーに接続できないという技術的な理由はない)そしてクライアントからルーティングできることはより良いだろう。
$ 5 ESP8266 - wifi付きの安価で最小限のマイクロコントローラで、その大部分を処理できます。基本的な動的コンテンツでさえも可能です。
私はPythonを使った素早いファイル共有のためにそのようなものを使います。マイクロコントローラでこのようなものを書いたり、電話で実行することさえ可能です。
静的コンテンツは退屈です。動的言語を追加すると、より重いウェイトシステムについて考える必要があります。 LinuxやWindowsを実行しているものはいいです。
この時点で、あなたはコンシューマルータ、UIでWebページを使用している小さなアプリケーション、そしてそれらすべてについて話しています。
Webサーバーはそれほど複雑な問題ではなく、 5行のbash で記述して、Linux上で実行することができます。今Doom...しかし、Doomを実行できるシステムであれば、Webサーバーを実行できます。
特定の負荷を処理できる良いWebサーバーの設定はやや複雑です。
文字通り、どのコンピュータでも、次のものがあればWebサーバーになることができます。
しかし、それで十分でしょうか。今、それは難しい質問です。
現代のWebページまたはWebアプリケーションをコミュニティ全体(学校、会社、美術館など)に提供するWebサーバーになるコンピューターの場合:
しかし、これは小さな操作では最低限の値でした。操作が大きくなると(つまり、静的ページではなく、トラフィックが増えて複雑なWebアプリケーションにサービスが提供されるようになると)、ニーズは高まります。あなたは結局必要になるでしょう:
インターネットインフラストラクチャを利用して全世界にサービスを提供するには、次のものが必要になります。
これらがなければ、あなたが持っているのは潜在的なウェブサーバだけです。
プログラミング/ソフトウェアの視点:
ネットワークアダプタのポート80を監視できるプログラム。それはあなたが持っているOS上で動きます。そしてHTTPの定義に従ってリクエストを処理することができます。
任意のポートを監視するプログラムは、同じネットワーク内のすべてのコンピュータから到達可能です。理想的には、それは既知の標準ポート(HTMLサーバーの場合は80と8080、カスタムアプリケーションの場合は1024以上を選択)であるべきです。あなたが開発をしているのと同じコンピュータ上でネットワーク到達可能プログラムの開発を実行することさえ一般的なやり方です。
Localhost経由でアクセスできる場合は、同じネットワーク内のどこからでもアクセスでき、他の場所からこのマシンとそのネットワークアダプタへのパスがあります。
警告:デフォルトのインストールにおける多くのオールインワン開発環境はLocalhostへのアクセスを制限します。結局のところ、インターネットから管理ツールにアクセスできないようにする必要があります。
ハードウェア:
ハードウェアは、どこかで「XPまたはLinuxを実行するその10年前のコンピュータ」で始まり、2TBRAMと256TiBのSSDで、128コアあたりで終わる。 DBは別のサーバーでも動作しています。 Webアプリケーションは愉快に並列化できる傾向があるので、それらのサーバーのクラスタを使ってさらにもっとアップすることができます。そしてジオキャスト。そして分散デザイン。そして他にもたくさんあります。それは私たちが話している規模に完全に依存します。
あなたが出会う可能性が最も高いWebサーバーは、ところであなたが使っているルーターです。それらはすべてLinux上でホストされた設定目的でWebサーバーを実行しています(つまり、すべてのDHCPとNAT作業を実行しています)。
ネットワーキング:
インターネット上のあらゆる場所を含む、他のネットワークからのパスを持つことは今やそのはまったく異なる話であり、アプリケーションのプログラミングよりもさらに困難な部分です。あなたのルーターのNATとキャリアグレードのNATの間で、このことは本当に大変になりました。
Pythonがインストールされているコンピュータ(PC、ラップトップ、スマートフォン、raspberryPIなど)が手元にある場合は、次のように入力してください。
$ python -m SimpleHTTPServer
Node.jsがインストールされている場合は、
$ npm install http-server -g
$ http-server
おめでとうございます、あなたはWebサーバーを持っています!