前言

笔者在毫无Linux部署.net core的经验下,第一次用了15分钟完成部署,第二次在生产环境用了5分钟。下文将说明如何在CentOS7下完成.NetCore2.1的部署,包括如何创建ASP.NET Core项目并将程序持久运行在Kestrel上,如何修改代码和防护墙进而使代码可以远程访问。最后也会提及生产环境使用的不同点。

1.安装RunTime

ASP.NET Core在Linux运行的首要条件便是需要安装Runtime。

sudo rpm -Uvh https://packages.microsoft.com/config/rhel/7.4/packages-microsoft-prod.rpm
sudo yum update
sudo yum install aspnetcore-runtime-2.1

微软对不同的Linux发行版本(包括RHEL,Ubuntu,Debian,Fedora,CentOS,openSUSE和SLES)提供了相似的解决方案.

如果想要在Linux做 .NET Core的开发和编译工作,那么需要同时安装 Dotnet Core SDK(SDK的安装并不是必须的,可以在开发环境编译后上传到Linux服务器),在CentOS下的指令为:

sudo yum install dotnet-sdk-2.1

2.创建并编译

2.1创建MVC工程

使用如下指令创建ASP.NET Core2.1的工程:

dotnet new MVC -o MvcDemoApp

2.2修改代码

默认的情况下ASP.NET Core2.1本地启动会运行在 Kestrel服务器上,如果想要从其他电脑访问网站,则需要修改绑定。

打开新建的工程文件中的 Program.cs 文件,修改代码如下:

1         public static IWebHostBuilder CreateWebHostBuilder(string[] args) =>
2 WebHost.CreateDefaultBuilder(args)
3 .UseUrls("https://0.0.0.0:5001")
4 .UseStartup<Startup>();

这样绑定的便是服务器上的所有IP,而不只是默认的 localhost。(???)

2.3编译程序

在终端运行如下指令:

dotnet publish --configuration Release

该指令所有的文件放到 /bin/Release/netcoreapp2.1/publish文件夹中。为了方便管理,我们将该目录下的文件放到Linux服务器下的 /home/RunService/MvcDemo 路径下。

3.运行Web程序

完成了.NET Core程序的创建和编译后,现在开始程序的部署。

3.1直接运行程序

最简单的是直接进入程序的根目录 /home/RunService/MvcDemo ,然后执行指令:

dotnet CoreMvcApp.dll

此时指令会根据代码设定将程序运行在5001端口(结束程序 Ctrl + C),打开浏览器并输入地址 http://localhost:5001/ 或者 http://0.0.0.0:5001/便可以访问web服务。

3.2作为服务运行

直接运行可以用来测试程序,但是每次服务器重启后,需要手动打开服务。更好的方法是将网站当作服务运行。

创建名为 MvcDemo_Conf 的配置文件:

sudo vi /etc/systemd/system/MvcDemo_Conf.service

将以下命令写入打开的配置文件中

[Unit]
Description=.NET Core Test App [Service]
WorkingDirectory=/home/long/RunService/MvcDemo
ExecStart=/usr/bin/dotnet /home/long/RunService/MvcDemo/MvcDemoApp.dll
Restart=always
RestartSec=10
SyslogIdentifier=MvcDemoApp
User=long
Environment=ASPNETCORE_ENVIRONMENT=Production [Install]
WantedBy=multi-user.target

黄色背景的信息需要根据自己的需要修改

3.3配置文件

保存服务的配置文件后,使服务可用

sudo systemctl enable MvcDemo_Conf.service

启动服务

sudo systemctl start MvcDemo_Conf.service

检查服务运行状态

sudo systemctl status MvcDemo_Conf.service

如果操作无误,正常的提示如下图所示

4.设置防火墙

如果想要在远程访问服务,需要打开防火墙的5001端口,从而其他计算机才可以远程访问。

打开防火墙的5001端口:

sudo firewall-cmd --add-port=5001/tcp --permanent
sudo firewall-cmd --reload
sudo firewall-cmd --list-all

如果端口打开正常,则局域网内的计算机可通过地址 ip访问

5.生产系统部署

上例说明了如何在CentOS上配置ASP.NET Core程序,但因为Kestrel是一个很基本的web服务器,所以需要配置性能更好的IIS、Nginx或者Apache。

正式程序可以不做步骤5,即打开防火墙的步骤。在Kestrel前置Apache服务器,Apache可以作为Kestrel的反向代理。

这样可以通过反向代理将部分链接指向ASP.NET Core,而部分代码仍旧使用php或者java,为程序的迁移提供了便利。

参考

centos安装VsCode

CentOS7部署Dotnet Core2.1的更多相关文章

  1. CentOS7部署.Net Core2.0站点(上)

    其实类似的教程网上已经有很多了,之所以要写,是应为发现在使用最新的centos7和.netcore2.1版本时还是遇到了不少坑,所以记录下,以后希望大家能少走弯路. 一.安装CentOS7 我是用虚拟 ...

  2. Centos7 部署.net core2.1 详细步骤

    安装dotnet sdk(添加产品秘钥与yum源) 添加yum源:sudo rpm -Uvh https://packages.microsoft.com/config/rhel/7/packages ...

  3. centos7部署.net core2.1

    1.centos 7.0及以上服务器 2..NET SDK 安装 2.1 安装 https://www.microsoft.com/net/download/linux-package-manager ...

  4. CentOS7部署.Net Core2.0站点(中)

    继续上篇的内容,本篇来学习下nginx的配置和守护进程supervisor的使用. 一.Nginx安装及配置 (1)安装nginx sudo yum install epel-release #添加源 ...

  5. [原]CentOS7部署osm2pgsql

    转载请注明原作者(think8848)和出处(http://think8848.cnblogs.com) 部署Postgresql和部署PostGis请参考前两篇文章 本文主要参考GitHub上osm ...

  6. centos7 部署ssserver

    centos7 部署shadowsocks服务端 为什么要选centos7? 以后centos7 肯定是主流,在不重要的环境还是尽量使用新系统吧 centos7 的坑 默认可能会有firewall 或 ...

  7. centos7 部署 docker compose

    =============================================== 2019/4/10_第1次修改                       ccb_warlock == ...

  8. centos7 部署 docker ce

    =============================================== 2019/4/9_第1次修改                       ccb_warlock === ...

  9. centos7 部署 open-falcon 0.2.0

    =============================================== 2019/4/29_第3次修改                       ccb_warlock 更新 ...

随机推荐

  1. iOS中Realm数据库的基本用法

      原文  http://git.devzeng.com/blog/simple-usage-of-realm-in-ios.html 主题 RealmiOS开发 Realm是由 Y Combinat ...

  2. git取消跟踪已版本控制的文件

    git 不再追踪文件改动 git update-index --assume-unchanged filePath git 恢复追踪文件改动 git update-index —no-assume-u ...

  3. Python基础——2函数

    函数 函数定义 def a(参数): 函数的参数:必选参数.默认参数.可变参数.命名关键字参数和关键字参数 a(x,y,z=11,*l,**b): a(x,y,z=11,*liat,city,job, ...

  4. LinuxMint上安装redis和python遇到的一些问题

    今天在安装Redis和Python上遇到了些问题,解决后记录下来. 环境:LinuxMint 18.3 安装redis sudo wget http://download.redis.io/relea ...

  5. 英语进阶系列-A05-英语升级练习三

    古诗背诵 要求:认真背诵和朗读,然后翻译成现代文,并绘制图像描述图中的意向,时间限制到10 minutes.另外,从中找出英文单词,并记录. 例如:慈母 = kind mother,手 = hand, ...

  6. Python基础之面对对象进阶

    阅读目录 isinstance和issubclass 反射 setattr delattr getattr hasattr __str__和__repr__ __del__ item系列 __geti ...

  7. 如何在Asp.Net中使用JQueryEasyUI

    JQueryEasyUI的基本信息: 官方下载 官方演示 官方文档 一.jQuery easyUI下载后解压的文件目录如下图: demo:JQueryEasyUI的一些示例页面,在项目使用可以将该目录 ...

  8. 腾讯大数据平台Oceanus: A one-stop platform for real time stream processing powered by Apache Flink

    January 25, 2019Use Cases, Apache Flink The Big Data Team at Tencent     In recent years, the increa ...

  9. websocket 实现单聊群聊 以及 握手原理+加密方式

    WebSocket 开始代码 服务端 群聊 # type:WebSocket 给变量标注类型 # websocket web + socket from geventwebsocket.server ...

  10. rm: cannot remove ‘overlay/’: Device or resource busy

    umount /var/lib/docker/overlay #取消挂载就可以啦 rm -rf overlay/