1. 安装dotnet sdk(添加产品秘钥与yum源)

    添加yum源:sudo rpm -Uvh https://packages.microsoft.com/config/rhel/7/packages-microsoft-prod.rpm

    开始安装:sudo yum install dotnet-sdk-2.1

    如图效果:一路y下去就可以了

      

    查看版本号,命令:dotnet --version

      

    以上dotnet sdk 已安装成功!!!

  2.部署Asp.net core 项目

    上传之前发布的文件夹至/home/wwwroot/。

    使用WinSCP上传。

            

    用dotnet 命令运行项目(首先要cd到项目根路径,在运行项目,否则会找不到静态资源文件,路径问题)

    cd /home/wwwroot/admin

    dotnet Apps.Admin.dll (请把Apps.Admin.dll改成你的项目入口)

            

      这样项目就运行成功了。

      注:请注意红框,如果只监听http://localhost:8090,那只能本机访问,外网是无法访问的。

        要外网访问,请添加http://[::]:8080的监听,可以在项目中修改。

            

     3.配置nginx

      安装nginx:

      curl -o  nginx.rpm http://nginx.org/packages/centos/7/noarch/RPMS/nginx-release-centos-7-0.el7.ngx.noarch.rpm

      rpm -ivh nginx.rpm

      yum install nginx

      安装成功后

      输入:systemctl start nginx 来启动nginx。

      输入:systemctl enable nginx 来设置nginx的开机启动(linux宕机、重启会自动运行nginx不需要连上去输入命令)。

      4.配置防火墙

      命令:firewall-cmd --zone=public --add-port=80/tcp --permanent(开放80端口)

      命令:systemctl restart firewalld(重启防火墙以使配置即时生效)

      测试nginx是否可以访问。

      

     5.配置nginx对ASP.NET Core应用的转发

      修改 /etc/nginx/conf.d/default.conf 文件。(可使用 WinSCP 直接修改)

      将文件内容替换为

server {
    listen 80;
    location / {
        proxy_pass http://localhost:8090;
        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 使其即时生效

      再次运行ASP.NET Core应用程序  命令:dotnet Apps.Admin.dll

      

      这个问题是由于SELinux保护机制所导致,我们需要将nginx添加至SELinux的白名单。

      接下来我们通过一些命令解决这个问题。。     

      yum install policycoreutils-python

      sudo cat /var/log/audit/audit.log | grep nginx | grep denied | audit2allow -M mynginx

      sudo semodule -i mynginx.pp

          

      此时就能成功访问了,(服务器重启后,会失效,需要重新配置)。

   6.配置守护服务(Supervisor)

    目前存在三个问题

问题1:ASP.NET Core应用程序运行在shell之中,如果关闭shell则会发现ASP.NET Core应用被关闭,

从而导致应用无法访问,这种情况当然是我们不想遇到的,而且生产环境对这种情况是零容忍的。

问题2:如果ASP.NET Core进程意外终止那么需要人为连进shell进行再次启动,往往这种操作都不够及时。

问题3:如果服务器宕机或需要重启我们则还是需要连入shell进行启动。

为了解决这个问题,我们需要有一个程序来监听ASP.NET Core 应用程序的状况。在应用程序停止运行的时候立即重新启动。

这边我们用到了Supervisor这个工具,Supervisor使用Python开发的。

(一) 安装Supervisor
yum install python-setuptools

easy_install supervisor

(二) 配置Supervisor
mkdir /etc/supervisor

echo_supervisord_conf > /etc/supervisor/supervisord.conf

(三)修改supervisord.conf文件,将文件尾部的配置

修改为

(注意 去掉封号,否则无法生效)

(四) 配置对ASP.NET Core应用的守护

  创建一个 Admin.conf文件,内容大致如下

[program:Admin]
command=dotnet Apps.Admin.dll ; 运行程序的命令
directory=/home/wwwroot/admin/ ; 命令执行的目录
autorestart=true ; 程序意外退出是否自动重启
stderr_logfile=/var/log/WebApplication1.err.log ; 错误日志文件
stdout_logfile=/var/log/WebApplication1.out.log ; 输出日志文件
environment=ASPNETCORE_ENVIRONMENT=Production ; 进程环境变量
user=root ; 进程执行的用户身份
stopsignal=INT

将文件拷贝至:“/etc/supervisor/conf.d/Admin.conf”下

(五) 运行supervisord,查看是否生效

supervisord -c /etc/supervisor/supervisord.conf

ps -ef | grep Admin

    如果存在dotnet Apps.Admin.dll 进程则代表运行成功,这时候在使用浏览器进行访问。

    至此关于ASP.NET Core应用程序的守护即配置完成。

    (六)配置Supervisor开机启动

      新建一个“supervisord.service”文件

      

# dservice for systemd (CentOS 7.0+)
# by ET-CS (https://github.com/ET-CS)
[Unit]
Description=Supervisor daemon

[Service]
Type=forking
ExecStart=/usr/bin/supervisord -c /etc/supervisor/supervisord.conf
ExecStop=/usr/bin/supervisorctl shutdown
ExecReload=/usr/bin/supervisorctl reload
KillMode=process
Restart=on-failure
RestartSec=42s

[Install]
WantedBy=multi-user.target

将文件拷贝至:“/usr/lib/systemd/system/supervisord.service”

执行命令:systemctl enable supervisord

执行命令:systemctl is-enabled supervisord #来验证是否为开机启动

原文链接 : https://www.cnblogs.com/ants/p/5732337.html

在一些步骤上做了修改。

    

Centos7 部署.net core2.1 详细步骤的更多相关文章

  1. centos7安装zabbix3.0超详细步骤解析

    centos7安装zabbix3.0超详细步骤解析 很详细,感谢作者 以下是我操作的history 622 java -version 623 javac -version 624 grep SELI ...

  2. centos7+tomcat部署JavaWeb项目超详细步骤

    我们平时访问的网站大多都是发布在云服务器上的,比如阿里云.腾讯云等.对于新手,尤其是没有接触过linux系统的人而言是比较有困难的,而且至今使用云服务器也是有成本的,很多时候我们可以通过虚拟机自己搭建 ...

  3. 【转载】centos7+tomcat部署JavaWeb项目超详细步骤

    我们平时访问的网站大多都是发布在云服务器上的,比如阿里云.腾讯云等.对于新手,尤其是没有接触过linux系统的人而言是比较有困难的,而且至今使用云服务器也是有成本的,很多时候我们可以通过虚拟机自己搭建 ...

  4. CentOS7部署Dotnet Core2.1

    前言 笔者在毫无Linux部署.net core的经验下,第一次用了15分钟完成部署,第二次在生产环境用了5分钟.下文将说明如何在CentOS7下完成.NetCore2.1的部署,包括如何创建ASP. ...

  5. 将war包部署到服务器的详细步骤

    第一步: 先将项目打包成war文件,也就是将在项目上单击鼠标右键,选择Export: 选择WAR file,点击下一步: 会出现如下所示,选择你要保存的位置,点击完成: 在你所选择的地方会有个如下所示 ...

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

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

  7. Ubuntu以及CentOS7修改ssh端口号详细步骤

    1.Ubuntu修改ssh端口号步骤: 1.修改sshd.config文件.执行vim etc/ssh/sshd_config.增加上我们需要增加的ssh的端口号.图例增加了5309的端口号. ESC ...

  8. centos7下安装oracle11gR2的详细步骤

    环境准备 安装包: CentOS-7-x86_64-DVD linux.x64_11gR2_database_1of2.zip linux.x64_11gR2_database_2of2.zip 本教 ...

  9. 转:Centos7安装zabbix3.4超详细步骤解析

    安装前准备: 1.1 安装依赖包: yum -y install wget net-snmp-devel OpenIPMI-devel httpd openssl-devel java lrzsz f ...

随机推荐

  1. Linux 配置eth0网卡

    缘由: 最近要复习docker,电脑没有centos7,于是下载了一个最新版的centos7,迫于强迫症没有eth0网卡,为了将ens33改为eth0于是寻求方法. 1.编辑网卡的配置文件 vi /e ...

  2. QMessageBox改变大小

    创建一个QMessageBox: QMessageBox msgBox(this);msgBox.setWindowTitle(tr("MailBox Location"));ms ...

  3. Kotlin入门-Android的基础布局

    线性布局线性布局LinearLayout是最常用的布局,顾名思义,它下面的子视图像是用一根线串了起来,所以其内部视图的排列是有顺序的,要么从上到下垂直排列,要么从左到右水平排列.排列顺序只能指定一维方 ...

  4. Firefox Chrome Http请求插件

    Firefox:HttpRequester Chrome:Advanced Rest Client

  5. [ML] Roadmap: a long way to go

    看上去不错的博文: 机器学习的经典算法一览 (一) 机器学习的经典算法一览 (二)       1.引言 正文将详细介绍传统机器学习算法,基本思想和用途.把问题解决思路和方法应用建议提前到这里的想法也 ...

  6. 【作品集】UX作品集

    https://www.uisdc.com/10-inspiring-ux-portfolios http://jeya.io http://antonmircea.com/FinalUX.pdf h ...

  7. Css3 权重

    Css权重 权重--很多规则应用到同一个元素上时,权重是决定哪个生效的(优先级) 权重等级与权值 行内样式(1000)>ID选择器(100)>类.属性选择器或伪类选择器(10)>元素 ...

  8. Eclipse阿里代码规范插件安装,卸载与使用

    使用阿里代码规范插件,我们就可以查看我们写的代码是否规范了 找到阿里代码插件网址: 网址:https://p3c.alibaba.com/plugin/eclipse/update/ 打开我们的网址, ...

  9. Windows系统Python直接调用C++ DLL

    环境:Window 10,VS 2019, Python 2.7.12, 64bit 1,打开 VS 2019,新建C++ Windows 动态链接库工程 Example,加入下列文件,如果Pytho ...

  10. Python学习笔记——类和对象

    类和对象 1. 一个例子 # 对象 = 属性 + 方法 # Python 中的类名称约定首字母大写,而 Python 函数名首字母小写 class Turtle: #属性 color = 'green ...