PC를 웹 서버로 만들 수있는 요인과 불가능한 요인은 무엇입니까?


43

컴퓨터를 웹 서버로 사용하는 것에 대한 질문이 있습니다. 왜 특정 컴퓨터가 웹 서버가 될 수 있습니까? 웹 서버가 될 수있는 기능은 무엇입니까? 컴퓨터가 웹 서버 역할을 할 수없는 경우가 있습니까?


네트워크 카드.
el.pescado

1
내가 본 가장 작은 것은 Apacer가 만든 wifi SD 카드입니다. 그것은 4MB의 램을 가지고 있으며 리눅스를 실행하며 카메라에있을 때 웹 요청에 응답하고 이미지를 전송할 수 있습니다.
user3528438

@ el.pescado 클라이언트가 동일한 호스트에 있지 않으면.
Dmitry Grigoryev

답변:


96

네트워크에 연결하고 웹 서버 소프트웨어를 실행할 수 있다면 거의 모든 컴퓨터를 [웹] 서버로 사용할 수 있습니다. 웹 서버는 매우 단순 할 수 있고 무료 및 오픈 소스 웹 서버가 있으므로 실제로 모든 장치는 웹 서버 역할을 할 수 있습니다.

더 큰 문제는 네트워킹 측면입니다. 시스템이 서버로 작동하려면 다른 시스템이 해당 시스템에 액세스 할 수 있어야합니다. LAN에서만 사용한다면 걱정할 필요가 없습니다. 그러나 더 넓은 인터넷에서 사용하려면 데이터를 라우팅해야합니다. 이를 위해서는 서버와 연결된 고정 IP 주소 (또는 라우터를 통해 전달 된 포트) 또는 도메인 이름 / 하위 도메인을 변경되는 동적 IP 주소에 매핑 할 수있는 외부 서비스가 필요합니다.

(FWIW, 기본 웹 서버 역할을 할 수있는 10 달러의 컴퓨터 를 구입할 수 있습니다.)

물론 모든 장치가 웹 서버 역할을 할 수는 있지만 웹 사이트의 기능은 크게 다를 수 있으며 저렴한 장치 (또는 느린 연결)는 특정 웹 사이트가 무엇인지에 따라 요구 사항을 충족하지 못할 수 있습니다.

위의 모든 내용은 웹 서버에 대해 이야기하지만 거의 모든 유형의 서버에 대해서도 마찬가지입니다.


2
또 다른 문제는 저렴한 장치는 구성 요소가 오랫동안 실행되도록 인증되지 않았으며 메모리에 ECC RAM과 같은 비트 부패를 방지 할 수단이 없기 때문에 "실제"서버만큼 안정적이지 않을 수 있다는 것입니다. 나는 동료들이 몇 달 동안 컴퓨터를 떠나 BSOD로
끝났다는 것을 보았습니다.

11
예, 아니오 나는 ecc 램없이 많은 시스템을 연중 무휴로 운영하고 있으며 대부분의 가정용 / 소규모 라우터는 bsod 없이도 상당히 안정적으로 작동합니다. 물론 BSOD 등가물은 Windows 세계 밖에서는 일반적이지 않습니다.
davidgo

9
@davidgo Bugcheck 오류는 하드웨어 나 방해가되는 드라이버가없는 한 Windows 환경에서 일반적이지 않습니다. 어떤 OS에서도 비슷한 문제가 발생합니다. Windows와 Linux 모두에서 비디오 드라이버 관련 문제의 수를 잃어 버렸습니다.
Bob

7
@davidgo BSOD는 자체적으로 문제가 아니라 오류 방지 기능입니다. 부적절한 코드 / 데이터 손상 및 하드웨어 손상을 방지하기위한 마지막 도랑 시도입니다. 어쨌든, 일화 적 증거는 이와 같은 것들에서 전적으로 쓸모가 없습니다.이 문제와 관련하여 눈에 띄는 문제가 발생하지 않을 가능성이 매우 높거나 오해의 소지가 있으며, 환경에 영향을 미치는 수많은 요인이 있습니다. 다소 가능성 (온도, 위도, EM 잡음, 전기 네트워크 품질, 시스템 부하, 주어진 구성 요소의 신뢰성). ECC RAM의 비용과 가치는 비즈니스 결정입니다.
Luaan

15
라우터 / 액세스 포인트, 프린터 및 스마트 미터, IP 카메라, VoIP 전화, 프로그래머블 온도 조절 장치, TV와 같은 구성 가능한 모든 홈 오토메이션 기기와 같은 웹 서버가 이미있을 것입니다. 작은 것은 작은 하드웨어가 필요한지에 대한 아이디어를 제공합니다. 또 다른 설명 : 네트워킹은 웹 서버에 대한 엄격한 요구 사항이 아닙니다 . 같은 컴퓨터의 사용자에게만 페이지를 제공하는 서버를 갖는 것이 좋습니다.
피터-복원 모니카

25

전혀 까다 롭지 않습니다. "웹 서버"의 정의에만 의존합니다.

마이크로 컨트롤러처럼 단순한 장치에서도 "웹 서버"를 실행할 수 있습니다.

최소한의 웹 서버가해야 할 일을 고려해 봅시다. HTML로도 클라이언트에 텍스트를 출력 할 필요는 없습니다. 요청이 요청임을 알고 적절하게 응답해야합니다. "클라이언트"가 로컬 인 경우 네트워크 연결이 필요하지 않습니다. 완전히 무의미한 웹 서버가 될 것입니다.

이것들 중 하나에 해당하는 웹 서버가 될 것이다 .

여기에 이미지 설명을 입력하십시오

클라이언트에 대한 네트워크 연결 추가 (이더넷은 좋지만 wifi에서 실행되는 웹 서버에 연결할 수없는 기술적 이유는 없습니다) 및 클라이언트에서 라우팅 할 수있는 것이 더 좋습니다.

5 달러짜리 ESP8266 – Wi-Fi가 내장 된 저렴하고 최소한의 마이크로 컨트롤러는 대부분의 기본 컨텐츠를 처리 할 수 ​​있습니다.

나는 파이썬을 사용하여 빠른 파일 공유를 위해 그런 것을 사용합니다. 마이크로 컨트롤러에서 이와 같은 것을 쓰거나 심지어 전화로 실행할 수도 있습니다.

정적 콘텐츠가 지루합니다. 역동적 인 언어를 추가하면 더 무거운 웨이트 시스템을 생각해야합니다. Linux 또는 Windows를 실행하는 것이 좋습니다.

이 시점에서 소비자 라우터, UI의 웹 페이지를 사용하는 작은 응용 프로그램 등을 말하고 있습니다.

웹 서버는 복잡한 문제가 아니며 5 줄의 bash 로 작성 하여 Linux에서 실행할 수 있습니다 . 이제 운명 ...하지만 운명을 실행할 수있는 모든 시스템은 웹 서버를 실행할 수 있습니다.

좋은의 주어진로드를 처리 할 수있는 웹 서버 설정이 다소 까다 롭습니다.


11
일부 TTL 칩을 함께 납땜하고 웹 서버를 실행할 수도 있습니다. 자세한 내용은이 웹 페이지를 참조하십시오
Josef

7
"강철을 묶고 에펠 탑을 짓는 것도 가능합니다. 너무 멋지다
Journeyman Geek

1
흥미롭게도 '무의미한'웹 서버는 특정 제품에 도움이되는 방법입니다. 브라우저에 의해) 및 이후에 표시되는 문제 (방화벽이 켜져있을 때 도움말 페이지가로드되지 않습니다!).
djsmiley2k-CoW 2016 년

5
@ djsmiley2k Eclipse 도움말은 로컬 웹 서버를 사용합니다. 자바 때문이다.
user253751

2
raspi는 2000 년에 상용 웹 서버의 99.9 %보다 강력한 성능을 발휘했습니다. 사람들은 이미 역동적 인 작업을하고있었습니다.
rackandboneman

11

최소한으로

말 그대로 다음과 같은 경우 모든 컴퓨터가 웹 서버가 될 수 있습니다.

  • 네트워크 연결
  • 아주 간단한 웹 서버 응용 프로그램, 이런 .

그러나 충분할까요? 이제 까다로운 질문입니다.

인트라넷 제공

컴퓨터가 전체 웹 사이트 (예 : 학교, 회사, 박물관)에 최신 웹 페이지 또는 웹 응용 프로그램을 제공하는 웹 서버가 되려면 :

  • 한 번에 여러 대의 컴퓨터에 응답 할 수있는 하드웨어. Linux 또는 Windows XP를 실행하는 오래된 컴퓨터가 그럴 수 있습니다.
  • 1Gbit / sec 이더넷 또는 802.11g Wi-Fi와 같이 충분한 대역폭을 갖춘 고속 네트워크 연결.
  • IIS , Apache , Nginx 또는 기타 와 같은 좋은 웹 서버 앱 . (놀랍게도이 세 가지는 무료입니다.)

그러나 이는 소규모 작업의 경우 최소한이었습니다. 작업이 커질수록 (즉, 트래픽이 많을수록 정적 페이지 대신 복잡한 웹 앱을 제공함) 요구가 커집니다. 결국에는 다음이 필요합니다.

  • 여러 Xeon CPU 및 수백 기가 바이트 RAM을 갖춘 랙 마운트 서버와 같은 서버급 하드웨어
  • 광섬유 네트워크

외부 세계를 제공

전 세계에 서비스를 제공하기 위해 인터넷 인프라를 활용하려면 다음이 필요합니다.

이것이 없으면 잠재적 인 웹 서버 만 있으면 됩니다.


._. 나는 raspi를 최소한으로 생각하고 지옥으로 생각합니다. 또한 웹 페이지를 UI로 사용하는 많은 것들을 기억할 가치가 있습니다. 라우터 에는 웹 서버 있지만 웹 서버 는 아닙니다 .
Journeyman Geek

9
이 의견에 동의하지 마십시오-라우터는 웹 서버뿐만 아니라 다른 것들입니다. 주석의 논리에 따르면 그러한 시스템에는 다른 기능이 있기 때문에 웹 서버와 같은 것은 없습니다.
davidgo

5
CPU 및 기타 리소스가 많이 필요한 것은 웹 응용 프로그램 및 동적 HTML 생성 언어 (예 : 일반적으로 일반적인 방식으로 설정된 경우 PHP)가 웹 서비스보다 유감스럽게 비효율적입니다. 16MB RAM의 33MHz 80486을 사용하면 누군가가 신경 쓰이는 경우 많은 정적 페이지를 처리 ​​할 수 ​​있습니다.
rackandboneman

@rackandboneman 아주 좋아. 우려 사항을 해결하기 위해 "작업이 커질 경우"의 의미를 명확하게 설명하겠습니다.

@rackandboneman '만약'을 다룰 수있을뿐만 아니라 '종종'이었다.
jwg

8

프로그래밍 / 소프트웨어 관점 :

네트워크 어댑터에서 포트 80을 청취 할 수있는 프로그램입니다. 그것은 당신이 가진 OS에서 실행됩니다. HTTP 정의에 따라 요청을 처리 할 수 ​​있습니다.

모든 포트를 수신하는 프로그램은 동일한 네트워크의 모든 컴퓨터에서 액세스 할 수 있습니다. 이상적으로는 알려진 표준 포트 여야합니다 (HTML 서버의 경우 80 및 8080, 사용자 지정 응용 프로그램의 경우 1024 이상 선택). 개발중인 동일한 컴퓨터에서 네트워크 연결 가능 프로그램 개발을 실행하는 것도 일반적인 관행입니다.

localhost를 통해 연결할 수있는 경우 동일한 네트워크 내의 어느 곳에서나이 시스템과 해당 네트워크 어댑터에 대한 경로가있는 다른 곳에서 연결할 수 있습니다.

주의 사항 : 기본 설치의 많은 올인원 개발 환경은 로컬 호스트에 대한 액세스를 제한합니다. 결국 인터넷에서 관리 도구에 접근 할 수 없도록해야합니다.

하드웨어:

하드웨어는 "XP 또는 Linux를 실행하는 10 살짜리 컴퓨터"에서 시작하여 "128 코어, RAID 2 개와 SSD의 256TiB를 급습으로"어딘가에서 끝납니다. DB는 다른 서버에서도 실행됩니다. . 웹 응용 프로그램은 병렬화가 가능한 경향이 있으므로 해당 서버의 클러스터를 사용하여 웹 응용 프로그램을 훨씬 더 향상시킬 수 있습니다. 지오 캐스트. 그리고 분산 디자인. 그리고 다른 많은 것들. 그것은 우리가 말하는 규모에 전적으로 달려 있습니다.

가장 간단한 웹 서버는 사용중인 라우터입니다 (btw). 이들은 모두 구성 목적으로 웹 서버를 실행하고 Linux에서 호스팅됩니다 (모든 DHCP 및 NAT 작업을 수행함).

네트워킹 :

어디서든 인터넷을 포함하여 - - 지금 다른 네트워크 경로를 갖는 완전히 다른 이야기와 훨씬 더 힘들어 응용 프로그램을 프로그래밍보다 부분입니다. 라우터의 NAT와 통신사 등급의 NAT 사이에서이 작업은 정말 어려워졌습니다.

  • ISP에서 개인용으로도 고정 IP 주소를 구입할 수있는 옵션이 항상 있습니다. 표시된 바와 같이, 추가 비용이 발생할 수 있습니다. DNS 항목은 삶의 질입니다.
  • Carrier Grade NAT 이전 에는 동적 IP 주소 및 DynDNS 서비스로 작업 할 수있었습니다. 그러나 통신 사업자 급 NAT를 사용하면 극복 할 수없는 제어 할 수없는 또 다른 NAT가 생겼습니다. 공급자에 따라 다릅니다.
  • 여러 종류의 NAT를 통과하는 궁극적 인 솔루션은 여러 계층에 TCP / IP 홀 펀칭 입니다. 모든 VPN 솔루션이이를 사용합니다. Skype, TeamViewer 및 기타 모든 것과 마찬가지로. 문제는 다음과 같습니다. TCP / IP 홀 펀칭을 수행하려면 인터넷에 이미 연결되어있는 서버가 필요합니다.
  • 소규모 (1 ~ 10 개의 엔드 포인트) 인 경우 일반적으로 가장 간단한 방법은 서버가있는 네트워크에 VPN 연결을 만드는 것입니다. 대부분의 라우터는이를 지원합니다.

2
"리눅스를 운영하는 10 살짜리 컴퓨터". 웹의 시대를 고려하면 안전하게 되돌릴 수 있습니다. 저는 개인적으로 약 20 년 전에 원래 인텔 80386에서 웹 서버를 실행 한 것을 기억합니다.
MSalters

@MSalters 당신은 그것보다 훨씬 낮은 수준으로 갈 수 있습니다. 나는 오늘 그것을 찾을 수 없지만 몇 년 전 모토 68k만큼 저급 하드웨어에서 실행될 수있는 쉘 스크립트 / CGI 웹 서버를 만났습니다. 그것은 15-20 년 전 임베디드 공간에서 비교적 인기가있었습니다.
Dan Neely

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.