程序员.Net & Core我爱编程

ASP.NET Core 部署到 Ubuntu

2019-04-26  本文已影响14人  JeetChan

ASP.NET Core 部署到 Ubuntu

本文内容主要来自微软 MVP solenovex 的系列视频 ASP.NET Core MVC 入门教程 (共9集) 中的第 9 集,部署到Ubuntu (Nginx, 监控, HTTPS),视频教程提供了示例代码 ASP.NET-Core-Getting-Started 以及 PPT,托管在 GitHub 上。

我的学习环境为本地新安装的 Ubuntu Server 16.04 LTS 虚拟机,SSH 客户端是 Bitvise SSH Client。操作基本和视频所说一致,因为我是看完全集视频后再操作,可能顺序上有所调整,以及软件 版本上也有差别,但不会有太大影响。

如果你是初学者,也可以一步一步跟着视频操作一遍,因为编程除了知识还包括技能。

安装 .NET Core

.NET Core 包括 SDK 和 Runtime ,因为需要在服务器上通过源码发布,所以这里只需要安装 SDK 就可以了,SDK 可以编译和运行应用,Runtime 只能运行,SDK 包含 Runtime。当前的 .NET Core 版本为 2.2,可以在 .NET Core 官网找到安装步骤

  1. Register Microsoft key and feed

    wget -q https://packages.microsoft.com/config/ubuntu/16.04/packages-microsoft-prod.deb
    sudo dpkg -i packages-microsoft-prod.deb
    
  2. Install the .NET SDK

    sudo apt-get install apt-transport-https
    sudo apt-get update
    sudo apt-get install dotnet-sdk-2.2
    

安装 Git

apt-get install git

安装 Node.js

通过 package manager 的方式安装 Node.js,选择Node.js v10.x 版本

curl -sL https://deb.nodesource.com/setup_10.x | sudo -E bash -
sudo apt-get install -y nodejs

安装 Nginx

sudo apt-get update
sudo apt-get install nginx

下载源码

git clone https://github.com/solenovex/ASP.NET-Core-Getting-Started.git

安装前端库

cd命令导航到源码的/CoreDemo目录,安装前端库

sudo npm install

发布项目

-c参数指定发布为“Release”版本

sudo dotnet publish -c Release

发布好的文件可以复制到一个自定义的目录,以下是我本机的路径:

sudo cp -r publish/* /home/jeetchan/website/coredomo

Note:这一步会发生一个错误,说是“popper.js”找不到,根据提示修改“bundleconfig.json”文件即可,如果对 Vim 不太熟悉,可以在 Windows 中修改好再覆盖到原文件。

配置 Nginx

先备份 /etc/nginx/sites-available/default 文件,修改为 default_old,然后再创建 default 文件

mv default default_old
vim default

然后输入以下内容,记得修改 server_name 一项,因为是本地服务器,我修改为服务器的 IP:

server {
    listen        80;
    server_name   example.com *.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 -t检查文件,最后重新加载配置文件nginx -s reload

配置监视应用

  1. 创建服务

    vim /etc/systemd/system/kestrel-coredemo.service
    
  2. 修改服务文件,注意根据实际情况修改 WorkingDirectory 和 ExecStart 两项的值:

     [Unit]
     Description=Example .NET Web API App running on Ubuntu
    
    [Service]
    WorkingDirectory=/var/www/helloapp
    ExecStart=/usr/bin/dotnet /var/www/helloapp/helloapp.dll
    Restart=always
    # Restart service after 10 seconds if the dotnet service crashes:
    RestartSec=10
    KillSignal=SIGINT
    SyslogIdentifier=dotnet-example
    User=www-data
    Environment=ASPNETCORE_ENVIRONMENT=Production
    Environment=DOTNET_PRINT_TELEMETRY_MESSAGE=false
    
    [Install]
    WantedBy=multi-user.target
    
  3. 启动服务

    sudo systemctl enable kestrel-helloapp.service
    
  4. 启用该服务,并确认它正在运行。

       sudo systemctl start kestrel-helloapp.service
       sudo systemctl status kestrel-helloapp.service
    

配置 HTTPS 证书

这一部分由于我没有一个公网的服务器和域名,所以暂时省略。如果有公网服务器和域名,可以在certbot申请配置。

运行效果
上一篇下一篇

猜你喜欢

热点阅读