前言

笔者在毫无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. spark-2.4.0-hadoop2.7-高可用(HA)安装部署

    1. 主机规划 主机名称 IP地址 操作系统 部署软件 运行进程 备注 mini01 172.16.1.11[内网] 10.0.0.11  [外网] CentOS 7.5 Jdk-8.zookeepe ...

  2. 我的第一个python web开发框架(30)——定制ORM(六)

    在开发中,查询操作是使用最多的,而查询列表是其中之一,查询列表可分为分页查询和不分页查询(它们之间多了一次总记录数查询),还可以分为单表查询和多表关联查询,返回的结构体根据前端使用的表单框架不同而有所 ...

  3. RabbitMQ安装,Windows下

    一.下载安装ERLANG语言 otp_win64_20.3.exe 一直下一步.然后设置环境变量  ERLANG_HOME   C:\Program Files\erl9.3 二.安装RabbitMQ ...

  4. Java注解开发与应用案例

    Java注解开发与应用案例 Annotation(注解)是JDK5.0及以后版本引入的,可以对包.类.属性.方法的描述,给被述对象打上标签,被打上标签后的类.属性.方法将被赋予特殊的“功能”:打个比喻 ...

  5. Cursor: Pin S Wait On X In The Top 5 Wait Events

    Wait Events , Posted in: Technical Track Tags: Group Blog Posts, Oracle, Technical Blog Lately, wait ...

  6. JDB与迭代

    要求 1 使用C(n,m)=C(n-1,m-1)+C(n-1,m)公式进行递归编程实现求组合数C(m,n)的功能 2 m,n 要通过命令行传入 3 提交测试运行截图(至少三张:正常如c(3,2).异常 ...

  7. Mybatis实现高级映射一对一、一对多查询

    终于把论文写得差不多了,系统也不急着完成,可以抽出点时间来完成这个系列的博客了.在写本博客之前我是惶恐不安的,高级映射一贯是持久层框架里的重中之重,小到自己开发小系统,大到企业级开发,表的存在从来就不 ...

  8. Git初始化-添加提交以及查看状态

    本地库初始化 使用 git bash 打开 git 命令行窗口.这个命令行窗口兼容 Linux 命令. 命令:mkdir 当前文件下新建文件夹. 命令:git init 初始化空的本地库,.git文件 ...

  9. xcode8 使用Instruments检测定位并解决iOS内存泄露

    https://www.jianshu.com/p/9bc7e65fc247 2017.07.27 17:24* 字数 628 阅读 1319评论 6喜欢 21 简介: 虽然苹果出了ARC(自动内存管 ...

  10. IdentityServer4【Topic】Consent

    Conset这个概念在Identityserver4中是表示要当前用户对第三方应用对资源请求的一个确认,它会被做成一个页面. 术语映射: Consent page--确认页面,我喜欢叫做Consent ...