1.环境说明
服务器系统:CentOS 7.4 64位html
相关工具:Xshel、Xftppython
.net Core版本:2.2linux
VS版本:2017nginx
服务器软件软件:.netcore、nginx、supervisor、policycoreutils-pythonweb
2.ASP.NET Core应用程序准备
这边我使用一个空的Web项目来进行演示,由于本篇主要介绍生产环境的部署,与应用无关。centos
首先发布到本地IIS文件夹进行测试无误服务器
具体IIS部署.net core 见 :curl
https://www.cnblogs.com/Liyuting/p/10310444.htmltcp
3.安装.NET Core SDK for CentOS7
此处引用微软官方给出的命令进行安装:工具
https://dotnet.microsoft.com/download/linux-package-manager/centos/sdk-current
输入 dotnet --info 来查看是否安装成功
若是能够执行则代表.NET Core SDK安装成功。
4.部署ASP.NET Core应用程序
在home 里面新建 test 文件夹,用来保存上传的core
上传以前发布的文件夹至/home/test/
检查是否可以运行
cd进入test 文件,执行Linux.dll
这里能够新建一个链接,
# curl http://localhost:5000
出现以下图所示
若是出现这些信息则表示成功运行。
这时候咱们只能在本地进行访问,没法使用IP访问,这时候咱们须要部署一个web容器来进行转发。
5.配置Nginx
5.1 安装Nginx
curl -o nginx.rpm http://nginx.org/packages/centos/7/noarch/RPMS/nginx-release-centos-7-0.el7.ngx.noarch.rpm
rpm -ivh nginx.rpm
yum install nginx
安装成功!
输入:systemctl start nginx 来启动nginx。
输入:systemctl enable nginx 来设置nginx的开机启动(linux宕机、重启会自动运行nginx不须要连上去输入命令)。
5.2配置防火墙
命令:firewall-cmd --zone=public --add-port=80/tcp --permanent(开放80端口)
命令:systemctl restart firewalld(重启防火墙以使配置即时生效)
ps:此处若是出现错误,请检查防火墙的开启状态。
直接输入IP测试nginx是否能够访问。
5.3 配置nginx对ASP.NET Core应用的转发
修改 /etc/nginx/conf.d/default.conf 文件。
将文件内容替换为
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; } }
上传至CentOS进行覆盖。
执行:sudo nginx -s reload 使其即时生效
这时候再次尝试访问。
这个问题是因为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
PS:若是执行命令时出现下列状况:
执行 sudo cat /var/log/audit/audit.log | grep nginx | grep denied | audit2allow -M mynginx
时出现:you must specify the -p option with the path to the policy file
请先检查SELinux是否被禁用掉了
在/etc/sysconf下有一个SeLinux文件,使用记事本打开,更改其中的SELINUX项的值就能够了。
- SELINUX=disable 禁用SeLinux
- SELINUX=enforcing 使用SeLinux
再次尝试访问。
至此基本完成了部署。
其余参考连接:http://www.cnblogs.com/ants/p/5732337.html
Linux下禁用、启用SeLinux: https://www.cnblogs.com/tdcqma/p/5671299.html
DotNet Core 2.0部署后外网IP访问: https://www.cnblogs.com/chenyangsocool/p/7707495.html