zoukankan      html  css  js  c++  java
  • CentOS7系统上部署.net core程序

     一、准备工作

    首先安装 xshell 和 xftp ,前者用于SSH连接Linux服务器,后者用于FTP上传下载文件。

    xshell和xftp个人使用是免费的,下载地址

    之后分别输入用户名和密码登录主机

    二、安装.Net Core SDK

    SDK安装方法可以参考官方教程

    安装完毕之后输入 dotnet --version ,正常显示版本号,说明sdk安装成功

    三、部署应用

    1、新建项目

    使用vs2017新建一个ASP.NET Core Web应用程序

     新建项目之后首先在本地运行一下,确认项目能正常运行

    2、发布项目

    系统能够正常运行,我们进行发布

    3、上传项目

    发布完成之后我们打开xshell上传文件

     在打开窗口之后,窗口分为左右两边,左边为本地,在地址栏输入刚才项目发布的地址,右边为服务器,新建CentOsTest文件夹 ,将文件传输到服务器上

     我们再回到xshell的命令窗口,进入CentOSTest文件,使用 dotnet CentOSTest.dll 命令,启动程序

    至此我们的系统就正常运行了,但是我们并不能访问,这时候我们需要部署一个web容器来进行转发

    安装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不需要连上去输入命令)。

    配置防火墙

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

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

     测试nginx是否可以访问。

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

    修改 /etc/nginx/conf.d/default.conf 文件。

    将文件内容替换为

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

    上传至CentOS进行覆盖。

    执行:nginx -s reload 使其即时生效

    使用命令 :dotnet CentOSTest.dll 运行ASP.NET Core应用程序

     

    这时候再次尝试访问。

     

    至此基本完成了部署。

    四、配置守护服务(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 supervisor

    配置Supervisor

    mkdir /etc/supervisor
    echo_supervisord_conf > /etc/supervisor/supervisord.conf

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

    修改为

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

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

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

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

    运行supervisord,查看是否生效

    supervisord -c /etc/supervisor/supervisord.conf
    ps -ef | grep CentOSTest

    如果存在dotnet CentISTest.dll 进程则代表运行成功,这时候在使用浏览器进行访问,就能正常访问网站

    配置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 #来验证是否为开机启动

    至此,守护程序配置完毕。

  • 相关阅读:
    在数据库里进行分页处理
    new Date()在IE,谷歌,火狐上的一些注意项
    sql的一些小东西
    将sql数据库逆向生成PDM模型
    关于禁止在 .NET Framework 中执行用户代码。启用 "clr enabled" 配置选项
    MVC的Model层中的一些便签
    通过URL推送POST数据
    Python 关键字
    Python 标识符
    Python 注释(Python Comments)用法详解
  • 原文地址:https://www.cnblogs.com/adawoo/p/9288008.html
Copyright © 2011-2022 走看看