IIS에서 대용량 파일 전송 설정하기
대용량 파일 전송 설정하기
개인 서버로써 제대로된 역할을 하려면 웹서버도 중요하지만 파일서버의 역할도 상당히 중요합니다. 즉, 나만의 저장 공간 클라우드가 있기 위해서는 반드시 필요한 작업이 있습니다. 대용량 파일 전송이 가능할 것.
호스팅 업체에서는 업로드 파일 용량을 제한하고 있습니다. 일반적으로 200MB로 되어있으며 각 호스팅사 마다 차이는 있지만 서버에 대한 부하로 인해 대부분 500MB 이내의 선에서 업로드 용량을 제한합니다.
개인 서버를 구축하고 사용하는 제일 큰 이유가 뭐겠어요. 바로 대용량 파일을 저장해 놓고 언제 어디서나 다운 받고 스트리밍 할 수 있을 것이 가장 큰 목적이 아닐까 합니다. 기본적으로 IIS에서 최대로 업로드할 수 있는 파일 크기는 30MB입니다. (조금더 정확하게는 30000000 Byte 입니다.) 그리고 php를 설치하셨다면 여기서 확인 할 수 있는 기본 크기는 20MB로 설정이 되어 있습니다.
당연한 이야기지만 이 상태로는 파일 서버는 커녕 웹 서버도 돌리기 힘듭니다. 이 부분들을 각각 최대크기로 설정을 하여 외부에서 내 서버로 파일을 올릴 때 대용량 파일까지 커버 할 수 있도록 설정 합니다.
미리 이야기를 드리자면 대략 4.2 GB를 넘는 파일은 업로드가 거의 불가능 합니다. 이것은 IIS에서 허용되는 최대 컨텐츠 길이단위가 대략 4GB정도 되기 때문에 그렇습니다.
원래 IIS에서 지원하는 한계가 이정도 인것 같은데 이 부분에 해결 방법을 찾으면 다시 포스팅 하도록 하겠습니다. 그리고 4GB 넘는 파일은 직접 웹에서 업로드 하는 방법보다는 내부 네트워크를 통해 업로드를 하고 링크를 따오는 방식이나, XE에서 외부 링크를 걸어 놓는 방법을 이용하는 것이 더 좋을 것 같습니다.
필요한 설정이 꽤 있기 때문에 잘 따라와주셨으면 합니다. 설명이 좀 필요한 부분이 있습니다.
먼저, IIS 내부의 허용가능한 용량 부터 늘려보도록 합시다. 서버 홈에서 요청 필터링이란 항목을 찾아 클릭 합니다.
여기서 왠만한 제한 규칙을 만들어서 사이트를 운영하는데 필요한 부분을 관리 합니다. 이중에 다른 부분은 건드리지 않고, 기능 설정 편집이란 항목을 클릭하여줍니다.
우리가 여기에서 주목해야 하는 부분은 요청 제한 부분입니다. 그중 허용되는 최대 콘텐츠 길이(바이트) 부분에 주목을 해보면 30000000으로 되어있는 것을 보실 수 있습니다. 이것은 최대로 요청할 수 있는 콘텐츠 길이 (=용량) 을 변경하는 작업입니다.
30000000정도 이면 30,000,000 Byte이기 때문에 대략 30MB정도입니다. 실제로 파일을 업로드 해보면 30MB 이상되는 파일에는 에러를 일으키며 업로드 에러가 나오는데 다 이녀석 때문입니다.
이 컨텐츠의 길이는 0 ~ 4294967295 까지 입니다. 대략 4.2GB가 한계입니다.
0으로 해놓으면 메인 페이지에 접속하는 것 말고는 아무 작업도 할 수 없을 정도로 요청을 진행하지 못합니다. 다른 페이지를 불러오려는 요청을 하려면 단 몇 바이트라도 신호를 보내야 하는데 요청가능한 바이트가 0 바이트 이니 요청을 진행 할 수 없습니다.
어찌되었건, 실제로는 최대로 사용할 것이기 때문에 4294967295로 설정합니다.
여기서 끝이 아닙니다. 앞서 말씀드린 바와 같이 php 자체로 요청 용량과 시간을 제한하고 있기 때문에 변경 해줍니다. php관리자를 통해 설정을 변경합니다. 글 : 2014/06/11 - [개인 서버 설치 일기/Windows 8/8.1] - 개인서버 만들기 여섯번째 - PHP설치 및 PHP관리자 사용하기)
그 중, Set runtime limits 부분을 선택합니다. 여기 설정도 요청 제한 관련 설정이니 상당히 중요합니다. 물론 Manage all settings 를 통해서 설정을 할 수 있지만 현재 우리게에 필요한 설정은 모두 Set runtime limits에 모여 있습니다.
만약 호스팅 받아서 사용하는 중에 php.ini 파일을 직접적으로 수정이 가능하다거나, 개인 서버를 운영하는데 윈도우 말고 다른 서버를 운영중이시라면 php.ini 파일에서 해당항목을 수정해주시면 됩니다.
설정에 들어가면 몇가지 설정들이 있습니다. 관련 부분 설명드리겠습니다.
Maximum POST size
한번 글 쓸때 가능한 용량입니다. 파일 첨부보다 큰 이유는 대용량 파일을 여러개 업로드 하는 경우도 있으며, 실제 글 내용에는 사진도 들어 있기 때문입니다. 기본 8M 입니다. (여기서 저는 80000M으로 변경하였습니다.)
Upload Maximum File Size
업로드로 한번에 올릴 수 있는 파일의 크기 입니다. 기본 2M 입니다. (여기서 저는 20000M으로 번경하였습니다.)
Maximum Execution time
요청 작업 진행시 실행가능한 시간입니다. 처음에는 여기 설정을 안해 주었다가 업로드가 채 안된채 에러가 나는 것을 보고 고생 좀 했습니다. 기본적으로 300(초) 이지만 저는 좀 더 실행 가능 시간을 늘려주도록 하겠습니다. 30000으로 변경
Maximum File To Upload
최대로 올릴 수 있는 파일의 개수 입니다.
Maximum input time
여기도 허용 가능한 시간을 이야기 하고 있으며 업로드시 실질적으로 시간 제한을 걸 수있는 부분입니다. 원래 600이라고 되어있지만, 6000으로 변경합니다.
이제 정상적으로 업로드가 되는지 테스트 해볼 차례입니다. 아직 Xe말고는 게시판의 특징을 갖는 사이트를 만들지 않아서 XE에서 테스트 해보도록 하겠습니다.
어느사이트나 매한가지 겠지만 xe 어드민 페이지에서 설정 > 파일업로드 > 파일 크기 제한을 선택합니다. 상황에 따라서는 문서 첨부 제한도 같이 하시길 바랍니다.
설정이 되었으면 임시 게시판에 글을 쓰면서 조금씩 용량이 큰 파일들로 업로드 테스트 해보았습니다.
먼저, 갓 30MB를 넘는 파일을 올려보았습니다. (2학기때 사용할 프로그램입니다.) 업로드 전송이 끝났습니다.(확인)
조금 더 용량이 있는 350MB짜리 파일을 올려 보았습니다. (확인)
이번에 용량이 꽤 큰 600MB정도의 파일을 업로드 해보았습니다. (확인)
모두다 업로드 가능한 것으로 확인 하였습니다. 4GB이상 되는 파일은 나중에 따로 소개를 하도록 하겠습니다. 현재는 600MB정도의 파일이라면 일반적인 파일은 모두 업로드가 가능하다는 소리가 됩니다. 이제 본격적으로 파일 서버로서의 역할을 다져보도록 하겠습니다.