.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 虚拟机