夫天地者,万物之逆旅;光阴者,百代之过客。而浮生若梦,为欢几何?
.Net Core项目如何部署到Linux

前言

在开始.net core微服务架构系列之下篇前,我们先来学习一下如何将之前创建的.Net Core3.1简单项目部署到Linux服务器中,并学习一下Linux操作系统的简单使用。

准备工作

我们需要事先安装Linux系统的虚拟机(主流的有Ubuntu、CentOS等),笔者安装的是前者,如下所示:

.Net Core项目发布

这里我们使用前面创建的项目示例来发布演示,具体发布步骤不多说,只需要注意一点的是 目标运行时 选择 linux-x64,具体如下:

发布成功后,我们在项目的bin/release/netcoreapp3.1目录下会看到两个发布文件(publish和linux-x64),我们需要选择publish下的文件打包到Linux上(linux-x64下的发布文件没有生成所需的静态文件wwwroot)。然后我们将发布文件放到虚拟机的wwwroot/publish目录下:

OK,到这里,我们下面就要去搞Linux了,首先我们需要在Linux上安装.net core 3.1的SDK才能运行我们的.net core项目。具体的安装步骤如下:

注册 Microsoft 密钥和源

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.deb

安装 .NET Core SDK

sudo add-apt-repository universe
sudo apt-get update
sudo apt-get install apt-transport-https
sudo apt-get update
sudo apt-get install dotnet-sdk-3.1

注:如果执行sudo add-apt-repository universe时,提示命令没找到。执行下面的命令:

apt-get install software-properties-common

至于安装的过程我们不必纠结,按照上面的命令一步步执行即可,最终安装成功的标志如下:

此时我们就可以cd到发布文件的目录下,通过命令来运行我们的项目:

看到这里,我们就完成了.net core项目在Linux上的部署,简直so easy!!从上图中我们可以看到项目被运行在5000的端口上,所以我们打开Linux虚拟机上自带的Firefox浏览器输入localhost:5000,敲回车见证奇迹的时刻:

接下来我们要做什么事呢?我想 利用虚拟机当服务器,本机当pc,在pc中输入ip地址可以直接访问虚拟机中的项目。为了实现这个操作,我们就需要使用Nginx来实现反向代理,因此我们就需要在Linux上安装Nginx。在此之前我们需要对虚拟机做一下设置(编辑->虚拟网络编辑器),然后如下设置应用保存。

就下来就是安装Nginx,首先执行安装命令:

sudo apt-get install nginx

安装成功后,我们直接在浏览器中输入localhost(或127.0.0.1,默认监听80端口),出现如下内容即说明Nginx安装成功

既然要用Nginx的反向代理,就需要修改Nginx的配置文件,当直接请求localhost时,将请求转发到5000端口(即我们已经运行的.net core网站)。具体的执行步骤如下:

我们要修改的配置就是这个server节点,配置如下:

server {
    listen 80;
    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;
    }
}

保存退出,然后重新加载nginx

sudo nginx -t
sudo nginx -s reload

这样就实现了通过IP访问,验证之前我们先找到Linux上的IP地址,如下图所示

现在我们就可以在本地的电脑中输入192.168.17.131来访问我们的项目了。为了更接近实际,我们再修改一下本地的hosts文件,将192.168.17.131映射到www.dupeng.com 。这时我们也可以直接输入www.dupeng.com 来访问我们的项目

纳爱斯,这样就实现了本地通过IP地址直接访问部署在Linux虚拟机上的网站了(至于样式没了的问题,应该是静态文件路径导致,今天就不去解决了)。

总结

通过本文,我们一起体验了将.net core项目部署到Linux上,以及使用Nginx反向代理的整个流程,同时也学习了一些Linux的命令的使用。当然这只是跨平台部署的一个开端,揭开其神秘的面纱,窥探出冰山之一角。。。


作者:一蓑烟雨

本文版权归作者所有,欢迎转载,但未经作者同意必须保留此段声明,且在文章页面明显位置给出原文连接,否则保留追究法律责任的权利。

0

支持

0

反对

posted @2020-3-25  拜读(950)

评论列表

评论内容:



喜欢请打赏

支付宝 微信

请放心支付