我是 asp.net core 和部署的新手,目前,我有一个包含多个项目的解决方案,该解决方案中有一个 asp.net core 项目和一个 asp.net core web api 项目。我想把这两个项目部署到nginx上。
我已经检查了文档,
https://learn.microsoft.com/en-us/aspnet/core/publishing/linuxproduction
不过是简单的demo项目部署,有没有其他资源可以引用?
下面我有一些问题,
按照文档,我将publish文件夹中的文件复制到linux,然后执行dotnet restore和dotnet run命令。但是有个异常说找不到project.json。然后我尝试将所有源文件复制到linux,然后执行恢复并运行评论,它有效。为什么?
如果我有两个项目需要部署,就像我上面说的,我该怎么办,有什么指南可以引用吗?
最佳答案
如果您正在复制发布文件夹,则不需要使用
dotnet restore
。它仅在开发期间使用,不在生产期间使用。这就是为什么当您包含源代码时,您可以毫无异常(exception)地使用它。如果您在开发环境中运行dotnet restore
和dotnet publish
并且仅将发布文件夹复制到生产环境,您只需使用 dotnet path/to/publishfolder 运行它.dll 由您链接的指南中的服务设置完成你需要有;
- 你需要在 Program.cs 上添加
.UseUrls("http://localhost:XXXX")
,XXXX 是关联的端口号,同一服务器上的每个项目都不同。< - 服务器上每个项目的不同文件夹以及相应的已发布文件
- 每个项目的不同服务设置。
- nginx 上每个项目的不同服务器 block ,具有不同的上游定义。
- 你需要在 Program.cs 上添加
示例,部分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/