linux - 将两个 asp.net 核心应用程序部署到 nginx 的一个解决方案中

标签 linux nginx deployment asp.net-core

我是 asp.net core 和部署的新手,目前,我有一个包含多个项目的解决方案,该解决方案中有一个 asp.net core 项目和一个 asp.net core web api 项目。我想把这两个项目部署到nginx上。

我已经检查了文档,

https://learn.microsoft.com/en-us/aspnet/core/publishing/linuxproduction

不过是简单的demo项目部署,有没有其他资源可以引用?

下面我有一些问题,

  1. 按照文档,我将publish文件夹中的文件复制到linux,然后执行dotnet restore和dotnet run命令。但是有个异常说找不到project.json。然后我尝试将所有源文件复制到linux,然后执行恢复并运行评论,它有效。为什么?

  2. 如果我有两个项目需要部署,就像我上面说的,我该怎么办,有什么指南可以引用吗?

最佳答案

  1. 如果您正在复制发布文件夹,则不需要使用 dotnet restore。它仅在开发期间使用,不在生产期间使用。这就是为什么当您包含源代码时,您可以毫无异常(exception)地使用它。如果您在开发环境中运行 dotnet restoredotnet publish 并且仅将发布文件夹复制到生产环境,您只需使用 dotnet path/to/publishfolder 运行它.dll 由您链接的指南中的服务设置完成

  2. 你需要有;

    • 你需要在 Program.cs 上添加 .UseUrls("http://localhost:XXXX"),XXXX 是关联的端口号,同一服务器上的每个项目都不同。<
    • 服务器上每个项目的不同文件夹以及相应的已发布文件
    • 每个项目的不同服务设置。
    • nginx 上每个项目的不同服务器 block ,具有不同的上游定义。

示例,部分nginx配置;

http{

    upstream project1 {
        server localhost:5000;
        ...
    }

    upstream project2 {
        server localhost:5001;
        ...
    }



    server {
        server_name     project1.com;
        ...
        location / {
                    proxy_pass  http://project1;
                    ...
        }
    }

    server {
        server_name     project2.com;
        ...
        location / {
                    proxy_pass  http://project2;
                    ...
        }
    }

    ...
}

关于linux - 将两个 asp.net 核心应用程序部署到 nginx 的一个解决方案中,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42081422/

相关文章:

Linux 跟踪/trace_pipe 文件不可读 (debugfs)

linux - 使用 ansible 编辑当前用户的 shell

nginx - 如何使用Digital Ocean DNS和Nginx设置全局负载平衡?

java - Spring boot 2.0.5.RELEASE 应用程序未部署在 JBoss 6.4.0 中

java - 如何从 Java Web Start (JDK 8) 升级到 jlink (JDK 9+) 以实现自动更新应用程序?

python - 部署 python 应用程序

c - 数字解析器程序 : why strtol/strtod fails for exponential and hex numbers

Linux 和多 perl 版本

ssl - 在 nginx 中未检测到 session 缓存

nginx - 将nginx主机和proxypass重写为squid