.net core 2.0学习笔记(二):部署到Windows和Liunx系统

   .Net Core 最大的亮点就是跨平台了, 下面介绍下在 Windows 下和 Liunx 下的部署。

   首先发布项目文件, 点击网站项目右键 发布:

从下图发布的文件图片可以看出, 不像以前 bin 目录下有很多 dll, 现在总体文件大小比以前小了很多

一.Windows 下部署 (较比之前部署多了下载一个模块和选择无托管)

   (1) 安装 AspNetCoreModule 托管模块 (已安装则跳过),点击我下载

   (2) 安装之后在模块里可以找到 AspNetCoreModule 就说明成功了

 

   (3) 在 IIS 中添加网站:

 

         最后选择 无托管代码 即可

   (4) 运行效果:

    

二.Liunx 部署

   (1) 这里以迷你版的 CentOs(CentOS-7-x86_64-Minimal-1708) 为示例, 运行 CentOS

       1. 修改 ifcfg-ens33 文件

修改之后按 ESC 键, 再输入:wq 保存退出, 最后输入 service network restart 重启网卡

       2. 安装 net-tools

          输入 sudo yum install net-tools, 最后根据提示输入 Y 即可

       3. 输入 ifconfig, 查看当前系统 ip 地址

       4. 第三步我们知道了 IP 地址, 下面就使用 windows 下的一个工具来操作 centOS(毕竟在 CentOs 中操作比较麻烦), 工具:点击下载 putty

复制好文字右键就是粘贴

       5.Nginx 的安装 (重启 Nginx 命令: systemctl restart nginx)

          输入命令 ( 根据提示输入 Y 即可): 

          sudo yum install epel-release 

          sudo yum install nginx

          sudo systemctl start nginx

         还需要输入关闭防火墙命令:

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

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

    sudo firewall-cmd --reload

         完成之后可以在 Windows 的浏览器中输入上面的 IP 访问了

       6. 在 CentOs 中下载.Net Core

          具体操作:https://www.microsoft.com/net/learn/get-started/linuxcentos

         安装成功之后输入 dotnet --version 会出现版本则说明成功了

      7. 将我们在 Visual Studio 2017 中的网站发布文件复制到 CentOs 中, 我们需要用到 FTP 传输工具, 这里使用 FlashFXP

        首先在 FlashFXP 菜单中找到 站点 - 站点管理器 - 新建站点

        连接成功之后, 在 home 文件夹下新建 netcore 文件夹, 然后把发布文件通过 FTP 传输进去

如果输入 dotnet CoreDemo.dll 出现报错, 运行命令: sudo yum install dotnet-sdk-2.1.3(或者在上面第 6 步操作的时候直接安装这个)

 

 安装之后再次输入 dotnet CoreDemo.dll:

在 CentOS 中使用命令: curl http://localhost:5000 没有出现错误则成功

 最后修改 Nginx 配置来实现局域网访问:

 使用 FlashFXP 进入 /etc/nginx/ 修改其中的 nginx.conf 文件 (也可以使用命令来编辑)

 将其中的 server 段替换成下面的配置

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

最后使用命令: systemctl restart nginx 重启 Nginx

输入之后发现出现 502 Bad GateWay.....

这个问题找了我好久... 结果发现是因为 Linux 保护机制所导致,我们需要将 nginx 添加至 Linux 的白名单

输入以下命令:

yum install policycoreutils-python

sudo cat /var/log/audit/audit.log | grep nginx | grep denied | audit2allow -M mynginx

sudo semodule -i mynginx.pp

再尝试访问:

 到现在基本部署完成了。

问题:我们会发现重启 CentOs 之后 Nginx 需要手动启动, 下面配置将 Nginx 改为自启动:

使用命令: systemctl enable nginx.service 或者 systemctl enable nginx

使用命令: systemctl is-enabled nginx 来确认是否设置成功

 

 

 

可能出现的问题:

1. 如果在 Windows 下出现访问不了的情况 (FlashFXP/Putty 连接不上), 可以重启下 CentOs 虚拟机