何がPCをWebサーバーにできるようにし、何がそれを不可能にするのですか?


43

コンピューターをWebサーバーとして使用することについて質問があります。特定のコンピューターをWebサーバーにできるのはなぜですか?Webサーバーにできる機能は何ですか?コンピューターがWebサーバーとして機能できない場合はありますか?


ネットワークカード。
el.pescado

1
私が見た中で最小のものは、Apacer製のwifi SDカードです。4MBのRAMが搭載されており、Linuxを実行し、Webリクエストに応答し、カメラにあるときに画像を送信できます。
user3528438

@ el.pescadoクライアントが同じホスト上にない限り。
ドミトリーグリゴリエフ

回答:


96

ネットワークに接続でき、Webサーバーソフトウェアを実行できるのであれば、ほとんどすべてのコンピューターを[Web]サーバーとして使用できます。Webサーバーは非常にシンプルであり、無料のオープンソースWebサーバーがあるため、実際には、どのデバイスでもWebサーバーとして機能できます。

大きな問題は、ネットワーク側です。システムがサーバーとして機能するには、他のマシンがアクセスできる必要があります。LANで使用するだけであれば、心配はありません。ただし、より広いインターネットから使用する場合は、データをルーティングする必要があります。これには、サーバー(またはルーター経由で転送されるポート)に関連付けられた静的IPアドレス、またはドメイン名/サブドメインを動的IPアドレスにマッピングできる外部サービスが必要です。

(FWIW、基本的なWebサーバーとして機能できる10ドルのコンピューターを購入できます。)

もちろん、どのデバイスもWebサーバーとして機能できますが、Webサイトの機能は大きく異なる可能性があり、特定のWebサイトが何であるかによって、安価なデバイス(または低速接続)が要求に対応できない場合があります。

上記のすべてがWebサーバーについて述べていることに注意してください-しかし、ほとんどすべてのタイプのサーバーについて同じことが言えます。


2
別の問題は、安価なデバイスはコンポーネントが非常に長い時間で動作することが認定されておらず、メモリにECC RAMのようなビットの腐敗を防ぐ手段がないため、「実際の」サーバーほど信頼性が低い場合があることです。私は数ヶ月のために自分のコンピュータを離れると、BSODに終わる私の同僚を見てきました
phuclv

11
はいといいえ。私は、ecc ramを使用せずに24時間年中無休で多くのシステムを実行しています。また、ほとんどのホーム/スモールビジネスルーターも、wenbサーバーであり、bsodなしで非常に確実に実行されます。もちろん、BSODに相当するものは、Windowsの世界以外ではそれほど一般的ではありません。
-davidgo

9
@davidgoバグチェックエラーは、障害のあるハードウェアや危険なドライバーがない限り、Windowsの世界でも一般的ではありません。どのOSでも同様の問題が発生します。WindowsとLinuxの両方でのビデオドライバー関連の問題の数の損失カウント。
ボブ

7
@davidgo BSODは単なるフェイルセーフであり、それ自体の問題ではありません。これは、卑劣なコード/データの破損やハードウェアの損傷を防ぐための最後の溝です。いずれにしても、逸話的な証拠はこのようなものではまったく役に立ちません-これで目に見える問題に遭遇することは非常に高い可能性があります、またはあなたはそれを誤って帰属させます、そしてそれを作る膨大な量の環境要因があります多かれ少なかれ(温度、緯度、EMノイズ、電気ネットワークの品質、システム負荷、特定のコンポーネントの信頼性)。ECC RAMなどのコストと価値はビジネス上の決定です。
ルアーン

15
おそらく、すでにいくつかのWebサーバーが自宅にあります。ルーター/アクセスポイント、プリンター、およびスマートメーター、IPカメラ、VoIP電話、プログラム可能なサーモスタット、テレビなど、その他のすべての種類の構成可能なホームオートメーションガジェットです。小さいものは、必要なハードウェアがどれほど少ないかを示しています。別のコメント:ネットワーキングはWebサーバーの厳密な要件ではありません。同じマシン上のユーザーのみページを提供するサーバーを持つことは完全に理にかなっています。
ピーター-モニカの復活

25

それはまったくトリッキーではありません。「Webサーバー」の定義に依存するだけです。

マイクロコントローラと同じくらい簡単なデバイスで「ウェブサーバー」を実行することは完全に可能です。

最小限のWebサーバーで必要なことを考えてみましょう。HTMLでさえ、必ずしもクライアントにテキストを出力する必要はありません。要求が要求であることを知り、適切に応答する必要があります。「クライアント」がローカルであれば、ネットワーク接続さえ必要ありません。それは完全に無意味なWebサーバーです。

これは、これらいずれかと同等のWebサーバーになります。

ここに画像の説明を入力してください

クライアントにネットワーク接続を追加します(イーサネットは便利ですが、wifiで実行されているWebサーバーに接続できない技術的な理由はありません)。クライアントからルーティングできる方が良いでしょう。

5ドルのESP8266Wi - Fiを備えた安価で最小限のマイクロコントローラーは、そのほとんどを処理でき、基本的な動的コンテンツも処理できます。

Pythonを使用してファイルをすばやく共有するには、そのようなものを使用します。このようなものをマイクロコントローラーで作成したり、電話で実行することも可能です。

静的コンテンツは退屈です。動的言語を追加すると、より重い重量システムについて考える必要があります。LinuxまたはWindowsを実行するものは素晴らしいです。

この時点で、消費者向けルーター、UIでWebページを使用する小さなアプリケーションなどを話しています。

Webサーバーは複雑な問題ではなく、5行のbashで記述してLinuxで実行できます。今、運命 ...しかし、運命を実行できるシステムは、Webサーバーを実行できます。

良い与えられた負荷を処理できるWebサーバのセットアップはややトリッキーです。


11
一部のTTLチップをはんだ付けしてWebサーバーを実行することも可能です。詳細については、このWebページを参照してください
Josef

7
それはおおまかに言って「鋼鉄をボルト
ジャーニーマンオタク

1
おもしろいことに、あなたの「無意味な」ウェブサーバーは、特定の製品でいくつかのヘルプがどのように機能したかを正確に示しています:)-例は覚えていませんが、ヘルプがサーバー上で実行されていたケースが少なくとも1つありました(レンダリングされたhtmlページだけではありません)ブラウザで表示された)とその後に表示された問題(ファイアウォールがオンの場合、ヘルプページが読み込まれません!)
djsmiley2k-CoW

5
@ djsmiley2k Eclipseヘルプは、ローカルWebサーバーを使用します。なぜならJava。
user253751

2
raspiは、2000年に商用Webサーバーの99.9%であった可能性が高いよりも強力です。そして、人々は当時、非常に動的なものをすでに実行していました。
rackandboneman

11

最低

文字通り、次のものがあれば、どのコンピューターでもWebサーバーになります。

  • ネットワーク接続
  • このような非常にシンプルなWebサーバーアプリ。

しかし、それで十分でしょうか?さて、それは難しい質問です。

イントラネットにサービスを提供する

コンピューターがコミュニティ全体(学校、会社、博物館など)に最新のWebページまたはWebアプリを提供するWebサーバーになるには:

  • 一度に複数のコンピューターに応答できるハードウェア。LinuxまたはWindows XPを実行している古いコンピューターでも十分でしょう。
  • 十分な帯域幅を備えた高速ネットワーク接続、たとえば1ギガビット/秒のイーサネットまたは802.11g Wi-Fi。
  • 以下のような良いWebサーバアプリ、IISApacheのnginxのか、他の人。(驚いたことに、これら3つは無料です。)

しかし、これは小規模な運用では最低限のものでした。オペレーションが大きくなると(つまり、トラフィックが増え、静的なページではなく複雑なWebアプリを提供するようになると)、ニーズが大きくなります。最終的に必要なもの:

  • 複数のXeon CPUと数百ギガバイトのRAMを搭載したラックマウントサーバーなどのサーバークラスのハードウェア
  • 光ファイバーネットワーク

外の世界に奉仕する

インターネットインフラストラクチャを活用して全世界にサービスを提供するには、次のものが必要です。

  • パブリックIPアドレス
  • パブリックDNSサーバー
  • 安全な接続を確立するために信頼できる認証局によって発行されたデジタル証明書

これらがなければ、あなたが持っているのは潜在的なウェブサーバーだけです。


._。私は、raspiは最低限のもので、ジャンキーだと思っています。また、WebページをUIとして使用する多くのものを覚えておく価値があります。たとえば、ルーターに Webサーバーがあります、Webサーバーではありません
ジャーニーマンオタク

9
これらのコメントに同意しない-ルーターはWebサーバーです(その他のものも同様)。コメントのロジックでは、このようなシステムには他の機能があるため、Webサーバーのようなものはありません。
-davidgo

5
重いCPUやその他のリソースのニーズは、Webサービスや動的HTML生成言語(たとえば、一般的なPHP(特に通常の方法で設定した場合)など)がWebサービスよりもはるかに非効率的です。16MBのRAMを備えた33MHz 80486は、誰かが気になった場合に大量の静的ページを処理できるようにすることができます。
rackandboneman

@rackandboneman非常によく。懸念に対処するために、「あなたの業務が大きくなった場合」の意味を明確にします。

@rackandboneman「できる」だけでなく、「よくある」こともできます。
jwg

8

プログラミング/ソフトウェアの観点:

ネットワークアダプターでポート80をリッスンできるプログラム。それはあなたが持っているOS上で動作します。また、HTTP定義に従って要求を処理できます。

任意のポートをリッスンするプログラムは、同じネットワーク内のすべてのコンピューターから到達可能です。理想的には、既知の標準ポートである必要があります(HTMLサーバーの場合は80および8080。カスタムアプリケーションの場合は1024以上を選択します)。開発を行っているのと同じコンピューターでネットワーク到達可能プログラムの開発を実行することも一般的です。

ローカルホスト経由でアクセスできる場合は、同じネットワーク内のどこからでもアクセスでき、他のどこからでもこのマシンとそのネットワークアダプタへのパスがあります。

警告:デフォルトのインストールでは、オールインワン開発環境の多くがLocalhostへのアクセスを制限しています。結局のところ、管理ツールにインターネットからアクセスできないようにする必要があります。

ハードウェア:

ハードウェアは「XPまたはLinuxを実行する10年前のコンピューター」から始まり、「128コア、RAIDに2 TiB RAMおよび256 TiBのSSDがある」どこかで終わり、DBも別のサーバーで実行されます。 。Webアプリケーションは快適に並列化できる傾向があるため、これらのサーバーのクラスターを使用して、Webアプリケーションをさらに向上させることができます。そしてジオキャスト。そして分散設計。そして、他の多くのもの。それは私たちが話している規模に完全に依存しています。

最も簡単なWebサーバーは、使用しているルーターです。それらはすべて、Linux上でホストされた構成目的でWebサーバーを実行します(つまり、DHCPおよびNATのすべての作業を実行しています)。

ネットワーキング:

インターネット上のどこを含む他のネットワークからのパスを持つことは、まったく異なる話であり、アプリケーションのプログラミングよりもさらに難しい部分です。ルーターのNATとキャリアグレードNATの間では、このようなことは本当に難しくなりました。

  • 個人であっても、ISPから固定IPアドレスを購入するオプションが常にあります。それが示すように、それはおそらく余分に費用がかかります。DNSエントリは、生活の質になります。
  • Carrier Grade NATの前に戻ると、動的IPアドレスとDynDNSサービスを使用できます。しかし、キャリアグレードのNATを使用すると、もう1つの制御不能なNATを克服する必要があります。プロバイダーに依存します。
  • 一種のNATを通過する究極のソリューションは、任意の数のレイヤーがTCP / IPホールパンチです。すべてのVPNソリューションで使用されます。Skype、TeamViewer、およびその他すべての製品も同様です。問題は次のとおりです。TCP/ IPホールパンチを行うには、インターネット上で既に到達可能なサーバーが必要です。
  • 小規模(1〜10のエンドポイント)程度の場合、通常、最も簡単な方法は、サーバーが存在するネットワークにVPN接続を確立することです。ほとんどのルーターはそれをサポートしています。

2
「Linuxを実行する10歳のコンピューター」。Webの時代を考えると、それを安全に押し戻すことができます。個人的には、約20年前に、元のIntel 80386でWebサーバーを実行していたことを思い出します。
–MSalters

@MSaltersそれよりもはるかに低価格を選択できます。私は今日それを見つけることができませんが、数年前、私はモト68kのような低価格のハードウェアで実行できるシェルスクリプト/ CGI Webサーバーに遭遇しました。埋め込みスペースでは、15〜20年前に明らかに人気がありました。
ダン・ニーリー

3

Pythonがインストールされた任意の種類のコンピューター(PC、ラップトップ、スマートフォン、raspberryPI ...)が手元にある場合は、次のように入力します。

$ python -m SimpleHTTPServer

または、Node.jsがインストールされている場合:

$ npm install http-server -g
$ http-server

おめでとうございます、あなたはウェブサーバーを持っています!

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.