1.安装dotnet sdk
命令如下:
rpm -Uvh https://packages.microsoft.com/config/centos/7/packages-microsoft-prod.rpm yum install dotnet-sdk-3.1
安装完成后,通过命令:dotnet --version来验证。
2.安装部署dotnet程序
打包时,请注意IP配置,如果使用默认配置,那么只能通过localhost而非IP:端口方式访问,具体解决办法请参照:
https://www.cnblogs.com/huangxincheng/p/9569133.html
本文在appsettings.json文件中添加urls项目:"urls": "http://*:5000"来指定所有IP均可访问,配置文件的调用代码在Program.cs文件中,如下所示:
public static IHostBuilder CreateHostBuilder(string[] args) => Host.CreateDefaultBuilder(args) .ConfigureWebHostDefaults(webBuilder => { webBuilder.UseConfiguration(new ConfigurationBuilder().SetBasePath(Environment.CurrentDirectory) .AddJsonFile("appsettings.json") .Build()).UseStartup<Startup>(); });
安装完成后,打开IP:5000端口验证。
3.安装nginx
yum install epel-release
yum install nginx
安装完成后,可以通过命令:
which nginx
来查看nginx的主文件所在目录,如果想查看nginx的配置文件,则可以通过以下命令查看:
nginx -t
nginx配置过程:
打开 /etc/nginx/nginx.conf,修改如下:
server { listen 80 default_server; listen [::]:80 default_server; server_name _; root /usr/share/nginx/html; # Load configuration files for the default server block. include /etc/nginx/default.d/*.conf; location / { proxy_pass http://localhost:5000; } error_page 404 /404.html; location = /40x.html { } error_page 500 502 503 504 /50x.html; location = /50x.html { } }
配置完成后,使用命令启动nginx:/usr/sbin/nginx,发现报502错误:
解决思路如下:
打开配置文件nginx.conf,找到记录错误的日志文件位置,然后打开错误日志文件,如下:
可以根据错误日志的展示,然后配置upstreams部分,然后运行/usr/sbin/nginx命令,一切正常。但是——如果用systemctl start nginix.service运行,连接时发现服务器还报以上错误,服务器端错误详情为:
然后一顿搜索,解决方法为:新建目录
mkdir -p /etc/systemd/system/nginx.service.d
然后新建一个文件:override.conf,内容如下(或者使用命令:printf "[Service]\nExecStartPost=/bin/sleep 0.1\n" > /etc/systemd/system/nginx.service.d/override.conf):
[Service] ExecStartPost=/bin/sleep 0.1
完成后,运行systemctl daemon-reload使之生效。此时,前端调用服务器,发现还报502错误,打开error.log文件,发现错误如下:
2020/09/25 15:16:17 [crit] 9663#0: *15 connect() to 127.0.0.1:5000 failed (13: Permission denied) while connecting to upstream, client: 192.168.102.1, server: _, request: "GET / HTTP/1.1",
upstream: "http://127.0.0.1:5000/", host: "192.168.102.128"
然后找到原因,是SeLinux阻止所致,解决办法有:1.关闭SeLinux。2,运行命令增加权限(参考地址:http://www.osheep.cn/827.html):
setsebool -P httpd_can_network_connect 1
之后再次调用,发现一切正常。
nginx.conf最终配置配置为:
upstream backend { server localhost:5000; } server { listen 80 default_server; listen [::]:80 default_server; server_name _; root /usr/share/nginx/html; # Load configuration files for the default server block. include /etc/nginx/default.d/*.conf; location / { proxy_pass http://localhost:5000; } error_page 404 /404.html; location = /40x.html { } error_page 500 502 503 504 /50x.html; location = /50x.html { } }
nginx.service的最终配置为:
[Unit] Description=The NGINX HTTP and reverse proxy server After=syslog.target network-online.target remote-fs.target nss-lookup.target Wants=network-online.target [Service] Type=forking PIDFile=/run/nginx.pid ExecStartPre=/usr/sbin/nginx -t ExecStart=/usr/sbin/nginx ExecReload=/usr/sbin/nginx -s reload ExecStop=/bin/kill -s QUIT $MAINPID PrivateTmp=true [Install] WantedBy=multi-user.target
注意:如果仅仅修改完配置文件重新运行nginx是无法重新加载的,正确的步骤为:
首先,nginx不用停机,让nginx继续运行。
其次,修改配置文件。
再次,运行命令:/usr/sbin/nginx -s reload来使nginx来重新加载配置文件。
通过nginx代理,页面展示如下: