Windows Azure Website의 개발 스택 지원
이 게시물은 1 월 10 일에 게시 된 Windows Azure Websites Development Stacks Support 의 번역본 입니다.
메모 : 이번에는 Windows Azure 웹 사이트 팀의 프로그램 관리자를 맡고 있는 Daria Grigoriu 와 Windows Azure Web Sites Developer Experience 파트너들이 공동 작성한 기사 입니다.
Windows Azure 웹 사이트 (WAWS) 팀은 웹 응용 프로그램을 빠르게 실행 하고 웹 응용 프로그램 확장의 여지를 확보 하는 데 도움이 되기 위해서 개발 스택 지원 모델에 적극적으로 투자 하고 있습니다. 본 포스트에서는 개발자 스택 버전 관리 및 확장성에 대한 기본 원리를 소개 하고, 소개된 원리들을 웹 응용 프로그램에 적용 하는 방법에 대해 설명 합니다.
WAWS는 현재 .NET, PHP, Node.js, 그리고 Python 스택을 지원하고 있습니다. 각 스택의 기술 정보는 Windows Azure 개발자 센터 (https://www.windowsazure.com/en-us/develop - 영문)에서 확인하실 수 있습니다. 웹 사이트를 생성 한 후 자신의 콘텐츠를 업로드해 주시면 최소한의 정보 입력으로 서비스 할 수 있도록 해 드립니다.
WAWS 개발스택버전관리
현재 지원 중인 일부 개발 스택 (PHP 등)에는 side-by-side version( 여러버전을 동시에 유지) 을 지원 하도록 설계 되어 있습니다. 기본적으로 개발 스택 플랫폼에서 검증 된 최신 버전의 집합을 제공되고 설정 되어 있기 때문에, 호환성 등의 이유로 특정 버전을 사용 해야 하는 경우를 제외 하고 특별히 추가적인 설정을 할 필요는 없습니다.
.Net 과 같은 다른 개발 스택의 일부 버전 (.NET 4.5 등)에서는 인플래이스 업그레이드(in-place upgrade) 가 가능 합니다. 이와 같은 경우는 개발 스택이 최근 정책을 반영 하며 최신 버전의 기능 및 혜택을 제공 하기 위해 노력 하 고 있습니다.
다음 링크에서는 지원 되는 개발 스택 별로 WAWS에서 사용 가능한 버전 및 기본 버전을 함께 설명하고 있습니다. 참고 하시기 바랍니다. https://github.com/projectkudu/kudu/wiki/Azure-Web-Sites-Development-Stacks
개발스택확장
사용자별로 커스터마이징이 필요한 경우에는 각 개발 스택 별로 확장 지점(extensibility points)을 제공 합니다.
.NET
.NET 프레임 워크는 WAWS 플랫폼과 밀접 하게 통합 되어 있습니다.
구성
구성은 web.config 파일을 사용 하여 지정 합니다. 개발자 들이 자주 사용하는 Apphost.config 파일은 WAWS에서 직접 편집할 수 없습니다. 편집을 위해서는 XML Document Transformation (XDT) 선언을 사용 해야 합니다. 기본 문서와 같은 apphost.config 파일의 일부 설정은 Azure 포털에서 웹 사이트의 CONFIGURE 탭에서 편집할 수 있습니다.
확장성
웹 응용 프로그램 폴더에는 MVC와 웹 페이지 같은 바이너리 배포 가능한 구성 요소를 추가할 수 있습니다.
Node.js
구성
다음은 WAWS에 배포 된 Node.js 프로그램의 중요 구성 파일입니다.
- package.json
플랫폼에 중립적인 Node.js 프로그램별 구성 파일 입니다. 예를 들어, Node.js 모듈 의존 관계 (Express.js) 또는 런타임의 버전 번호를 지정할 수 있습니다.
- iisnode.yml
Iisnode 사용자 지정 IIS 모듈 구성 파일입니다. 예를 들어, node.exe를 시작 하는 명령, iisnode에 의해 실행되는 되는 node.exe 프로세스의 숫자 및 로깅 구성을 지정할 수 있습니다.
- web.config
WAWS 플랫폼에서 사용 하는 IIS 구성 파일입니다. 실행에 필요한 처리기를 등록 하고 정적 파일에 성능 최적화를 위해 URL rewriting을 가능 하게 합니다.
확장성
WAWS 통합 된 Node.js 개발 스택 핵심 기능에 대 한 자세한 내용은https://nodejs.org/api/ (영어)를 참조 하십시오. 개발 스택 핵심 기능은 NPM 모듈 에코 시스템 (https://npmjs.org/, 영어)을 사용 하여 확장할 수 있습니다. Package.json 구성 파일을 사용 하여 웹 응용 프로그램에 추가 되는 모듈을 지정 할 수 있습니다. WAWS 플랫폼에 통합 된 git 기본 소스 제어 기능에는 git push 작업에서 종속성을 검색 하고 설치 하는 동안 npm install을 실행 합니다. FTP 등의 다른 배포 메커니즘을 사용 하는 경우 로컬에서 개발 하는 중에 모듈을 다운로드 및 구성 하고 웹 응용 프로그램 전체를 WAWS에 업로드 할 수 있습니다. NPM은 크로스 플랫폼 자바 스크립트 모듈, 특정 플랫폼을 대상으로 설계 된 네이티브 모듈이 모두 포함 하기 때문에 항상 두 모듈에서 응용 프로그램을 테스트 하는 것을 권장 합니다.
런타임버전
WAWS 플랫폼에 제공 되는 모든 버전의 Node.js중에 하나를 선택 하거나 사용자 지정 Node.js 런타임을 업로드 하고 구성할 수 있습니다. 구체적인 절차에 대해서는 Windows Azure 개발자 센터 (https://www.windowsazure.com/en-us/develop/nodejs/common-tasks/specifying-a-node-version, 영문)를 참조 하십시오.
PHP
구성
WAWS에 배포 된 PHP 응용 프로그램의 기본 구성 파일은 PHP 표준 .user.ini 파일입니다. 이 파일을 사용 하면 진단(diagnostic) 시에 사용 되는 display_errors와 같은, 조정 가능한 PHP 지시문을 설정할 수 있습니다.
확장성
WAWS의 기본은 PECL 코어 확장 모듈을 지원 하기 때문에 사용자 지정 확장 모듈의 사용을 편리하게 이용하실 수 있습니다. 사용자 확장 모듈의 사용을 위해서는.dll 파일을 FTP 루트 바로 아래에 이동 시키고 CONFIGURE 탭에서 PHP_EXTENSIONS 라는 응용 프로그램 설정(setting)을 추가하고, 사용자 지정의 PHP 확장 모듈을 둔 위치 (응용 프로그램 루트의 상대 주소)로 값을 설정해 주시면 됩니다.
런타임 버전 지정
Azure 포털에서 웹 사이트의 CONFIGURE 탭을 열어서 버전을 선택할 수 있습니다.
WAWS는 Fast-CGI 기반의 사용자 지정 PHP 개발 스택 역시 지원 됩니다. 이를 위해서는 웹 사이트의 루트에 개발 스택을 업로드 합니다. 웹 사이트의 CONFIGURE 탭에서 새 스크립트 프로세서 (php-cgi.exe)를 * .php확장자와 연결 합니다. 이때 스크립트 프로세서 설정의 경우 절대 경로로 지정해 주셔야 합니다. 예를 들면 D:\home\site\wwwroot\php5.5\php-cgi.exe 와 같습니다. 여기서 D:\home\site\wwwroot는 사이트의 루트폴더를 말합니다.
Python
구성
WAWS에 배포 된 Python 응용 프로그램의 기본 구성 파일은 web.config입니다. 즉, web.config 파일을 변경하셔서 실행에 필요한 처리기를 등록 하고 정적 파일에 성능 최적화를 위해 URL rewriting을 가능 하게 합니다. 하지만 받드시 web.config 파일을 통해서 변경하실 필요는 없으며, 핸들러 매핑 설정은 Azure 포털 CONFIGURE 탭에서 설정 변경을 하실 수 있습니다. 자세한 내용은 Windows Azure 개발자 센터 (https://www.windowsazure.com/en-us/develop/python/tutorials/web-sites-configuration, 영문)를 참조 하십시오.
일부 구성 옵션은 역시 Azure 포털 CONFIGURE 탭의 App Settings에서 업데이트할 수 있습니다.
- WSGI_LOG: 응용 프로그램 오류, 구성 오류를 저장 하는 로그 파일의 절대 경로
- WSGI_HANDLER: 환경 및 start_response 함수를 처리하는 WSGI 프로토콜용 callable application object 설정
이 값은 프로그램 또는 패키지 이름 다음에 모듈에 사용할 속성을 지정 해야 합니다 (예: mypackage.mymodule.handler). 또한 괄호를 추가 하여 속성이 호출 가능함을 표시할 수도 있습니다.
- WSGI_RESTART_FILE_REGEX: 파일 이름을 지정 하는 정규식
.*((\\.py)| (\\.config)) $는 기본적으로 모든 * .py 파일 및 * .config 파일을 참조 합니다.
확장성
배포 패키지를 추가 하려면 패키지를 응용 프로그램 루트 바로 아래에 배치 하고 web.config 또는 [App Settings]을 사용 하는 PYTHONPATH 값을 설정 해야 합니다. 현재 Virtualenv는 WAWS에서 지원 되지 않습니다.
패키지의 배포를 지원 하려면 먼저 웹 사이트의 루트 바로 아래에 패키지가 저장 될 디렉터리를 만듭니다. Python lib 폴더에 있는 site-packages 디렉터리와 유사 하지만, 이 디렉터리는 웹 응용 프로그램 아래에 저장 되며 Windows Azure 웹 사이트에 배포 됩니다. 새 디렉터리에 패키지를 복사 하고 web.config 파일에서 PYTHONPATH이 디렉터리의 절대 경로를 추가 합니다 (예: D:\home\site\wwwroot\my-packages). 이렇게 하면 웹 응용 프로그램 내에서 패키지를 가져올 수 있습니다.
이 방법으로 응용 프로그램에 Django를 추가할 수 있습니다. 먼저 기존 Python 설치에 Django를 다운로드 하거나 설치 합니다. 그런 다음 응용 프로그램의 디렉터리에 Django 패키지 (보통, _init_.py 파일이 포함 되어 있는 django 라는 폴더)에 복사 합니다. 기본적으로, 패키지를 검색 하는 디렉터리 목록에 응용 프로그램 경로가 포함 되어 있습니다. 하위 디렉터리 (예: mypackages\django) Django 패키지를 복사 하려는 경우, web.config 파일의 PYTHONPATH에 부모 디렉터리 (이 경우 D:\home\site\wwwroot\mypackages)을 추가 합니다.
자세한 내용은 Windows Azure 개발자 센터 (https://www.windowsazure.com/en-us/develop/python/tutorials/web-sites-with-django, 영문)를 참조 하십시오.
런타임 버전 지정
Fast-CGI 기반 사용자 지정 파이썬 개발 스택을 지원 됩니다. 따라서, 사용자 지정 개발 스택을 웹 사이트의 루트에 바로 업로드 하고 웹 사이트의 처리기 매핑을 Fast-CGI 기반 스크립트 프로세서에 대 한 절대 경로를 추가하야 사용하실 수 있습니다.
여러분의 소중한 의견을 기다리고 있습니다. 개발 스택 지원 앞으로 어떻게 개선 해야 할지에 대해 꼭 의견을 보내주세요. 현재까지 사용자들의 영문의견을 보시려면 포럼 (영문) 을 참고하시면 됩니다.