2010-02-23 2 views
15

방금 ​​파이썬을 사용하여 simple web server을 쓸 수 있다는 것을 알았습니다. 이 머신에서 파이썬 기반의 웹 서버를 사용하고 싶습니다. 이미 아파치 웹 서버가 있습니다. 그러나 나는 그것을 시험해 보면 내가 어떤 종류의 갈등을 일으킬 수 있다고 생각합니다. 내 말은 두 웹 서버가 클라이언트의 요청을 누가 서버해야하는지 "결정"할 것입니다.동일한 컴퓨터에서 두 대의 웹 서버를 실행할 수 있습니까?

+0

파이썬에는 FWIW가 내장되어 있으며 웹 서버 모듈 (SimpleHTTPServer)이 내장되어 있습니다. 기본 포트는 8000입니다. 다음 명령을 사용하여 명령 행에서 실행할 수 있습니다. python -m SimpleHTTPServer – ianalis

답변

26

다른 포트를 수신하게하면 문제가되지 않습니다.

기본 웹 포트는 80입니다. 포트를 지정하지 않고 브라우저에서 일부 URL을 열면 기본적으로 80이 사용됩니다.

다른 포트를 듣고 웹 서버를 구성 할 수 있습니다하지만 당신은 또한 URL에 명시 적으로 지정해야합니다 :이 특정 포트 번호는

http://localhost:8080 

포트에주의를 선택 아니라고 아직 상자에 설치되어 실행중인 모든 소프트웨어에서 사용 중입니다. 그렇지 않으면 올바르게 추측 할 때 충돌이있을 것입니다.

P. 며칠 전 재설치를하면서 IIS를 시작할 수 없었습니다 (이유없이). Skype의 새로운 버전이이 기본 포트를 점령했습니다! "포트 80 및 443을 들어오는 연결의 대안으로 사용"설정을 제거해야했습니다.

+0

OK. 웹 브라우저에서 사용하는 기본 포트가 있습니까? 특정 웹 서버에서 웹 페이지를 열려고 할 때 포트를 지정할 수 있습니까? – Roman

+0

기본 HTTP 포트는 80입니다. 'http : // yourserver : portnumber'와 같이 URL에 포트를 지정할 수 있습니다. –

+0

기본값은 HTTPS의 경우 HTTP 443의 경우 80입니다. 당신은 – Ofir

1

두 개 이상의 웹 서버를 동일한 포트 (기본값은 80)로 열 수 없습니다. 두 개 이상의 웹 서버를 만들려면 다른 포트를 사용해야합니다.

DNS를 사용하는 경우 하위 도메인이나 다른 도메인에 대해 다른 웹 사이트가 필요할 경우 유용 할 수있는 다른 요청에 따라 다른 웹 사이트에 응답하도록 웹 서버를 쉽게 설정할 수 있습니다.

+1

승리를위한 HTTP/1.1 –

+0

실제로, 우박 우두머리를 사용하여 다른 것을 지정할 수 있습니다! – Dal

7

웹 서버가 특정 포트에 연결되어 있습니다. 일반적으로 이것은 포트 80입니다. 포트가 명시 적으로 지정되지 않으면 브라우저가 적중을 시도 할 포트입니다.

대체 서버를 다른 포트에서 실행할 수 있습니다 (8080 또는 8081은 웹 서버에서 많이 사용되는 것으로 보이지만 선택할 수는 있습니다).

충돌이 일어나지 않습니다. 포트 80으로 들어가는 모든 것은 이전 서버를 강타합니다. 8080 (또는 서버를 실행하기로 결정한 포트)으로가는 모든 것이 간단한 파이썬 서버에 충돌합니다.

http://localhost:8080/

1

웹 서버 접속 요청을 서비스하는 사람들의 발언권이없는 것 (이 작업은 운영 체제 수준에서 여전히) -이 :

가 다른 서버를 공격하기 위해 같은 URL을 사용합니다. 또한 특별한 소켓 옵션이 없으면 소켓은 인터페이스, 인터넷 주소 및 포트의 고유 조합에 바인딩되어야합니다.

0

하나의 서버가 https (포트 443) 요청을 처리하도록 지정하는 것이 좋습니다.

그런 식으로 다른 사람이 언급 한 포트 충돌을 피할 수 있으며 사용자가 브라우저에 이상한 내용 (임의의 포트 번호)을 입력하지 않아도됩니다. 각 서버가 트래픽을 다른 서버로 리디렉션하도록 할 수도 있습니다 (예 : http 서버가 https 서버가 처리하는 것으로 알고있는 호스트 이름에 대한 http 요청을 수신하므로 요청을 동일한 호스트 이름을 사용하여 https로 리디렉션 할 수 있습니다. 적절한 서버).

서버 A :

http://localhost 

서버 B :

https://localhost 
8
실제로 다른 답변을 참조 서버 소프트웨어를 테스트하기 위해 별도의 서버를 실행하려면

,하지만 ...

그것은 마치 여러분이 개발자이기 때문에 시스템 관리자가 아니기 때문에 들립니다. 은 동일한 컴퓨터에서 파이썬과 PHP 사이트를 실행하기를 원합니다. 그래서, 만약 당신의 질문을 읽고있어 용서하지만,이 설치는 하나의 서버, 아파치에서 동일한 포트 (포트 80)와 같은 컴퓨터에서 두 가지 종류의 사이트를 실행할 수 있습니다. 와 127.0.0.1로 포인트 :

나는/hosts 파일 (\ WINDOWS \ system32를 \ 드라이버 \ Windows에서 등 \ 호스트 또는 C) : 내/등의 새로운 항목을 아파치에 그런

127.0.0.1  localhost 

# development projects 
127.0.0.1  somephpsite.com.local 
127.0.0.1  www.somephpsite.com.local 
127.0.0.1  otherpythonsite.com.local 
127.0.0.1  www.otherpythonsite.com.local 

나는 각 사이트에서 VirtualHost를 추가 : 그들은 항상 같은

<VirtualHost *:80> 
    DocumentRoot "/Library/WebServer/Documents" 
    ServerName localhost 
</VirtualHost> 

<VirtualHost *:80> 
    <Directory "/Users/Robert/Projects/SomeSite/somephpsite.com"> 
     Options Indexes FollowSymLinks MultiViews 
     AllowOverride All 
     Order allow,deny 
     Allow from all 
    </Directory> 
    DocumentRoot "/Users/Robert/Projects/SomeSite/somephpsite.com" 
    ServerName somephpsite.com.local 
    ServerAlias www.somephpsite.com.local 
    ErrorLog "/Users/Robert/Projects/SomeSite/error.log" 
    CustomLog "/Users/Robert/Projects/SomeSite/access.log" common 
</VirtualHost> 

<VirtualHost *:80> 
    <Directory "/Users/Robert/Projects/OtherSite/otherpythonsite.com"> 
     Order allow,deny 
     Allow from all 
    </Directory> 
    DocumentRoot "/Users/Robert/Projects/OtherSite/otherpythonsite.com/static" 
    Alias /(.*(\.css|\.gif|\.ico|\.jpg|\.js|\.pdf|\.txt)) /Users/Robert/Projects/OtherSite/otherpythonsite.com/static/$1 
    WSGIScriptAlias//Users/Robert/Projects/OtherSite/otherpythonsite.com/wsgi.py 
    ServerName otherpythonsite.com.local 
    ServerAlias www.otherpythonsite.com.local 
    ErrorLog "/Users/Robert/Projects/OtherSite/error.log" 
    CustomLog "/Users/Robert/Projects/OtherSite/access.log" common 
</VirtualHost> 

그래서, PHP 사이트가 DocumentRoot에서 실행됩니다. 그리고 파이썬 사이트는 WSGI에서 실행됩니다. 둘 다 아파치에서 돌아 간다. 그런 다음 테스트하기 위해 로컬 복사본에서 작업 할 때 사용하는 브라우저에 ".local"을 추가합니다.

+2

+1은 질문에 대답하지 않지만 그럼에도 불구하고 유용하고 관련성이 있습니다. – AlexMA

+3

내가 필요한 것! 왜 누군가는 사용자가 포트 번호를 입력하게하려고합니까? –

+0

누군가 두 개의 다른 웹 서버를 필요로하는 경우를 대비하여. 예를 들어 node.js 앱과 PHP 앱 (둘 다 공개). 이 두 서버가 같은 서버에 있으면 다른 포트를 청취해야합니다. – Akis

관련 문제