第七节:Linux之基于Centos系统安装.Net Core环境、部署Core MVC项目、使用nginx反向代理

一. DotNet Core环境安装

1. 准备

(1). 宿主机:centos 8.0

(2). 运行时:ASP.NET Core Runtime

PS:如果要开发 .NET 应用,请安装 SDK(包括了运行时)。

   如果只需运行应用程序,只需要安装运行时。

   如果要安装该运行时,建议安装 ASP.NET Core 运行时,因为它同时包括 .NET Core 和 ASP.NET Core 两个运行时

2. 在线安装(推荐!)

(说明:centos7x版本和centos8x版本安装步骤略有差异,centos7x需要将Microsoft 包签名密钥添加到受信任密钥列表,并添加 Microsoft 包存储库,centos8x不需要,下面是以centos8.0为例)

参考微软官方文档:https://docs.microsoft.com/zh-cn/dotnet/core/install/linux-centos

(1). 运行下面指令

sudo dnf install aspnetcore-runtime-3.1

如图:

(2). 查看是否安装成功

dotnet --info

如图:

(3). 补充几个其它指令

A. 安装sdk

sudo dnf install dotnet-sdk-3.1

B. 只安装.Net Core Runtimes

sudo dnf install dotnet-runtime-3.1

C. 查看安装的运行时

dotnet --list-runtimes

D.查看安装的sdk

dotnet --list-sdks

3. 离线安装

参考:https://www.cnblogs.com/dotnet261010/p/12169294.html     https://docs.microsoft.com/zh-cn/dotnet/core/install/linux-centos(底部)

(1). 去微软官网下载Asp.net Core的运行时

下载地址:https://dotnet.microsoft.com/download/dotnet-core/3.1 

PS:这里是二进制发布包,解压修改配置即可。

下载后的安装包为:aspnetcore-runtime-3.1.8-linux-x64.tar.gz

(2). 将上述压缩包上传到工作目录下,新建一个dotnetcore文件夹,用于存放解压后的文件;然后进行解压缩指令。

【mkdir dotnetcore】

tar -zxvf aspnetcore-runtime-3.1.8-linux-x64.tar.gz -C ./dotnetcore/

解压后文件如下:

(3). 设置环境变量

export DOTNET_ROOT=/root/dotnetcore
export PATH=$PATH:/root/dotnetcore

如图:

(4). 查看是否安装成功

【dotnet --info】,如下图,说明安装成功。

注:存在一个问题,只有当前窗口有效,在另外的窗口中则不起作用了!!!!

(5). 如何让所有窗口都有效???

 通过建立软连接的方式解决

ln -s /root/dotnetcore/dotnet /usr/local/bin

如下图:新的窗口也生效了。

二. Core Mvc项目部署

1. 制作一个Core Mvc可移植的发布包,然后上传到centos的工作目录下的coremvc1文件夹下。

 如下图:

2. 进入发布包目录(coremvc1),运行指令进行启动

dotnet coremvc1.dll --urls http://*:5000 

PS:也可以在程序中通过 UseUrls 指令端口,则上述命令则不需要指定urls了

3. 关闭防火墙

(1). 查看防火墙状态

service firewalld status

如下图 ,说明防火墙是开启的。

(2). 添加 5000端口永久开放,并且重启一下防火墙

#添加5000端口永久开放
sudo firewall-cmd --add-port=5000/tcp --permanent
#重启防火墙
firewall-cmd --reload

如下图:

(3). 也可以直接把防火墙关闭

service firewalld stop 

4. 测试

    在本机输入:http://192.168.137.201:5000/,进行访问,可以正常访问,如下图

三. 使用Nginx反向代理

1. 目标

 使用nginx反向代理coremvc项目,nginx为80端口,coremvc项目的端口为5000.

2. 步骤

(1). 启动coremvc项目,运行下面指令,由于是用nginx做反向代理,coremvc的5000端口可以不对外开放,5000端口可以不用配置防火墙允许。

【 dotnet coremvc1.dll --urls http://*:5000 】

(2). 修改nginx的配置文件,位于:/usr/local/nginx/conf/nginx.conf , 需要配置一个server_name和proxy_pass,如下图:

代码分享:

  server {
        listen       80;
        server_name  ypf1;

        #charset koi8-r;
        #access_log  logs/host.access.log  main;

        location / {
            root   html;
            index  index.html index.htm;
            proxy_pass   http://localhost:5000/;
        }

        #error_page  404              /404.html;

        # redirect server error pages to the static page /50x.html
        #
        error_page   500 502 503 504  /50x.html;
        location = /50x.html {
            root   html;
        }

        # proxy the PHP scripts to Apache listening on 127.0.0.1:80
        #
        #location ~ .php$ {
        #    proxy_pass   http://127.0.0.1;
        #}

        # pass the PHP scripts to FastCGI server listening on 127.0.0.1:9000
        #
        #location ~ .php$ {
        #    root           html;
        #    fastcgi_pass   127.0.0.1:9000;
        #    fastcgi_index  index.php;
        #    fastcgi_param  SCRIPT_FILENAME  /scripts$fastcgi_script_name;
        #    include        fastcgi_params;
        #}

        # deny access to .htaccess files, if Apache's document root
        # concurs with nginx's one
        #
        #location ~ /.ht {
        #    deny  all;
        #}
    }
View Code

(3). 启动nginx

进入对应目录:【cd /usr/local/nginx/sbin/】

启动nginx:【./nginx】

如下图:

3. 测试

  在浏览器中直接访问:http://192.168.137.201/ ,映射到coremvc页面,说明配置成功。

4. 常见错误

(1). nginx重启后会报下面的错误,如图:

通过上面nginx安装时MakeFile文件中配置的错误日志,可以查看错误日志:/var/log/nginx/error.log 

解决方案:运行下面指令

setsebool -P httpd_can_network_connect 1

!

  • 作       者 : Yaopengfei(姚鹏飞)
  • 博客地址 : http://www.cnblogs.com/yaopengfei/
  • 声     明1 : 如有错误,欢迎讨论,请勿谩骂^_^。
  • 声     明2 : 原创博客请在转载时保留原文链接或在文章开头加上本人博客地址,否则保留追究法律责任的权利。
 
原文地址:https://www.cnblogs.com/yaopengfei/p/13766711.html