2016-12-13 12 views
1

私はこの問題を克服した唯一の人だとは思えませんが、どこでも何かを見つけることはできません。Azure Webロールでシステム変数を設定/取得する

私たちは現在、私たちのアプリを実行しているいくつかのAzure Webロールを持っています。セキュリティのために、ユーザー環境変数にユーザー名、パスワード、APIキーなどの認証情報を入れ、getenv()を使ってPHPスクリプトで取得しました。

IISとPHPをインストールしてWindows Server Webロールを実行しています。私はそうのように私のServiceDefinition.csdefにスタートアップタスクを使用しています:ウェブロールがスピンアップされたときに

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

cmdファイルの内容は、単に環境変数を設定します。

これまでのところとても良いです。しかし、私はWindowsの開発サーバーの経験から、PHPスクリプトが新しく追加された環境変数を見るためには、IISResetを実行しなければならないと、getenv()を使用してそれらを見ることができるということを知っています。

あなたはAzureのウェブ役割にIISResetを実行することはできませんしかし、この文書ごととしてここにhttps://azure.microsoft.com/en-us/blog/iis-reset-on-windows-azure-web-role/

だから私のスクリプトは、変数を参照することはできません!私は何か不足していますか、またはWebロールが起動したときにPHPがそれらを見ることができるようにシステム環境変数を設定する方が簡単ですか?

+0

あなたはアプリの設定を使用して環境変数を設定することを検討しましたか? – 4c74356b41

+0

@ 4c74356b41アプリの設定?クラウドサービスのWebロール/ワーカーロールを使用するアプリケーション設定はありません。Azure Web Appsについて語っていると思います。 – superphonic

+0

ああ申し訳ありませんが、タイトルを誤って読んでいます – 4c74356b41

答えて

0

WebRoleのクラウド設定のConfigurationSettings要素で設定を定義できます。そして、あなたの役割を再コンパイルして再配置せずにこれらの設定を変更します。

ケースの2番目に重要な要素は、Environmentで、環境変数を定義することができます。

そして、値の子であるRoleInstanceValue要素を使用して、環境設定値を初期化することができます。

RoleInstanceValueのXPATHを構成する方法については、XPath Cheat Sheetを参照してください。

最後に、WebアプリケーションとApp Service Plansを使用する代わりにWebRoleを開発する理由を聞いてみましょう。そこでは、AzureのWebAppでAppSettingsとConnectionStringsを直接管理し、Webから完全に取り除くことができます。設定?私の唯一の明白な理由は、Webアプリケーションと互換性のないサードパーティのAPI /コンポーネント(インストーラを実行するための要件やCOMコンポーネントの使用法など)の使用です。

+0

私が誤解している場合は許してください。起動タスクによってアクセス可能な変数を作成します。私はシステム環境変数にアクセスできるようにするためにwebrole上でPHPを(一度起動していれば)欲しい。 – superphonic

+0

私の答えのすべてのリンクをたどると、**環境設定**の値に基づいて**環境変数**を作成できることがわかります。さらに、構成設定には、起動タスクだけでなく、コードからアクセスすることもできます。不幸にも.NETとJavaコードのみ。私の知る限り、クラウド構成設定にアクセスするPHP SDK/APIはありません。ただし、環境設定変数に基づいて環境変数を作成することはできます。[Cloud Configuration Schemaの環境要素](https://msdn.microsoft.com/en-us/library/azure/gg557553.aspx#Environment)を確認してください – astaykov

+0

環境変数は、クラウド構成設定のランタイムパス内で設定されています'The Runtime要素は、Azure SDKバージョン1.3以上を使用してのみ利用可能です。 '... ...どのSDKが必要でしょうか?それは、.NETのバージョンでのみ利用可能なようですか? – superphonic

関連する問題