ubuntu部署.Net Core3.1(Nginx+pm2)

前言

虽然.NetCore已经出来好久了,可是不少初学者仍是不会在linux部署.因此写一篇初学者在ubuntu下部署Core的全过程,大佬请无视。html

环境搭建

  • ubuntu18.04
  • NetCore3.1
  • Nginx
  • pm2

.NetCoreSDK安装

安装源
wget -q https://packages.microsoft.com/config/ubuntu/18.04/packages-microsoft-prod.deb -O packages-microsoft-prod.deb
sudo dpkg -i packages-microsoft-prod.debnode

安装sdk,具体哪一个版本能够根据本身的喜爱.
sudo add-apt-repository universe
sudo apt-get install apt-transport-https
sudo apt-get update
sudo apt-get install dotnet-sdk-3.1linux

安装完成执行 dotnet --info 命令查看安装的SDK信息
20191211142103.pngnginx

.Nginx安装

由于.NetCore是自宿主,因此咱们须要一个反向代理web服务器来给个人kestrel作反向代理web

安装命令
sudo apt-get install nginxnpm

启动命令
sudo service nginx startubuntu

安装成功后直接访问服务器地址,若出现下图则nginx安装成功
20191211143329.pngvim

PM2进程守护安装

PM2是一个nodejs进程高级工具,用来守护 .NET Core 进程是没有问题,最主要的缘由,它没有繁琐的安装和配置,很是适合初学者。
PM2依赖nodejs,因此咱们先须要安装nodejs。api

更新apt-get
apt-get update
安装node.js
apt-get install nodejs
安装npm
apt-get install npm
安装PM2
npm install -g pm2
设置开机启动
pm2 startup浏览器

安装成功之后使用 pm2 --help 命令来检查是否安装成功,出现下图则安装成功

20191211144948.png

有关于pm2的详细说明能够去看晓晨大佬的文章。传送门

开始部署

本地新建一个webapi项目,添加一个接口并打印一句话

using Microsoft.AspNetCore.Mvc;

namespace api.Controllers
{
    [Route("api/[controller]")]
    [ApiController]
    public class ValuesController : ControllerBase
    {
        [HttpGet("print")]
        public string Print()
        {
            return "hello .NetCore";
        }
    }
}

修改端口为5002。

using Microsoft.AspNetCore;
using Microsoft.AspNetCore.Hosting;

namespace api
{
    public class Program
    {
        public static void Main(string[] args)
        {
            CreateWebHostBuilder(args).Build().Run();
        }

        public static IWebHostBuilder CreateWebHostBuilder(string[] args) =>
            WebHost.CreateDefaultBuilder(args)
                .UseUrls("http://localhost*:5002")
                .UseStartup<Startup>();
    }
}

发布咱们的项目,而后在ubuntu的home文件下新建一个api文件夹并把发布文件copy到这里。

20191211150953.png

使用cd /home/api命令进入咱们发布文件夹下。

使用 dotnet Api.dll命令运行咱们刚才的项目
20191211152748.png

能够看到咱们的项目已经跑起来啦。咱们使用浏览器来访问咱们的Api看看是否成功

20191211153006.png

能够看到咱们的接口是能够访问的,到这里咱们已经完成了在ubuntu上部署一个.NetCore的项目了。
可是咱们须要一直在这里看着这个程序不被关闭吗?显然是不可能的,如今就须要pm2登场了,用pm2来守护咱们的.netCore 程序。
执行pm2 start "dotnet api.dll" --name api命令就可让pm2来帮助咱们守护啦。就是这么简单,没有繁琐的配置。

20191211153504.png

使用 pm2 ls 命令能够看到pm2正在守护程序的列表。

那么问题又来了,直接把服务暴露在外并非很好的选择,且没法作负载。因此咱们须要配置nginx来给咱们的kestrel作反向代理。
执行 vim /etc/nginx/sites-available/default 命令来修改默认的配置文件,注释掉原有全部配置,新增以下配置,并保存。

server {
    listen 80;
    listen [::]:80;
    location / {
    proxy_pass http://localhost:5002; //刚才发布项目的端口
    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;
    }
}

使用nginx -s reload 命令来优雅重启nginx,并从新载入配置文件。

使用80端口来调用咱们的接口。

20191211155506.png

能够看到是能够经过80端口去调用咱们的Api的。

总结

到这里已经就完成了咱们在ubuntu部署.NetCore项目小目标啦。

相关文章
相关标签/搜索