2017-03-09 41 views
0

我在與角的環境變量和Azure的插槽角2個配置與Azure的部署插槽問題

我們想使用的應用程序服務提供靜態角文件,我們也希望使用Azure的插槽,使我們的問題部署更安全。

我們要使用插槽的原因是:

  1. 確保代碼在生產環境中使其充分提供給大家
  2. 減少停機時間幾乎爲零,因爲沒有在部署構建之前「上線」階段

我們的Angular站點只提供靜態文件,這意味着插槽部署需要不同的版本來爲每個插槽填寫不同的env.json環境設置。

我們正在考慮的解決方案是在同一個Angular網站上創建一個端點,並從Angular網站返回其原點以獲取其配置。這種配置方式可以在Azure的分段和生產槽中進行不同的設置,並且只需要一個Angular版本。

我們需要一些服務器端代碼來提取這些Azure應用程序設置並將它們提供回站點中的端點。我們尚未決定用於創建該端點的技術 - 我們目前正在考慮.Net Core或NodeJs,因爲它們似乎與Angular產品和開發團隊非常吻合。

有沒有人有任何插入服務器端組件的經驗來爲先前靜態的Angular網站提供配置?

+0

這是一個類似問題http://stackoverflow.com/q/42634154/7677661 –

回答

1

爲了達到您的要求,您可以將以下PHP文件放到您的站點根文件夾中。然後通過您的Angular應用程序發送GET請求到端點http://<websitename>.azurewebsites.net/appSettings.php。這會爲您提供一個JSON對象,其中包含所有應用設置

appSettings.php

<?php 

$appSettings = []; 

foreach ($_SERVER as $key => $value) { 

    if(preg_match('/^APPSETTING_/', $key)) { 
     $appSettings[str_replace('APPSETTING_', '', $key)] = $value; 
    } 
} 

header('Content-Type: application/json'); 
echo json_encode($appSettings); 
+0

非常感謝您!順便說一下,在上面的例子中(?>)有一個缺失的結束標記。 –

+0

從[PHP手冊](http://php.net/manual/en/language.basic-syntax.phptags.php):「*最好省略文件末尾的PHP結束標記,if如果一個文件是純PHP代碼*「。順便說一下,如果我的帖子是有幫助的,請接受它作爲答案:) –

+0

對不起,我不是php語言的專家,我認爲這是一個錯誤。我已經接受了答案,但由於目前我的聲譽很低,有些事情並不奏效。當我得到足夠的時候,我一定會給它一個提升 –