当前位置: 首页 > 知识库问答 >
问题:

在azure linux应用程序服务中托管angular应用程序

冯星阑
2023-03-14

我正在使用angular框架构建前端应用程序。有没有办法,我如何将应用程序部署到Azure Linux应用程序服务?

我已经用NodeJS堆栈创建了Web应用程序,并将其分配给Linux应用程序服务。我用命令ngbuild--prod构建了我的angular应用程序,并将其部署到这个web应用程序中。当我使用url:https打开web浏览器时://

我曾考虑在Azure存储上使用静态网站,但我发现,每个Azure存储只能有一个静态网站,但假设我有10个静态网站。因此,我不需要创建10 Azure存储帐户。


共有2个答案

司徒云
2023-03-14

至于你的第一个问题,看看这篇文章,它解释了如何使用node.js应用程序管理URL重写

请接受此答案,并为任何其他问题创建另一个帖子。

翟丰茂
2023-03-14

您仍然看到默认页面的原因是服务器不知道如何查看索引。html,它是Angular应用程序的入口点。您需要创建一个索引。js文件,然后将其包含在Angular应用程序的资产部分。json。

"assets": [
              "src/favicon.ico",
              "src/assets",
              "src/index.js"
            ],

下面是一个示例索引。js文件,它还包括从非www域重定向到www域:

// Imports
var express = require('express');
var path = require('path');

// Node server
var server = express();

// When you create a Node.js app, by default, it's going to use hostingstart.html as the 
// default document unless you configure it to look for a different file
// https://blogs.msdn.microsoft.com/waws/2017/09/08/things-you-should-know-web-apps-and-linux/#NodeHome
var options = {
    index: 'index.html'
};

// Middleware to redirect to www
server.all("*", (request, response, next) => {
    let host = request.headers.host;

    if (host.match(/^www\..*/i)) {
        next();
    } else {
        response.redirect(301, "https://www." + host + request.url);
    }
});

// This needs to be after middleware configured for middleware to be applied
server.use('/', express.static('/home/site/wwwroot', options));

// Angular routing does not work in Azure by default
// https://stackoverflow.com/questions/57257403/how-to-host-an-angular-on-azure-linux-web-app
const passthroughExtensions = [
    '.js',
    '.ico',
    '.css',
    '.png',
    '.jpg',
    '.jpeg',
    '.woff2',
    '.woff',
    '.ttf',
    '.svg',
    '.eot'
];

// Route to index unless in passthrough list
server.get('*', (request, response) => {
    if (passthroughExtensions.filter(extension => request.url.indexOf(extension) > 0).length > 0) {
        response.sendFile(path.resolve(request.url));
    } else {
        response.sendFile(path.resolve('index.html'));
    }
});

server.listen(process.env.PORT);
 类似资料:
  • 我有一个WCF服务,我试图在Sitecore 7.1应用程序中托管。具有相同配置的Web服务在空白Asp.net应用程序中托管时运行良好。但是当尝试从Sitecore应用程序运行它时,它不起作用(下面的错误)。我也尝试了这些解决方案,但没有运气。我不确定它们是否应该适用于最新版本的Sitecore。 https://adeneys.wordpress.com/2008/10/17/make-sit

  • 但是所有的答案和评论对链接帖子的回应也没有太大帮助

  • 我在本地系统上安装了laravel 5.1并开发了一个应用程序。 现在我必须在一个实时服务器上托管它。我们拥有的实时服务器是我们自己的,并且在其上运行许多其他应用程序。 我刚刚将laravel文件夹放在了一个路径中(没有其他内容),但它没有像我预期的那样工作。 我读过一些答案,上面说我必须将公用文件夹复制到服务器的公用文件夹中,其余的复制到一个文件夹中,对吗? 我必须安装作曲家,并按照larave

  • 我想在spring应用程序中使用ManagedExecutorService。然而,spring无法注入它。降低误差。 原因:org.springframework.beans.factory.NoSuchBeanDefinitionException:找不到 [javax.enterprise.concurrent.ManagedExecutorService] 类型的合格 bean,用于依赖关

  • 这是一组问题,而不是一个非常具体的问题。在过去的几周/几天里,我对如何在“云中”正确地托管JAVA PLAY应用程序的信息感到困惑,因为很多信息分散在不同的服务上,我想把所有这些小部分集中在一起,因为很多事情都很重要,需要在完整的上下文中看到。然而,我把我的考虑转移到了问题的底部,因为它们主要是我的观点和主观发现,我不想对此负责。如果我做错了什么,请毫不犹豫地指出。 我们的场景:我们在Java P

  • 我来自一个角度分明的世界,在那里我可以将逻辑提取到服务/工厂,并在控制器中使用它们。 我试图了解如何在React应用程序中实现相同的功能。 假设我有一个验证用户密码输入的组件(它的强度)。它的逻辑相当复杂,因此我不想将其写在组件中。 我应该在哪里写这个逻辑?在商店里,如果我使用flux?还是有更好的选择?