하나의 윈도우 서버에 아파치와 IIS를 동시에 돌려야 할 경우가 있다. 우리회사는 웹서버로 IIS를 사용하는데 요번에 블로그 서비스를 기획하면서 텍스트큐브를 도입하기로 결정을 했다. 하지만 아직까지 IIS에서 텍스트큐브를 돌리기가 여의치 않아서 결국 아파치를 선택할 수 밖에 없었다. 서버를 따로 구입해서 블로그 전용서버로 사용하는게 제일 좋은 방법이겠지만, 서버를 구입하지 않고 어떻게 하면 같이 돌릴 수 있을까 고민을 해봤다.
두가지 방법을 생각해 볼 수 있다. 가장 쉬운 방법으로 포트를 서로 다르게 갖고 가는 것이다. 예를 들면 IIS는 80포트, 아파치는 8080포트로 돌리는 거다. 가장 쉽기는 한데, URL에 8080이 들어가는 게 좀 찜찜하다. 물론 프레임을 사용해서 8080포트가 붙은 주소를 감출 수는 있다.
다른 방법은 여유의 IP가 하나 더 있는 경우이다. IP가 하나더 있다면 각각에 IP를 할당하면 될테니깐.
나름 후자가 더 바람직한 방법 같아서 하나의 윈도우 서버에 IP를 두개 부여하고, IIS와 아파치에 IP를 각각 따로 설정했다. 그런 다음 잘 되겠지 하고, 먼저 IIS를 재시작하고, 다음에 아파치를 시작했더니 웬걸 이미 IP 주소가 사용되고 있어서 시작할 수 없다는 오류가 떨어지는 거다. 음 … IIS가 왜 다른 주소를 잡고 있을까?
한참을 고민하다가 IIS는 socket pooling을 한다는 사실을 알아냈다. 즉 IIS는 기본적으로 서버에 있는 모든 IP 주소에 리슨을 한다는 거다. 이를 방지하는 방법은 간단했다.
cd \inetpub\Adminscripts
cscript adsutil.vbs set w3svc/disablesocketpooling true
위 명령을 실행하면
disablesocketpooling : (BOOLEAN) True
이라는 결과를 볼 수 있다.
이렇게 설정을 하고 IIS를 재시작하니 드디어 IIS와 아파치가 사이좋게 지내는 거다. 대량의 트래픽이 발생하는 사이트는 당연히 이렇게 사용을 할 수 없을 테지만, 간단한 개인 블로그 정도는 이렇게 써도 무방하지 않을까?
Windows 2003에서는 IIS 6가 제공되고 있다. IIS 6에서 socket pooling을 방지하는 방법은 IIS 5와 틀리다. IIS 6에서 socket pooling 방지하는 방법을 참고하면 된다.
글 잘 읽어 보았습니다…
저도 그 문제로 고민하고 있는데요 OS는 2003 입니다.
그런데 링크가 연결이 안되네요.
방법좀 자세히 알려주시겠어요?
링크가 잘못되어 있네요. 링크 수정했습니다.
2003에서 설정하는 방법에 대해서도 링크를 추가했습니다.
허접한 글 읽어주셔서 감사합니다.
감사합니다…덕분에 한방에 해결되었습니다.
즐거운 하루 보내세요..~~~
해결됐다니 정말 다행입니다.별내용도 없는 글이 도움이 되서 정말 기쁩니다. 행복하세요.
움냐리.. IIS6.0 인데요.. 링크보고 아무리 해도 안되네요;;
혹시 6.0에서 성공하신분 방법좀 알려주세요.. ㅠㅠ
제가 IIS 6.0을 테스트할 환경이 안되서 도움을 드릴 수가 없네요.
죄송합니다.
검색하다가 들어오게 되었는데요.. 저희도 회사 홈페이지 와 텍스트큐브를 동시에 사용해야합니다. 근데 IP를 2개 할당하기에는 서버의 포트가 1개 밖에 없어서 못할거 같고…
회사 도메인을 abc.com 이라고 했을때.
http://www.abc.com = IIS 80 포트로 blog.abc.com = 아파치 8080 포트로 할수 있는 방법이 있나요?..ㅠ_ㅜ
그런 경우는 Apache의 httpd.conf만 수정하면 가능합니다. 저도 그렇게 사용하고 있습니다. 하지만 제 블로그 주소처럼 http://blog.abc.com:8080 이라는 형태로 뒤에 포트번호가 붙어서 보기에 좀 그렇습니다. 서버의 포트가 하나라도 여분의 IP가 있다면 한개의 서버에 여러 IP를 할당할 수 있습니다. 저는 후자를 추천합니다.