前言

ASP.NET Core 2.0 怎么发布到Ubuntu服务器?又如何在服务器上配置使用ASP.NET Core网站绑定到指定的域名,让外网用户可以访问呢?

步骤

第1步:准备工作

  • 一台Liunx服务器:笔者用的是【搬瓦工】的VPS服务器(CDN加速,支持支付宝,多机房选择)--低配版[2.5$每月,29.99$每年],需要的同学点此了解详情

    再推荐一个VPS服务器 Vultr.com (和 搬瓦工 差不多,也支持支付宝,但它支持月付,每月仅 2.5$ )

  • 一个Linux终端管理工具:笔者推荐Xshell,点击下载Xshell

    准备好Ubuntu服务器器 [Ubuntu 17.04 x64] 和终端管理工具后,我们开始配置关于ASP.NET Core 2.0的Linux环境。

第2步:创建一个非root用户

为了安全和管理的方便,我们不使用root用户,而是创建一个非root用户:

adduser myuser          # [myuser为用户名,可自定义指定]将提示你输入登录密码,请输入并牢记
usermod -aG sudo myuser # 将创建的用户添加到sudo分组中,以便使用管理员的命令
exit # 结束终端会话

用户创建完成后,使用这个用户来重新连接linux服务器

第3步:更新Linux服务器

sudo apt-get update
sudo apt-get upgrade
sudo apt-get dist-upgrade
sudo reboot

注:如果你想自动更新,你也可以使用 unattended-upgrades(以下命令根据自己需要选择) :

sudo apt-get install unattended-upgrades
sudo dpkg-reconfigure --priority=low unattended-upgrades

第4步: 安装 .NET Core

在Linux环境中运行ASP.NET Core网站,我们需要安装.NET Core运行时(当然也可以自己实现.NET Core程序的宿主)。

a. 注册微软产品KEY为被信任的:

curl https://packages.microsoft.com/keys/microsoft.asc | gpg --dearmor > microsoft.gpg
sudo mv microsoft.gpg /etc/apt/trusted.gpg.d/microsoft.gpg

b. 设置所需要的版本主机包(Ubuntu 17.04,其他linux版本的请见https://docs.microsoft.com/en-us/dotnet/core/linux-prerequisites?tabs=netcore2x):

sudo sh -c 'echo "deb [arch=amd64] https://packages.microsoft.com/repos/microsoft-ubuntu-zesty-prod zesty main" > /etc/apt/sources.list.d/dotnetdev.list'
sudo apt-get update

c. 安装.NET Core:

sudo apt-get install dotnet-sdk-2.0.0

d. 运行dotnet --version命令检查是否安装成功:

dotnet --version

如果显示:2.0.0 ,则说明linux服务器中成功安装了.NET Core 2.0.0版本。

第5步:创建示例程序

本文中,我们直接使用.NET Core 的命令创建一个ASP.NET Core 2.0 示例网站应用程序,创建目录 /home/myuser/firstapp,执行命令:

dotnet new mvc

接着,发布刚才创建的ASP.NET Core 2.0 网站发网站目录,所以,我们先创建一个网站发布目录:/var/www/firstapp,运行dotnet发布命令:

dotnet restore
dotnet publish -c release

dotnet命令将把ASP.NET Core 2.0 示例网站发布到目录:/home/myuser/firstapp/bin/release/netcoreapp2.0/publish/ 中,拷贝发布后的ASP.NET Core 2.0网站程序:

scp -r /home/myuser/firstapp/bin/release/netcoreapp2.0/publish/* /var/www/firstapp

第6步:启动网站

我们需要配置 systemd 来让 dotnet成为一个服务并启动。

sudo vim /etc/systemd/system/kestrel-mysite.service
sudo systemctl enable kestrel-mysite.service # 注册服务
sudo systemctl start kestrel-mysite.service # 启动服务
sudo systemctl status kestrel-mysite.service # 检查服务的运行状态

现在,我们的示例网站就可以通过5000端口在服务器端访问了,在终端使用wget命令:

wget http://localhost:5000

可以看到如下的运行效果:

说明我们的ASP.NET Core 2.0网站应用程序在linux服务器上配置成功了。

到这里,是不觉得ASP.NET Core 2.0在linux上运行 so easy 呢!!!

但是,当你看到“但是”的时候,心里怎么想的呢?

但是,我们这个示例程序现在还只能在服务器中访问,外网是不能访问的。

不急,本文给大家分享的是使用Nginx来作反向代理,实现外网的访问,以及域名访问。

第7步:nginx反向代理

sudo apt-get install nginx

使用 vim 配置nginx的服务配置

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

将nginx的配置替换成如下的配置:

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;
}
}

测试配置:

sudo nginx -t

重新加载配置:

sudo nginx -s reload

现在是见证奇迹的时刻了,在浏览器中直接输入你的服务器IP地址并访问,噔噔噔噔噔:

怎么样,现在你的ASP.NET Core 2.0 网站可以通过网络访问了,如果你还想让你的网站支持通过域名访问,那nginx中配置也是非常简单的:

server {
listen 80;
server_name www.your_domain_name.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;
}
}

其中:www.your_domain_name.com 即为你的域名,修改配置后,重新加载nginx配置:

sudo nginx -s reload

愉快地使用域名访问吧。

注: 本文给大家分享了一些关于ASP.NET Core 2.0怎么发布/部署到Ubuntu Linux服务器并配置Nginx实现反向代理,还有很多问题并没有涉及到,比如:服务器的安全(路由表IP的配置,nginx的高级配置等等),请在实际项目部署中查阅相关资料进行处理。

如果你觉得本文对你有帮助,请点个赞,让更多需要了解、学习本文内容的同学知晓,谢谢你的支持。

本文同步发表至 图享网ASP.NET Core 2.0怎么发布/部署到Ubuntu Linux服务器并配置Nginx实现反向代理

我的博客即将搬运同步至腾讯云+社区,邀请大家一同入驻:https://cloud.tencent.com/developer/support-plan

[亲测]七步学会ASP.NET Core 2.0怎么发布/部署到Ubuntu Linux服务器并配置Nginx反向代理实现域名访问的更多相关文章

  1. [亲测]ASP.NET Core 2.0怎么发布/部署到Ubuntu Linux服务器并配置Nginx反向代理实现域名访问

    前言 ASP.NET Core 2.0 怎么发布到Ubuntu服务器?又如何在服务器上配置使用ASP.NET Core网站绑定到指定的域名,让外网用户可以访问呢? 步骤 第1步:准备工作 一台Liun ...

  2. ASP.NET Core 2.0 MVC 发布部署--------- SUSE 16 Linux Enterprise Server 12 SP2 X64 具体操作

    .Net Core 部署到 SUSE 16 Linux Enterprise Server 12 SP2 64 位中的步骤 1.安装工具 1.apache 2..Net Core(dotnet-sdk ...

  3. ASP.NET Core 2.0发布/部署到Ubuntu服务器并配置Nginx反向代理

    原文链接https://www.linuxidc.com/Linux/2017-12/149557.htm ASP.NET Core 2.0 怎么发布到Ubuntu服务器?又如何在服务器上配置使用AS ...

  4. ASP.NET Core 2.0 MVC 发布部署--------- IIS 具体操作

    .Net Core 部署到 IIS系统中的步骤 一.IIS 配置 启用 Web 服务器 (IIS) 角色并建立角色服务. 1.Windows Ddesktop 桌面操作系统(win7及更高版本) 导航 ...

  5. ASP.NET Core 2.0 MVC 发布部署--------- CentOS7 X64 具体操作

    .Net Core 部署到 CentOS7 64 位系统中的步骤 1.安装工具 1.apache 2..Net Core(dotnet-sdk-2.0) 3.Supervisor(进程管理工具,目的是 ...

  6. ASP.NET Core 2.0 MVC 发布部署--------- ASP.NET Core 发布的具体操作

    ASP.NET Core 发布的具体操作 下面使用C# 编写的ASP.NET Core Web项目示例说明发布的全过程. 1.创建项目 选择“文件” > “新建” > “项目”. 在“添加 ...

  7. ASP.NET Core 2.0 MVC 发布部署--------- Ubuntun 16.04 X64 具体操作

    .Net Core 部署到Ubuntu 16.04 中的步骤 1.安装工具 1.apache 2..Net Core(dotnet-sdk-2.0) 3.Supervisor(进程管理工具,目的是服务 ...

  8. ASP.NET Core 2.0 MVC 发布部署--------- linux安装.NET CORE SDK具体操作链接以及操作总细节

    具体链接:https://www.microsoft.com/net/learn/get-started/linuxubuntu 如下图:

  9. Ubuntu & GitLab CI & Docker & ASP.NET Core 2.0 自动化发布和部署(2)

    上一篇:Ubuntu & GitLab CI & Docker & ASP.NET Core 2.0 自动化发布和部署(1) 服务器版本 Ubuntu 16.04 LTS. 本 ...

随机推荐

  1. what a fuck!这是什么鬼东西?

    Topic Link http://ctf5.shiyanbar.com/DUTCTF/1.html 1) 打开链接发现一片看不懂的东西,还真是WTF? 2)分析发现是Jother编码 将其放到浏览器 ...

  2. tcpdump工具使用说明

    tcpdump采用命令行方式对接口的数据包进行筛选抓取,其丰富特性表现在灵活的表达式上. 注意,tcpdump只能抓取流经本机的数据包,不带任何选项的tcpdump,默认会抓取第一个网络接口,且只有将 ...

  3. Perl线程队列:Thread::Queue

    (Thread::Queue)队列数据结构(FIFO)是线程安全的,它保证了某些线程从一端写入数据,另一些线程从另一端读取数据.只要队列已经满了,写入操作就自动被阻塞直到有空间支持写操作,只要队列空了 ...

  4. es简单打造站内搜索

    最近挺忙的,在外出差,又同时干两个项目.白天一个晚上一个,特别是白天做的项目,马上就要上线了,在客户这里 三天两头开会,问题很多真的很想好好静下来怼代码,半夜做梦都能fix bugs~ 和客户交流真的 ...

  5. Beanstalkd,zeromq,rabbitmq的区别

    1).rabbitmq(功能强大,管理应用也完善,不过也比较重量级)2).zeromq(从rabbitmq出来的一个小而快速的队列,基本是目前最快的队列机制,自身支持多种模式,可以对各个模式进行自己组 ...

  6. Java学习--使用 Date 和 SimpleDateFormat 类表示时间

    使用 Date 和 SimpleDateFormat 类表示时间 在程序开发中,经常需要处理日期和时间的相关数据,此时我们可以使用 java.util 包中的 Date 类.这个类最主要的作用就是获取 ...

  7. Java开发笔记(二十)一维数组的用法

    之前介绍的各类变量都是单独声明的,倘若要求定义相同类型的一组变量,则需定义许多同类型的变量,显然耗时耗力且不宜维护.为此,编程语言引入了数组的概念,每个数组都由一组相同类型的数据构成,对外有统一的数组 ...

  8. css字体图标的使用方法

    提要:对于传统的一般用css雪碧(css sprite)来搞,目前大部分网站已经主要字体图标 ,利用font+css 或者font+html 来开发,今天总结了一下,记录之~ css sprite用背 ...

  9. Java几种常见的设计模式

    --------------------- 本文来自 旭日Follow_24 的CSDN 博客 ,全文地址请点击:https://blog.csdn.net/xuri24/article/detail ...

  10. Java实现登录验证码

    登录验证码 Servlet /* 从请求中获取数据,获取验证码的session的值转为String类型,       销毁,防止返回后验证码不刷新,重新验证成功       判断验证码是否相同(忽略大 ...