zoukankan      html  css  js  c++  java
  • 使用Nginx在Centos上托管ASP.NET Core程序

    微软的文档:https://docs.microsoft.com/zh-cn/aspnet/core/host-and-deploy/linux-nginx?tabs=aspnetcore2x

    1. 安装.NET Core Sdk

         1.1微软官方安装说明:https://www.microsoft.com/net/learn/get-started/linux/centos

         注册微软密钥和产品提要

    sudo rpm --import https://packages.microsoft.com/keys/microsoft.asc
    sudo sh -c 'echo -e "[packages-microsoft-com-prod]
    name=packages-microsoft-com-prod 
    baseurl= https://packages.microsoft.com/yumrepos/microsoft-rhel7.3-prod
    enabled=1
    gpgcheck=1
    gpgkey=https://packages.microsoft.com/keys/microsoft.asc" > /etc/yum.repos.d/dotnetdev.repo'

        1.2  安装.NET SDK

    sudo yum update
    sudo yum install libunwind libicu
    sudo yum install dotnet-sdk-2.1.4

         注意:其中sdk的版本要版本一定要更程序用到的相同否则在运行程序时候会出现在不到依赖项的情况

                    上述命令要单条执行 ,因为在执行后会有个提示是否ok,需要输入y否则安装不上

                     

                    

    2. 把程序复制到服务器上

              我是用的winScp工具上传的服务器,

                 提前创建好目录  /var/aspnetcore/hellomvc,直接用该工具创建如下图红框的按钮

                        

                上传程序

                

              测试下程序是否能正常运行

                  输入命令: dotnet WebApplication1.dll

                

               WebApplication1.dll这个是你自己程序集的名称,如果出现 Application started说明启动成功,可以在服务器上访问网站的地址了我程序中监听的地址是http://127.0.0.1:5000。

               

              访问地址出现你网站的html说明部署成功。成功后用 Ctrl+C关闭程序

    3.   安装Ngnix

        3.1  安装gcc

    yum install gcc-c++

      3.2   PCRE pcre-devel 安装  

    yum install -y pcre pcre-devel

    3.3  zlib 安装  

    yum install -y zlib zlib-devel

    3.4   OpenSSL 安装   

    yum install -y openssl openssl-devel

    3.5   下载

    wget -c https://nginx.org/download/nginx-1.10.1.tar.gz

    3.6  解压

    tar -zxvf nginx-1.10.1.tar.gz


    3.8 切换到文件夹到解压的目录

    cd nginx-1.10.1

    3.9  设置配置

      ./configure

       3.10 编译安装

      make
      make install

         找到安装路径 whereis nginx

    3.11   转到安装目录启动

         cd /usr/local/nginx/sbin/

         ./nginx

         ./nginx -s stop

         ./nginx -s quit    此方式停止步骤是待nginx进程处理任务完毕进行停止。

         ./nginx -s reload   此方式相当于先查出nginx进程id再使用kill命令强制杀掉进程。

          查询nginx进程: ps aux|grep nginx

     4. 配置Nginx把请求转到给ASP.Net  Core中的 Kestrel 处理请求 

            找到nginx的安装路径,找到配置文件 nginx.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 $http_host;
            proxy_cache_bypass $http_upgrade;
        }
    }

    如下图 

           修改了配置后需要先价差配置是否正确

           命令: sudo nginx -t

        然后重新加载配置

        命令: sudo nginx -s reload

    5. 创建服务

             通过上面提到的  dotnet  WebApplication1.dll 命令的方式启动网站,然后访问nginx监听的80端口  就可以直接访问到了,这个访问就是请求先到达ngnix,然后被转发给了kestrel服务器

            

            

         虽然这样可以访问,但是存在一个问题,当服务器重启后,网站会被关闭,需要手动的再次执行dotnet命令启动网站,那么如果做到让网站在服务器启动后能自动重启昵,解决的方法是把网站制作成一个服务,这样就能开启就启动了。

         5.1 创建服务定义文件

                创建一个空文件名字叫  kestrel-hellomvc.service ,通过WinSCP上传到服务器中

                

                然后右键编辑文件内容如下

                 

    [Unit]
    Description=Example .NET Web API App running on centos
    
    [Service]
    WorkingDirectory=/var/aspnetcore/hellomvc
    ExecStart=/usr/bin/dotnet /var/aspnetcore/hellomvc/WebApplication1.dll
    Restart=always
    RestartSec=10  # Restart service after 10 seconds if dotnet service crashes
    SyslogIdentifier=dotnet-example
    User=root
    Environment=ASPNETCORE_ENVIRONMENT=Production
    Environment=DOTNET_PRINT_TELEMETRY_MESSAGE=false
    
    [Install]
    WantedBy=multi-user.target

       

    WorkingDirectory表示你的网站放置的目录
    ExecStart表示用dotnet命令来启动你的网站WebApplication1.dll
    User表示你服务器用户名,要保证该用户存在并且具有执行程序的权限

    5.2 启动服务
    systemctl enable kestrel-hellomvc.service
    systemctl start kestrel-hellomvc.service
    systemctl status kestrel-hellomvc.service

    这样再次访问网站就可以了

     

                

  • 相关阅读:
    OpenYurt v0.4.0 新特性发布:高效地管理边缘存储资源
    OpenKruise v0.9.0 版本发布:新增 Pod 重启、删除防护等重磅功能
    dubbo-go v3 版本 go module 踩坑记
    阿里云携手 VMware 共建云原生 IoT 生态,聚开源社区合力打造领域标准
    一文告诉你Java日期时间API到底有多烂
    LocalDateTime、OffsetDateTime、ZonedDateTime互转,这一篇绝对喂饱你
    全球城市ZoneId和UTC时间偏移量的最全对照表
    全网最全!彻底弄透Java处理GMT/UTC日期时间
    GMT UTC CST ISO 夏令时 时间戳,都是些什么鬼?
    如何保证Redis高可用和高并发
  • 原文地址:https://www.cnblogs.com/xinxinzhihuo/p/8534135.html
Copyright © 2011-2022 走看看