• ASP.NET Core学习之四 在CentOS上部署.net core


    一、安装CentOs

    以前在大学学过linux,但是对命令行总是有一种深深的排斥感,几年之后,还是又回来了。

    1.下载

    现在没法翻墙,就算是翻墙网速也是蜗牛一样慢,我使用阿里云的镜像站进行下载速度还是杠杠的。

    我使用的镜像地址是 https://mirrors.aliyun.com/centos/7.4.1708/isos/x86_64/CentOS-7-x86_64-DVD-1708.iso ,可以根据自己需要去下载,总目录地址:https://mirrors.aliyun.com/centos/

    2.安装

    安装教程网上非常多,这里也不详细解说,我是根据百度经验的文章搭建的,教程地址是https://jingyan.baidu.com/article/eae0782787b4c01fec548535.html

    二、部署.NET core

    1.发布程序

    首先,创建.NET CORE 2 MVC项目,确保能运行成功;然后,发布.NET程序。

    .net core 分为两种应用类型,分别是Portable application(便携应用)和Self-contained application(自宿主应用); 需要详细了解的请看 拥抱.NET Core,如何开发跨平台的应用并部署至Ubuntu运行 。

    在生产环境中需要考虑服务器更好的性能,所以使用便携式发布(简单说就是服务器自带core环境)。

    在当前项目右键进行发布到文件夹即可,默认路径为binReleasePublishOutput。

    2.安装.NET Core SDK

      这里就是配置centos的core环境,让我们的网站可以运行起来。

      官方的安装文档:https://www.microsoft.com/net/learn/get-started/linuxcentos

    在centos的右上角打开应用程序,找到终端并打开。

      首先、Add the dotnet product feed(其实就是向微软提交投名状,表示我这台服务器要用core),注意:先检测下是否能联网;

    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'
     

       然后,才安装 core SDK。

    命令一:sudo yum update

      需要一段时间,而且会提示是否继续,输入y然后回车。

      如果遇到提示another app is currently holding the yum lock;waiting for it to exit,表示yum正在被使用,通过以下命令强制关闭: rm -f /var/run/yum.pid

    命令二、sudo yum install libunwind libicu
    命令三、sudo yum install dotnet-sdk-2.0.2

      这一步也需要下载安装包,耗时需要比较长时间。完成后使用命令 dotnet --help 查看下是否安装成功。

    3.部署网站

      首先,创建文件夹core,命令为

    mkdir core

    cd core

      我这里使用的是虚拟机,就直接将生成好的文件考到core目录下,然后执行命令(dotnet 项目名称.dll)

    dotnet DotNetCoreWebDemo.dll

     

    直接使用自带的火狐浏览器就能访问http://localhost:5000

     

    终于部署完了,由于整个过程都是使用图形界面,也没有遇到不懂命令的难题。

    其实还有很多问题存在:

    如何使用nginx?

    怎么配置守护服务supervisor?

    怎么使用docker ?

    三、使用nginx

    1.安装nginx

    可以FQ的去看原文:https://www.digitalocean.com/community/tutorials/how-to-install-nginx-on-centos-7

    1.添加 CentOS 7 EPEL 仓库

    sudo yum install epel-release

    2.安装nginx

    sudo yum install nginx

    3.启动nginx

    sudo systemctl start nginx

    4.使用ip访问,出现以下界面即成功安装

    2、配制环境    

      1)配置防火墙

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

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

      2)关闭SELinux ,使用getenforce 查询 

        临时关闭(不用重启机器):

          setenforce 0                  ##设置SELinux 成为permissive模式

          ##setenforce 1 设置SELinux 成为enforcing模式

        修改配置文件需要重启机器:

          修改/etc/selinux/config 文件

          将SELINUX=enforcing改为SELINUX=disabled

          重启机器即可

      3) 修改Nginx 配制,保存

                  命令: vim /etc/nginx/nginx.conf

         location / {
           proxy_pass http://localhost:5000;
         }

          4) 重新加载Nginx配制文件

                 命令:nginx -t 测试配制文件是否正确

                 命令:nginx -s reload 重新加载nginx配制文件,不用重启nginx

        第三步补充: 通过反向代理将ip访问指向到 http://localhost:5000

        修改/etc/nginx/nginx.conf文件,在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;
             proxy_set_header X-Real-IP $remote_addr;
                proxy_set_header REMOTE-HOST $remote_addr;
                proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;

    如果是多站点部署,在conf.d下创建一个core.conf,内容为 server{ ... }

    注意:如果不修改第二步,会被selinux的安全设置拒绝,导致反向代理失败

     

    ......

    还需努力,只是迈出了半步。。。

    最后说一句,尽量把虚拟机搞的性能高一点,真是卡死我也。

     

     

    参考文章:

     https://www.cnblogs.com/Leo_wl/p/5734988.html

    https://www.cnblogs.com/ares-yang/p/7736842.html

    https://www.cnblogs.com/hohoa/p/5691071.html

    https://www.cnblogs.com/ants/p/5732337.html

    https://www.cnblogs.com/Burt/p/6566642.html

     https://www.cnblogs.com/rabbityi/p/7019662.html

     http://blog.csdn.net/jollypigclub/article/details/46862371 

     

     

  • 相关阅读:
    Ajax的技术与原理探讨
    Ajax技术与原理
    AJAX原理
    vue中ref的一些常见作用
    表的连接查询
    mysql使其支持插入中文数据的办法
    16 散列表-基于除余留数法与线性探测法的实现
    win10上Tensorflow的安装教程
    哨兵/sentinel:在算法设计中的应用
    快速选择算法/Select 寻找第k大的数
  • 原文地址:https://www.cnblogs.com/xcsn/p/7882178.html
Copyright © 2020-2023  润新知