2017-03-09 42 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语言的专家,我认为这是一个错误。我已经接受了答案,但由于目前我的声誉很低,有些事情并不奏效。当我得到足够的时候,我一定会给它一个提升 –