Friday, February 10, 2012
Retabbed
Login | Register
블로그
  Search
블로그 목록
블로그 아카이브
블로그 검색
ASP.NET 2.0 on UNC share(Web Farm)
Location: Blogs불나방의 소프트 블로그    
Posted by: 불나방 2008-05-09 오후 1:31

네트워크로 공유된 폴더(UNC Share)에 있는 ASP.NET 2.0 프로그램을 실행하는 것은 그리 간단한 문제가 아니다. 보안 문제 때문에 공유된 폴더의 프로그램은 기본적으로 실행해 주지 않는다. Web Farm을 구성하자면 공유폴더 실행이 꼭 필요함은 물론이다. 그 단계를 여기에 써둔다.

*. Domain이 없다면 도메인을 구성한다. 워크그룹으로도 가능할 수 있으나 더욱 복잡하다.

*. 먼저 ASP.NET 프로그램을 실행할 계정을 하나 만든다. 편의상 MYASPNET_WORKER라고 하자.(도메인 계정이다. 당연히) 이런 용도의 계정을 ASP.NET 아이덴티티라고 부른다.

*. %windir%\Temp 폴더에 대해서 MYASPNET_WORKER계정에게 삭제 권한을 준다.

*. %windir%\Microsoft.NET\Framework\{version}\Temporary ASP.NET 폴더에 대해서는 모든 권한을 준다.

*. 프로그램이 들어 있는 공유폴더에 대해서는 공유및 보안에 대하여 읽기, 또는 쓰기 권한을 준다. 프로그램이 쓰기 기능이 필요하면 그 권한을 줘야 한다.  모든 프로그램은 MYASPNET_WORKER의 이름으로 실행될 것이기 때문이다.

*. 다음은 프로그램에 대한 접근 권한을 줘야 한다. 이것은 .NET에 관련된 문제로 .NET보안 관계상 각 코드존에 대한 trust를 설정해야 한다.

caspol -m -ag 1.  -url "file://\\myshare\mydir\*" FullTrust

이렇게 해주면 intranet에한 모든 코드에 대해 FullTrust를 하게 된다. 이 프로그램은 %windir%\Microsoft.NET\Framework\{version}  에 있다.

*. 다음은 만든 계정이 .NET의 메타데이터베이스 등에 접근할 수 있도록 해줘야 한다.

Aspnet_regiis.exe -ga ActiveDirectoryDomain\MYASPNET_WORKER

를 실행해 주면된다. 이 프로그램도 %windir%\Microsoft.NET\Framework\{version} 에 있다.

* 이제는 새로운 응용프로그램풀을 만들어야 한다. IIS관리자를 연다. 응용프로그램풀로 가서 새로 만들기를 한다. 이름을 정하고 확인 누른다. 속성을 연다. ID 탭으로 간다. 보안계정 구성을 선택하고 MYASPNET_WORKER를 설정해 준다.

*. IIS관리자에서 웹사이트 또는 응용프로그램을 UNC Share를 사용해서 만들고 만들어둔 응용프로그램 풀로 설정해 준다. 설정은 홈디렉터리 탭에 있다.

*. 웹 어플리케이션 등록정보에서 디렉터리 보안 탭으로 간다. 인증 및 액세스 제어를 편집한다. 익명 액세스가능에 만들어둔 MYASPNET_WORKER계정을 설정하면 된다.

*. 이러고 다 했는데 웹페이지가 제대로 다 표시가 안되면 registry를 좀 수정해야 한다. 네트워크 상에 존재하는 파일의 변경을 감지하기 위해서 윈도우는 몇개의 프로토콜을 운영하는데 이 프로토콜이 기본적으로 많은 파일 갯수를 지원하지 않기 때문에 생기는 문제다. 설명하기 복잡하고 대충 아래와 같이 고친다.

HKEY_LOCAL_MACHINE\System\CurrentControlSet\Services\Inetinfo\Parameters 항목 속에 DoDirMonitoringForUnc 를 1(DWORD)로 설정한다. 항목이 존재 하지 않을경우는 만든다.

HKLM\System\CurrentControlSet\Services\LanmanWorkstation\Parameters\MaxCmds
HKLM\System\CurrentControlSet\Services\LanmanServer \Parameters\MaxMpxCt
HKLM\System\CurrentControlSet\Services\LanmanServer \Parameters\MaxWorkItems

세가지를 설정하는데 이 세가지 모두 DWORD값이다. 키가 없으면 만들어 넣는다.

MaxCmds는 IIS서버 설정에 해당하는 것이고, MaxMpxCt, MaxWorkItems는 파일서버설정에 해당한다. 서비스 환경에 따라 다양한 숫자로 설정할 수 있지만 대충 널널하게 잡는 것이 속편하다.

MaxCmds = 1000
MaxMpxCt = 1000
MaxWorkItems = 4000

정도면 어떤 환경에서나 문제가 없을 것이다. 이 값을 너무 크게 잡으면 아예 윈도우가 부팅이 안되는 불상사가 발생할 수 있으니 신중을 기해야 한다.

아래 세개 문서를 대충 조합하면 되는데 이것만으로 다 되는 것도 아니니 위 순서를 잘 따라하기 바란다.

보안도 좋지만 이렇게 복잡해서야 누가 쓸수 있기나 하겠는가... 더구나 이 모든 내용들이 한곳에 정리가 되어 있는 것도 아니다. 위의 결과는 꼬박 3일이 걸려서 모으고 또 모은 결과다.

http://www.microsoft.com/korea/technet/prodtechnol/windowsserver2003/technologies/webapp/iis/remstorg.mspx

http://www.microsoft.com/downloads/details.aspx?FamilyID=9E33EA25-666C-47FA-AC52-8D04785C4BD2&displaylang=en

http://msdn.microsoft.com/en-us/library/ms998297.aspx

Permalink |  Trackback
Terms | Privacy | host
Copyright 2005 Code99.NET
 | 아티클 | 자료실 | 블로그 | Q&A | 관리자에게