asp.net core发布到ubuntu

我有一个asp.net core写的restful api服务,使用.net 7.0框架,需要发布到ubuntu上,请熟悉此过程的指导一下,给个详细的教程。
网上找的要么比较老旧,要么细节不够全。

注意:谢绝chatGPT等生成的答案,这个我也有账号,自己也可以问。请真正熟悉的朋友进来指点。

不用云服务吗?测试过腾讯云。
项目右键发布到容器镜像。
有了镜像就可以建函数服务或者集群了。

提供参考实例:https://www.jb51.net/article/113254.htm

安装 .NET 7.0 SDK

使用以下命令添加 Microsoft 包签名密钥和包存储库:

wget https://packages.microsoft.com/config/ubuntu/21.10/packages-microsoft-prod.deb -O packages-microsoft-prod.deb
sudo dpkg -i packages-microsoft-prod.deb

然后安装 .NET 7.0 SDK:

sudo apt-get update
sudo apt-get install -y apt-transport-https
sudo apt-get update
sudo apt-get install -y dotnet-sdk-7.0

准备发布应用程序

dotnet publish -c Release

安装 Nginx

sudo apt-get update
sudo apt-get install nginx

配置 Nginx

在 /etc/nginx/sites-available 目录中创建一个新的配置文件,例如 myapp.conf:

sudo nano /etc/nginx/sites-available/myapp.conf

将以下内容添加到文件中:

server {
    listen        80;
    server_name   example.com;

    location / {
        proxy_pass         http://localhost:5000;
        proxy_http_version 1.1;
        proxy_set_header   Upgrade $http_upgrade;
        proxy_set_header   Connection keep-alive;
        proxy_set_header   Host $host;
        proxy_cache_bypass $http_upgrade;
        proxy_set_header   X-Forwarded-For $proxy_add_x_forwarded_for;
        proxy_set_header   X-Forwarded-Proto $scheme;
    }
}

在这个配置文件中,我们将 Nginx 配置为监听端口 80,并将所有请求转发到本地的 ASP.NET Core 应用程序运行的端口 5000。

保存并关闭文件。

启用 Nginx 配置

sudo ln -s /etc/nginx/sites-available/myapp.conf /etc/nginx/sites-enabled/

然后重新加载 Nginx,使更改生效:

sudo systemctl reload nginx

运行应用程序

cd bin/Release/net7.0/publish
dotnet myapp.dll

把Asp.net Core程序代码部署到Ubuntu(不含数据库)
非常详细,可以借鉴下
https://www.cnblogs.com/dissun/p/11245096.html

基于new bing的编写参考:
在将ASP.NET Core应用程序部署到Ubuntu之前,需要确保安装正确的.NET Runtime或SDK(.NET 7.0)。以下是将ASP.NET Core应用程序发布到Ubuntu的详细步骤:

  • 首先,您需要在Ubuntu上安装必要的依赖项。在终端中运行以下命令:
sudo apt-get update
sudo apt-get install -y curl libunwind-dev libssl-dev libcurl4-openssl-dev zlib1g libicu-dev uuid-dev

  • 安装.NET Runtime或SDK(.NET 7.0)。根据您的需要下载并安装官方包。
wget https://download.visualstudio.microsoft.com/download/pr/34f6a8d7-9ad5-4468-b0cb-2988a99ebc69/f264e52ca256e5fd6b3b1091243565fc/dotnet-sdk-7.0.100-linux-x64.tar.gz
tar zxf dotnet-sdk-7.0.100-linux-x64.tar.gz -C /usr/share/dotnet/
sudo ln -s /usr/share/dotnet/dotnet /usr/bin/dotnet

  • 编译并发布您的ASP.NET Core应用程序。在应用程序的根文件夹中打开终端,然后运行以下命令:
dotnet publish --configuration Release --output /var/www/myapp

这将在/var/www/myapp文件夹中生成一些文件。

  • 在Ubuntu上启动ASP.NET Core应用程序。在终端中运行以下命令:
sudo systemctl enable kestrel-myapp.service

在Ubuntu上创建一个名为kestrel-myapp.service的systemd服务文件。该文件应放置在/etc/systemd/system/目录中。

  • 启动应用程序并检查它是否正在运行。在终端中运行以下命令:
sudo systemctl start kestrel-myapp.service
sudo systemctl status kestrel-myapp.service

这将启动ASP.NET Core应用程序并显示它的状态。

最后,您可以通过在浏览器中输入服务器IP地址和端口号来访问应用程序(例如:http://example.com:5000)。

希望以上步骤对您有所帮助!

该回答通过自己思路及引用到GPTᴼᴾᴱᴺᴬᴵ搜索,得到内容具体如下:
好的,下面是一个详细的教程,介绍如何将 ASP.NET Core Restful API 服务发布到 Ubuntu 上,并使用 Nginx 作为反向代理服务器。

1、 安装 .NET Core 运行时环境

在 Ubuntu 上运行 ASP.NET Core 服务需要安装 .NET Core 运行时环境。您可以按照以下步骤进行安装:

1.1. 添加 Microsoft 包存储库

sudo apt-get update
sudo apt-get install -y curl libunwind8 gettext
curl https://packages.microsoft.com/keys/microsoft.asc | gpg --dearmor > microsoft.asc.gpg
sudo mv microsoft.asc.gpg /etc/apt/trusted.gpg.d/

1.2. 将 .NET Core 包存储库添加到 apt-get 源中

sudo sh -c 'echo "deb [arch=amd64] https://packages.microsoft.com/repos/microsoft-ubuntu-$(lsb_release -cs)-prod $(lsb_release -cs) main" > /etc/apt/sources.list.d/dotnetdev.list'

1.3. 安装 .NET Core 运行时环境

sudo apt-get update
sudo apt-get install -y dotnet-runtime-7.0

2、 编译并发布 ASP.NET Core Restful API 服务

您可以使用 Visual Studio 或者命令行工具 (dotnet CLI) 来编译和发布 ASP.NET Core Restful API 服务。以下是一个使用 dotnet CLI 的示例命令:

dotnet publish -c Release -o <publish_directory>

其中,-c Release 表示使用 Release 模式编译发布,-o 表示指定发布的目录,例如:

dotnet publish -c Release -o /var/www/myapp

3、 配置 Nginx 反向代理服务器

您可以使用 Nginx 作为反向代理服务器将请求转发到 ASP.NET Core Restful API 服务。以下是一个 Nginx 配置文件的示例:

server {
    listen 80;
    server_name example.com;

    location / {
        proxy_pass         http://localhost:5000;
        proxy_http_version 1.1;
        proxy_set_header   Upgrade $http_upgrade;
        proxy_set_header   Connection keep-alive;
        proxy_set_header   Host $host;
        proxy_cache_bypass $http_upgrade;
    }
}

在上面的配置文件中,listen 80 表示监听端口为 80,server_name 表示服务器的域名,location / 表示将所有请求都转发到 ASP.NET Core Restful API 服务。proxy_pass 指定了转发的地址,这里是 http://localhost:5000,也就是 ASP.NET Core Restful API 服务的地址。

4、 启动 ASP.NET Core Restful API 服务和 Nginx 反向代理服务器

您可以使用以下命令启动 ASP.NET Core Restful API 服务:

cd /var/www/myapp
dotnet myapp.dll

其中 myapp.dll 是您 ASP.NET Core Restful API 服务的 DLL 文件名,可以根据您的实际情况替换。

您可以使用以下命令启动 Nginx 反向代理服务器:

sudo systemctl start nginx

5、 测试 ASP.NET Core Restful API 服务

现在您可以使用浏览器或者其他工具来测试 ASP.NET Core Restful API 服务。例如,假设您的 Restful API 的 URL 是 http://example.com/api/values,您可以在浏览器中输入该地址,应该可以看到返回的数据。

希望这个教程能够帮助您成功将 ASP.NET Core Restful API 服务发布到 Ubuntu 上。


如果以上回答对您有所帮助,点击一下采纳该答案~谢谢

  1. 安装.NET SDK和运行时环境
    在Ubuntu上安装.NET SDK和运行时环境,可以使用apt-get命令或手动下载安装包的方式。具体步骤如下:
  • 打开终端,执行以下命令添加Microsoft的APT存储库:

```bash
sudo apt-get update
sudo apt-get install -y apt-transport-https
sudo sh -c 'echo "deb [arch=amd64] https://packages.microsoft.com/repos/microsoft-ubuntu-$(lsb_release -cs)-prod $(lsb_release -cs) main" > /etc/apt/sources.list.d/dotnetdev.list'
sudo apt-get update


- 安装.NET SDK和运行时环境:

```bash
sudo apt-get install -y dotnet-sdk-7.0
sudo apt-get install -y aspnetcore-runtime-7.0

  1. 部署应用程序
    将ASP.NET Core应用程序部署到Ubuntu上,可以使用多种方式,例如使用SSH协议、FTP协议或者Docker容器等。下面以使用SSH协议为例,介绍具体步骤:
  • 在Ubuntu上创建一个目录,用于存放应用程序文件。可以使用mkdir命令创建一个新目录:
    mkdir /var/www/myapp

将应用程序文件复制到该目录下。可以使用scp命令将应用程序文件从本地复制到Ubuntu上:
scp -r /path/to/myapp ubuntu@:/var/www/myapp
上面是例子根据自己情况上传

进入应用程序目录,使用dotnet命令运行应用程序:

cd /var/www/myapp
dotnet myapp.dll

  • 应用程序将在Ubuntu上启动,并监听指定的端口。可以在浏览器中输入服务器IP地址和端口号,访问应用程序。
  1. 配置Nginx反向代理
    为了提高应用程序的安全性和性能,可以使用Nginx反向代理将应用程序暴露在公网上。具体步骤如下:
  • 安装Nginx:
    sudo apt-get install nginx
    修改Nginx配置文件,添加反向代理配置:

sudo nano /etc/nginx/sites-available/default

server {
    listen 80;
    server_name <server-ip>;
     location / {
        proxy_pass http://localhost:<app-port>;
        proxy_http_version 1.1;
        proxy_set_header Upgrade $http_upgrade;
        proxy_set_header Connection keep-alive;
        proxy_set_header Host $host;
        proxy_cache_bypass $http_upgrade;
    }
}



其中,为服务器IP地址,为应用程序监听的端口号。

  • 保存并关闭文件,重启Nginx服务:
    sudo service nginx restart

现在可以在浏览器中输入服务器IP地址,访问应用程序。

  1. 准备Ubuntu服务器环境

确保Ubuntu服务器上安装了必要的软件和服务,例如.NET 7.0运行时、NGINX或Apache、SSL证书等。

  1. 构建和发布ASP.NET Core应用程序

在本地计算机使用Visual Studio或Visual Studio Code构建和发布ASP.NET Core应用程序,并将生成的项目发布到本地文件夹中。

可以通过以下命令在Ubuntu服务器上创建一个目录来存放应用程序:

sudo mkdir /var/www/myapp

将生成的项目发布到本地文件夹:

dotnet publish /path-to-project/project-name.csproj -c Release -o /var/www/myapp
  1. 配置NGINX

要将NGINX设置为反向代理Web应用程序到Kestrel服务器,请按照以下步骤操作:

创建一个Server Block文件,命名为myapp:

sudo vi /etc/nginx/sites-available/myapp

使用以下内容填充文件来配置NGINX:

server {
    listen 80;
    server_name mydomain.com;  // 替换为域名或IP地址

    location / {
        proxy_pass http://localhost:5000;  // 替换为应用程序的Kestrel服务器端口
        proxy_http_version 1.1;
        proxy_set_header Upgrade $http_upgrade;
        proxy_set_header Connection keep-alive;
        proxy_set_header Host $host;
        proxy_cache_bypass $http_upgrade;
    }
}

启用Server Block:

sudo ln -s /etc/nginx/sites-available/myapp /etc/nginx/sites-enabled/

重启 NGINX:

sudo systemctl restart nginx.service
  1. 配置Kestrel服务器

创建一个Kestrel服务单元文件,命名为myapp.service:

sudo vi /etc/systemd/system/myapp.service

使用以下内容填充文件来配置Kestrel服务器:

[Unit]
Description=My ASP.NET Core App
After=network.target

[Service]
User=root
WorkingDirectory=/var/www/myapp
ExecStart=/usr/bin/dotnet /var/www/myapp/myapp.dll // 替换为应用程序的主程序文件

[Install]
WantedBy=multi-user.target

启用Kestrel服务:

sudo systemctl enable myapp.service

启动Kestrel服务:

sudo systemctl start myapp.service

使用以下命令检查Kestrel服务的状态:

sudo systemctl status myapp.service
  1. 配置SSL证书

使用以下命令获取SSL证书:

sudo certbot --nginx -d mydomain.com

根据提示完成证书申请流程,证书申请成功后会自动配置NGINX。

重启 NGINX:

sudo systemctl restart nginx.service