• .netcore部署Linux并结合Nginx反向代理 get started


    一、.NetCore网站准备与发布

      首先准备好一个ASP.NET Core Web应用程序,我这里就使用新建的示例站点作为demo演示,使用dotnet publish 命令发布网站。

           

       或者使用VS的发布工具进行发布,选中网站右键选择发布,然后选择文件夹形式发布

     二、.net core + centos环境准备

    2.1 安装centos:这里我选择的版本是CentOS-7,虚拟机选择VMware Workstation Pro,安装步骤可以到网上搜索,这里不作演示。

    2.2 安装netcore:到微软.netcore官网可以找到不同系统安装.netcore的执行命令,执行下面三行命令,在centos7上安装.netcore-runtime2.1

    sudo rpm -Uvh https://packages.microsoft.com/config/rhel/7/packages-microsoft-prod.rpm
    sudo yum update
    sudo yum install aspnetcore-runtime-2.1

    安装完毕之后,输入命令  dotnet  如果出现提示信息,表示安装.net core 成功,可以继续下一步操作。

    包括可以查看.netcore版本号

      

    2.3 安装Nginx:

    第一步:sudo yum install epel-release
    第二步:sudo yum install nginx
    第三步:启动 sudo systemctl start nginx

    在浏览器上输入Nginx所在服务器的IP地址,可以看到欢迎页表示安装成功,如果无法访问可以检查下安装Nginx步骤或者防火墙之类的。

    If you are running a firewall, run the following commands to allow HTTP and HTTPS traffic:
    如果有运行防火墙,那需要允许http和https的通道访问,运行下面三个命令:

    sudo firewall-cmd --permanent --zone=public --add-service=http
    sudo firewall-cmd --permanent --zone=public --add-service=https
    sudo firewall-cmd --reload

    三、上传网站

    我们的示例.netcore网站已经制作并发布好了,下一步需要借助一个FTP工具 FileZilla,将发布好的网站文件上传到CentOS的 home/netcore 文件夹下。

    四、启动网站并配置Nginx作反向代理

    cd进入到刚才上传的网站目录,然后输入命令: dotnet  HelloNetCore2.dll 启动网站,分配的端口是5000,localhost:5000

     

    下一步配置Nginx,将80端口映射到示例.netcore网站的5000端口

    进入到etc/nginx 目录,找到nginx.config 配置文件,首先注释掉 nginx.conf 对80端口的listen,然后 nginx.conf 文件有下面一行配置

    include /etc/nginx/conf.d/*.conf;

    意思是会将所有conf.d 下面的所有*.conf配置都会引入进来,所以我们可以不必修改nginx.conf,而是在conf.d 下增加一个属于这个示例网站的自定义配置。

     

    在conf.d目录下,新建一个空的netcore.conf 文件,然后输入下面配置,保存退出。执行:nginx –s reload 使其马上生效

     如果一切正常,访问我们的centos服务IP地址,应该就能被Nginx处理访问到我们的NetCore站点。

    但是也有可能出现以下我遇到的两种情况:

    第一种:出现502错误

     原因是由于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

    第二种:访问centos服务IP地址的时候,被location重定向到5001端口,而5001端口是系统分配给这个站点的Https端口

    与此同时,curl  netcore 开启的5000端口也没有任何东西返回;

    为了研究为什么curl http://localhost:5000 没有任何输出,可以使用 tcpdump 来监听指定IP和指定端口

    tcpdump -i lo tcp port 5000 and host 127.0.0.1

    输入命令后,另外开启一个新的putty客户端进行 curl http://localhost:5000 请求测试
    监听输出信息如下,具体解释可以参考网上资料,我们发现其中的过程优先选择使用HTTPS,这很可能是NetCore项目的默认配置造成的。

    在net core官网文档查到Startup类默认是建议使用HTTPS的,解决方法有二、一是你在centos上安装好HTTPS证书,二是注释掉app.UseHttpsRedirection(); 重新发布。

     

     注释掉,重新编译发布上传,重启站点即可。

     

    现在访问80端口能成功转发到netcore站点的5000端口了

     

    参考资料:

    dotnet pulish 命令:https://docs.microsoft.com/zh-cn/dotnet/core/tools/dotnet-publish?tabs=netcore21

    linux安装netcore :https://www.microsoft.com/net/download/linux-package-manager/centos/runtime-current

    how-to-install-nginx-on-centos-7:https://www.digitalocean.com/community/tutorials/how-to-install-nginx-on-centos-7

    解决502问题:https://www.cnblogs.com/ants/p/5732337.html

    netcore Https:https://docs.microsoft.com/zh-cn/aspnet/core/security/enforcing-ssl?view=aspnetcore-2.1&tabs=visual-studio

  • 相关阅读:
    Flash P2P 对象复制详解[转]
    解决flashbuilder控制台无输出一例
    评论:工程师们,不要想一辈子靠技术混饭吃[转]
    flashdevelop使用svn
    actionscript中this和super的指向问题
    使用Apparat框架优化你的Flash[转]
    robotlegs【转】
    Flash Player和Adobe AIR内部的垃圾回收机制[转]
    away3d4.0 基础demo一则
    使用JDBC进行批处理
  • 原文地址:https://www.cnblogs.com/waynechan/p/9437934.html
Copyright © 2020-2023  润新知