首先安装.NET Core Runtime:
sudo rpm -Uvh https://packages.microsoft.com/config/centos/7/packages-microsoft-prod.rpm
安装.NET Runtime
sudo yum install aspnetcore-runtime-3.0 -y
安装完成后使用以下命令验证安装:
dotnet --info
显示以下内容表示安装成功:
It was not possible to find any installed .NET Core SDKs Did you mean to run .NET Core SDK commands? Install a .NET Core SDK from: https://aka.ms/dotnet-download Host (useful for support): Version: 3.0.0 Commit: 95a0a61858 .NET Core SDKs installed: No SDKs were found. .NET Core runtimes installed: Microsoft.AspNetCore.App 3.0.0 [/usr/share/dotnet/shared/Microsoft.AspNetCore.App] Microsoft.NETCore.App 3.0.0 [/usr/share/dotnet/shared/Microsoft.NETCore.App] To install additional .NET Core runtimes or SDKs: https://aka.ms/dotnet-download
这里我只安装了Runtime并没有安装开发使用的SDK,只需要保证能运行.net core项目就可以啦
下一步,使用VS2019创建一个.net core mvc项目,创建好后直接将演示内容发布(我这里直接发布成文件系统)
然后使用FTP工具将发布编译生成的文件全部复制到Centos 7上指定的目录,我这里是放在/etc/nginx/websites/coretest下
使用使用命令定位到当前目录:
cd /etc/nginx/websites/coretest
然后在当前目录下运行dotnet CoreTest.dll命令以启动网站:
dotnet CoreTest.dll
运行结果如下:
可以看出当前网站运行在5000端口
接下来我们使用nginx访问,直接在nginx上做个转发代理到5000端口就可以了
首先先安装好nginx后,在/etc/nginx/conf.d下面创建一个新的nginx配置文件,例如我的就叫coretest.conf,将内容设置如下:
server { listen 8080; server_name localhost; 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_set_header X-Forwarded-For proxy_add_x_forwarded_for; proxy_set_header X-Forwarded-Proto $scheme; } }
↑↑↑这里我新建了一个8080端口,然后设置代理到5000端口↑↑↑
然后检查nginx配置文件:
nginx -t
然后重启nginx:
nginx -s reload
如果ngix -s reload 提示nginx: [error] invalid PID number "" in "/run/nginx.pid",解决方法:
#nginx.conf文件的路径可以从nginx -t的返回中找到 nginx -c /etc/nginx/nginx.conf
# 然后再执行 nginx -s reload
配置文件加好后,防火墙开放8080端口:
firewall-cmd --zone=public --add-port=8080/tcp --permanent firewall-cmd --reload
然后使用IP + 端口访问(8080):
http://192.168.100.131:8080/ ((lll¬ω¬) 我的是虚拟机。。。)
访问之后可能会出现502的错误:
如果访问显示“502 Bad Gateway”,可能是由于SELinux保护机制所导致,需要将nginx添加至SELinux的白名单。命令如下:
yum install policycoreutils-python -y sudo cat /var/log/audit/audit.log | grep nginx | grep denied | audit2allow -M mynginx sudo semodule -i mynginx.pp
执行完命令后重新访问http://192.168.100.131:8080:
访问成功啦~
配置进程守护(Supervisor)
在CentOS 7上,如果关闭终端,开启的进程就会关闭,导致程序无法访问
为了解决这个问题,就用到了Supervisor这个工具,Supervisor使用Python开发的,用于监听ASP.NET Core 应用程序的状况。在应用程序停止运行的时候立即重新启动。
1、yum install python-setuptools -y 2、easy_install supervisor
配置Supervisor:
创建supervisor文件夹,通过echo_supervisord_conf初始化配置文件
1、mkdir /etc/supervisor 2、echo_supervisord_conf > /etc/supervisor/supervisord.conf
修改新建的supervisord.conf配置信息,将最后面的
;files = relative/directory/*.ini
修改为:
[include] files = /etc/supervisor/conf.d/*.ini
即去掉最后两行前面的“;”号。
为.Net Core 项目添加进程配置文件:
在/etc/supervisor/目录下创建名字为conf.d文件夹然后创建一个CoreTest.ini文件,内容如下:
[program:CoreTest] command=dotnet CoreTest.dll ; 运行程序的命令 directory=/etc/nginx/websites/coretest/ ; 命令执行的目录 autorestart=true ; 程序意外退出是否自动重启 stderr_logfile=/etc/nginx/websites/coretest/log/CoreTest.err.log ; 错误日志文件 stdout_logfile=/etc/nginx/websites/coretest/log/CoreTest.out.log ; 输出日志文件 environment=ASPNETCORE_ENVIRONMENT=Production ; 进程环境变量 user=root ; 进程执行的用户身份 stopsignal=INT
启动Supervisor服务:
supervisord -c /etc/supervisor/supervisord.conf
启动服务后可以通过命令查看是否配置成功:
ps -ef | grep CoreTest.dll
如果看到以下内容,表示配置成功,就可以访问.Net Core项目了:
配置Supervisor开机启动:
进入/usr/lib/systemd/system/目录,并创建supervisord.service文件,添加内容:
[Unit] Description=Supervisor daemon [Service] Type=forking ExecStart=/usr/bin/supervisord -c /etc/supervisor/supervisord.conf ExecStop=/usr/bin/supervisorctl shutdown ExecReload=/usr/bin/supervisorctl reload KillMode=process Restart=on-failure RestartSec=42s [Install] WantedBy=multi-user.target
使配置生效:
systemctl daemon-reload
设置服务开机启动:
systemctl enable supervisord
启动supervisor进程:
systemctl start supervisord
验证是否为开机启动:
systemctl is-enabled supervisord
supervisor常用命令:
supervisorctl status //查看所有任务状态 supervisorctl shutdown //关闭所有任务 supervisorctl start|stop|restart all //控制所有进程 supervisorctl start|stop|restart program_name //控制目标进程
- 参考与致谢:
- https://www.cnblogs.com/zhuyuchao/p/11262666.html
- https://www.jianshu.com/p/dc38b80727e4