首先安裝.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
