2016-12-13 4 views
1

이 문제를 해결할 수있는 유일한 사람은 내가 믿을 수 없지만 어디에서나 찾을 수는 없습니다.Azure 웹 역할에서 시스템 변수 설정/가져 오기

우리는 현재 우리의 응용 프로그램을 실행하는 Azure 웹 역할을 가지고 있으며 보안을 위해 시스템 환경 변수에 사용자 이름, 암호 및 API 키와 같은 자격 증명을 입력하고 getenv()을 사용하여 PHP 스크립트에 가져 오기로 결정했습니다.

IIS와 PHP가 설치된 Windows Server Web Role을 실행하고 있습니다. 나는 그렇게처럼 내 ServiceDefinition.csdef에서 시작 작업을 사용하고 있습니다 : 웹 역할이 스핀 업 될 때

<Startup> 
    <Task commandLine="setEnvironmentVariables.cmd" executionContext="elevated" /> 
</Startup> 

cmd 파일의 내용은 단순히 환경 변수를 설정합니다.

지금까지 그렇게 좋았습니다. 그러나 나는 우리의 창 dev에 서버에 경험에서 알다시피 PHP 스크립트에 새로 추가 된 환경 변수를 보려면 IISReset을 실행해야합니다. 그러면 getenv()을 사용하여 볼 수 있습니다.

여기에이 문서에 따라 푸른 웹 역할에 대한 IISReset를 실행할 수 없습니다 그러나이 https://azure.microsoft.com/en-us/blog/iis-reset-on-windows-azure-web-role/

그래서 내 스크립트는 변수를 볼 수 없습니다! 뭔가 빠졌는가, 아니면 PHP가 볼 수 있도록 웹 역할이 시작될 때 시스템 환경 변수를 설정하는 더 쉬운 방법이 있습니까?

+0

앱 설정을 사용하여 환경 변수를 설정하는 것이 고려 되었습니까? – 4c74356b41

+0

@ 4c74356b41 앱 설정? 클라우드 서비스 웹 역할/작업자 역할을 사용하는 앱 설정이 없습니다 ... Azure Web Apps에 대해 이야기하고있는 것 같습니다. – superphonic

+0

오, 죄송합니다. 제목을 잘못 읽었습니다. – 4c74356b41

답변

0

웹 롤용 클라우드 구성의 ConfigurationSettings 요소를 사용하면 설정을 정의 할 수 있습니다. 그런데 역할을 다시 컴파일하고 다시 배포하지 않고 설정을 변경하십시오.

두 번째로 중요한 요소는 환경 변수를 정의 할 수있는 Environment입니다.

그리고 값의 자식이어야하는 RoleInstanceValue 요소를 사용하여 환경 설정 값으로 환경 변수를 초기화 할 수 있습니다.

RoleInstanceValue에 대한 XPATH를 구성하는 방법은 XPath Cheat Sheet을 참조하십시오.

하지만 결국 Web Apps 및 App Service Plans를 사용하는 대신 WebRole을 개발하는 이유를 묻습니다. 여기서 AppSettings 및 ConnectionStrings를 Azure의 WebApp에서 직접 관리하고 웹에서 완전히 제거 할 수 있습니다. 구성? 나에게 유일한 명백한 이유는 웹 애플리케이션과 호환되지 않는 제 3 자 API/컴포넌트 (설치 프로그램을 실행하기위한 요구 사항 또는 COM 구성 요소 사용)를 사용하는 것입니다.

+0

오해의 경우 용서해주세요. 그러나 이것이 단지 시작 작업으로 액세스 할 수있는 변수를 생성합니다. 웹 환경에서 PHP를 원한다면 (일단 실행되면) 시스템 환경 변수에 액세스 할 수 있습니다. – superphonic

+0

내 대답에있는 모든 링크를 따라 가면 ** 환경 설정 ** 값에 따라 ** 환경 변수 **를 만들 수 있음을 알 수 있습니다. 또한 구성 설정은 시작 작업뿐만 아니라 코드에서도 액세스 할 수 있습니다. Unfortunatelly .NET 및 Java 코드 만. 필자가 아는 한 클라우드 구성 설정에 액세스 할 PHP SDK/API는 없습니다. 하지만 구성 설정을 기반으로 환경 변수를 만들 수 있습니다.[클라우드 구성 스키마의 환경 요소] 확인 (https://msdn.microsoft.com/en-us/library/azure/gg557553.aspx#Environment) – astaykov

+0

환경 변수는 클라우드 구성 설정의 런타임 경로 내에 설정됩니다 'The Runtime 요소는 Azure SDK 버전 1.3 이상에서만 사용 가능합니다. '... 그래서 어떤 SDK가 필요할까요? .NET 버전에서만 사용할 수있는 것 같습니다. – superphonic

관련 문제