NetCore3.1+Centos7+DNS+Nginx发布

最近尝试用VS2019的NetCore3.1做了一个Demo小程序,测试一下NetCore的用法与NetFrameWork的不同。

具体的不同不在这里赘述,这里主要说一下如题的这些配置问题。

VS2019的发布 目前不知道如何实现iis那种直接部署的方法,只能发布成文件,之后传到linux的服务器上。

正常发布就可以了。

Centos7上建立一个文件夹,将发布的网站放到里面。

在Centos7上安装dotnetcore3.0的环境。

注册 Microsoft 密钥和源

sudo rpm -Uvh

安装 .NET Core SDK

sudo yum install dotnet-sdk-3.1

安装 ASP.NET Core 运行时

sudo yum install aspnetcore-runtime-3.1

三步安装完Core3.0的运行环境。

测试:进入到Web网站目录,例如:cd/home/sjj/Web后,运行dotnet*.dll--urls

:5000

,检测一下dotnetcore是否能够正常运行。

一般没有问题。

配置DNS服务器:

yum-yinstallbind

配置/etc/named.conf

其中的file对应的文件位置/var/named,一个是正向文件,一个是反向文件即:sjj.com.zone,192.168.147.130.arpa

sjj.com.zone文件内容为:

$TTL 1D

@ IN SOAsjj.com. rname.invalid. (

0 ; serial

1D; refresh

1H; retry

1W; expire

3H ); minimum

NS@

A 127.0.0.1

AAAA::1

www IN A 192.168.147.130

192.168.147.130.arpa的内容为:

INNS@

PTR localhost

100INPTR www.sjj.com

启动域名服务,systemctl start named

安装配置Nginx服务:

1、添加源

sudo rpm -Uvh http://nginx.org/packages/centos/7/noarch/RPMS/nginx-release-centos-7-0.el7.ngx.noarch.rpm

2、安装Nginx

sudo yum install -y nginx

3、启动Nginx并设置开机自动运行

systemctl start nginx.service启动服务

systemctl enable nginx.service开机自启动

此时在网内可以正常的访问域名。

配置文件/etc/nginx nginx.conf文件

在server代码块中输入:

listen 80;

server_name localhost;

location / {

proxy_pass :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-Forwarded-For $proxy_add_x_forwarded_for;

proxy_set_header X-Forwarded-Proto $scheme;

将其它的删除即可。

设置开机自动启动Coreweb应用:

安装supervisord服务

yum install Supervisor

配置文件位置:supervisord -c /etc/supervisord.conf

手动写一个.ini文件,名称随意起,内容为:

[program:Sample1]

command=dotnet First.dll --urls :5000

directory=/home/sjj/Web

environment=ASPNETCORE__ENVIRONMENT=Production

user=root

stopsignal=INT

autostart=true

autorestart=true

startsecs=3

stderr_logfile=/root/netcoresamples/sample1/log/Sample1.err.log

stdout_logfile=/root/netcoresamples/sample1/log/Sample1.log

将该文件放入/etc/supervisord.d目录中、

systemctl start supervisord启动该服务

systemctl enable supervisord开机自启动该服务

这样就可以服务器开机自动启动Coreweb网站

坑:

1、域名无法访问,502错误,解决方法

可以关闭防火墙。systemctl stop firewalld.service。但是这种方法太彻底。

可以只开通对应的端口即可

firewall-cmd --query-port=80/tcp查询端口是否开放

firewall-cmd --zone=public --add-port=80/tcp --permanent开放指定的端口,这里需要开放的端口包括:80,Core网站对应的端口,

systemctl restart firewalld.service 重启防火墙,使之生效。

2、一切都无误,但是还是无法访问域名,但是ip地址可以访问,这里需要设置linux服务器的网络访问配置

setsebool -P httpd_can_network_connect 1 写入配置文件的命令,重启后保留

3、检查windows端的网络防火墙,要么关闭,要么在入站、出站规则中允许指定的端口。网卡的dns要设置成linux服务器的ip地址,用nslookup www.sjj.com检查一下是否正常即可。用tracert 跟踪一下,如果没有走指定的dns,可以到windows/system32/driver/etc/hosts文件指定一下。

4、遇到Coreweb访问都正常,但是涉及到访问数据库就不正常的情况(数据库不在linux服务器上),此时需要:

1、设置数据库可以远程访问

2、linux打开指定的端口可以允许通过,例如1433。

综上,就可以实现通过域名可以反向代理到指定的Coreweb网站上。

举报/反馈