如何在 Linux 上部署 .Net Core 应用程序

当微软推出其 .Net Core 框架时,关键卖点是它是一个跨平台框架,这意味着现在我们不仅可以在 Windows 上托管我们的 .Net 应用程序,还可以在 Linux 上托管我们的 .Net 应用程序,所以让我们看看如何在 Linux 上部署 .Net 核心应用程序。

步骤 1-发布您的 .Net Core 应用程序

首先,在 VS 上创建一个 .Net 核心应用程序;您可以创建一个 MVC 项目或 Web API 项目,如果您已经有一个现有项目,则打开它。

  1. 右键单击您的项目
  2. 点击发布
  3. 现在创建一个新的发布配置文件,并浏览要发布项目 dll 的文件夹
  4. 单击发布,它将在文件夹中创建你的 dll

第 2 步 - 在 Linux 上安装所需的 .Net 模块

现在我们有了我们的 Web 应用程序 dll,现在我们需要将其托管在 Linux 环境中。首先,我们需要了解部署在 Linux 中的工作原理。.Net 应用程序在 Kestrel 服务器上运行,我们在 Linux 环境中运行 Apache 或 Nginx 服务器,它充当代理服务器并处理来自机器外部的流量并将其重定向到 Kestrel 服务器,因此我们将使用 Apache 或 Nginx 服务器作为中间层。

在本文中,我们将使用 Apache 作为代理服务器。

首先,我们需要在 Linux 环境中安装 .Net core 模块。为此,请运行以下命令:

  • sudo apt-get 更新
  • sudo apt-get 安装 apt-transport-https
  • sudo apt-get 更新
  • sudo apt-get 安装 dotnet-sdk-3.1
  • sudo apt-get 安装 dotnet-runtime-3.1
  • sudo apt-get 安装 aspnetcore-runtime-3.1

第 3 步 - 安装并配置 Apache 服务器

现在我们已经拥有了所有必需的 .Net 包。我安装了一个附加包,因此如果您正在运行其他项目,它将有所帮助。

现在安装 Apache 服务器,

  • sudo apt-get 安装 apache2

  • sudo a2enmod 代理 proxy_http proxy_html proxy_wstunnel

  • sudo a2enmod 重写
    现在我们需要创建一个 conf 文件来在 Apache 上设置我们的代理。创建以下文件:

  • sudo nano /etc/apache2/conf-enabled/netcore.conf
    现在将以下配置复制到该文件中,

<VirtualHost *:80>
   ServerName www.DOMAIN.COM
   ProxyPreserveHost On
   ProxyPass / http://127.0.0.1:5000/
   ProxyPassReverse / http://127.0.0.1:5000/
   RewriteEngine on
   RewriteCond %{HTTP:UPGRADE} ^WebSocket$ [NC]
   RewriteCond %{HTTP:CONNECTION} Upgrade$ [NC]
   RewriteRule /(.*) ws://127.0.0.1:5000/$1 [P]
   ErrorLog /var/log/apache2/netcore-error.log
   CustomLog /var/log/apache2/netcore-access.log common
</VirtualHost>

<虚拟主机 *:80>

此标签定义了将绑定 Apache 的 IP 和端口,因此我们将通过此 Ip:Port 从 Linux 环境外部访问我们的应用程序。

现在重新启动 Apache 服务器,

  • sudo 服务 apache2 重启
  • sudo apachectl configtest

第 4 步 - 配置并启动服务

使用以下命令将您的 dll 移动到定义的路径。

“ sudo cp -a ~/release/ /var/netcore/ ”

为我们的.Net 应用程序创建一个服务文件

“sudo nano /etc/systemd/system/ServiceFile.service”

复制该文件中的以下配置,它将运行我们的应用程序,

[Unit]
Description=ASP .NET Web Application
[Service]
WorkingDirectory=/var/netcore
ExecStart=/usr/bin/dotnet /var/netcore/Application.dll
Restart=always
RestartSec=10
SyslogIdentifier=netcore-demo
User=www-data
Environment=ASPNETCORE_ENVIRONMENT=Production
[Install]
WantedBy=multi-user.target

ExecStart=/usr/bin/dotnet /var/netcore/Application.dll在此行中将 Application.dll 替换为您要运行的 dll 名称。

现在启动服务。以下命令中的服务名称应改为上面创建的文件的名称,

  • sudo systemctl enable {服务名称}
  • sudo systemctl start {服务名称}

现在您的代理服务器和 kestrel 服务器正在运行,您可以通过任何带有端口 80 的 IP 访问您的应用程序。

要重新部署代码,您需要替换 dll 并通过以下命令停止并重新启动服务

  • sudo systemctl stop {服务名称}
  • sudo systemctl start {服务名称}
  • 16
    点赞
  • 11
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

谢.锋

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值