1.安装Centos的EPEL仓库
yum install epel-release
2.安装Nginx
yum install nginx
3.Nginx安装完成完成后,系统不会启动Nginx,使用如下命令启动:
systemctl start nginx
4.设置系统重启后默认启动Nginx:
systemctl enable nginx
5.查看防火墙的状态并启动防火墙
systemctl status firewalld # 查看防火墙状态
systemctl start firewalld # 启动防火墙
6.使用如下命令, 允许HTTP和HTTPS通过防火墙:
firewall-cmd --permanent --zone=public --add-service=http # 允许HTTP
firewall-cmd --permanent --zone=public --add-service=https # 允许HTTPS
firewall-cmd --reload
在浏览器地址栏输入你服务器的IP地址, 如果出现下图表示Nginx安装配置成功;
如果无法访问, 请查看firewall 是否开放80端口:
firewall-cmd --permanent --zone=public --add-port=80/tcp # 开放80端口
firewall-cmd --reload # 重启防火墙
修改Nginx的配置文件
首先,把Nginx的默认配置文件 /etc/nginx/nginx.conf里 80 端口转发配置 server 节点用 # 符注释掉。使用命令vi 或将 nginx.conf 文件下载(使用xftp或其他ftp工具都行)到本地修改完成后在上传(建议);
vi /etc/nginx/nginx.conf # 打开文件编辑模式, 输入i 进行编辑 完成后 按ESC键输入:wq 回车 退出编辑模式
注释如下图所示
然后我们重新创建一个自定义的Nginx配置文件用来代理Core 程序, 我创建名称为nginxforcore.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;
}
}
proxy_pass http: 后的url为你在core 启动项配置的路径(默认localhost:5000)
将创建好的自定义配置文件上传到 /etc/nginx/conf.d目录下 ,最后执行命令 重启
nginx -s reload
将Nginx添加到SELinux白名单
1.查看SELinux状态是否为Enforcing(SELinux默认状态为Disabled), 必须保证SELinux的状态为Enforcing否则添加白名单会失败;
https://www.linuxidc.com/Linux/2016-11/137723.htm(修改SELinux的状态)
修改SELinux的状态:
vim /etc/selinux/config
将SELINUX=disabled改为SELINUX=enforcing
使用如下命令:
getenforce
如果查询出的值为Enforcing, 执行下一步操作:添加Nginx到SELinux白名单
2.使用如下命令, 将Nginx添加至SELinux白名单,依次执行以下命令
yum install policycoreutils-python
cat /var/log/audit/audit.log | grep nginx | grep denied | audit2allow -M AddNginxToSELinux
semodule -i AddNginxToSELinux.pp
(AddNginxToSELinux)该文件可以自己命名
测试是否修改成功:
①cd到发布目录(我的为publish文件夹)
②运行.Net Core程序:(dotnet AbpMPA.Web.Mvc.dll,后面的dll文件为你.Net Core程序的入库dll)
③在浏览器地址栏输入你服务器的IP地址, 如果出现你自己程序运行的界面,例如下图(这是我的程序的登陆界面)说明我们的ASP.NET Core MVC 已经发布成功了;
如果没有出现上图, 而是
请检查:
1-Nginx是否按上述步骤正确配置;
2-防火墙及阿里云安全组策略是否正确配置(主要指80端口);
3-.NET Core程序是否在CentOS下正常运行;