配置.net Core環境
1.安裝依賴
sudo rpm -Uvh https://packages.microsoft.com/config/centos/7/packages-microsoft-prod.rpm
2.安裝sdk
sudo yum install dotnet-sdk-3.1
sdk是包含運行時和開發用的依賴環境包,適用於在服務器上開發使用
runtime只是包含.net core運行的環境。
安裝成功
dotnet --version
離線安裝方式
下載sdk和runtime上傳到CentOS7服務器
部署.net Core應用
1.創建.net Core應用存放目錄
這裏我是放在了/var/www/dotnet
目錄下
mkdir /var/www
mkdir /var/www/dotnet
將打包好的.net Core應用上傳到/var/www/dotnet
2.啓動應用
dotnet testcore3.1.dll
應用啓動成功,但是我們還不能通過網絡訪問,所以需要配置nginx反向代理轉發。
3.安裝nginx
curl -o nginx.rpm http://nginx.org/packages/centos/7/noarch/RPMS/nginx-release-centos-7-0.el7.ngx.noarch.rpm
rpm -ivh nginx.rpm
yum install nginx
安裝完成後啓動nginx
systemctl start nginx
設置開機自啓動
systemctl enable nginx
開放80端口
firewall-cmd --zone=public --add-port=80/tcp --permanent
如果出現錯誤,說明防火牆沒有開啓
查看防火牆狀態
systemctl status firewalld
開啓防火牆
systemctl start firewalld
重新開放80端口,重啓防火牆使配置生效
systemctl restart firewalld
訪問ip地址驗證nginx是否成功
4.配置nginx對.net Core應用的轉發
修改 /etc/nginx/conf.d/default.conf 文件
vi /etc/nginx/conf.d/default.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;
}
}
重啓niginx使配置生效
nginx -s reload
成功
安裝守護進程supervisor
現在有個問題是,啓動的.net core應用必須保持shell窗口的開啓才能運行,關閉shell後,進程也隨之關閉,這顯然不是我們想要的結果,如果服務器斷電重啓了,宕機了,需要手動去啓動應用很麻煩不說,及時性也得不到保證,所以需要一個守護進程的插件,來自動的進行進程的中斷自啓動和監聽。
1.安裝Supervisor
yum install supervisor
2.配置Supervisor
mkdir /etc/supervisor
echo_supervisord_conf > /etc/supervisor/supervisord.conf
修改supervisord.conf文件
vi /etc/supervisor/supervisord.conf
將紅框位置修改爲
[include]
files = conf/*.conf
注意:;
是註釋的意思,當時被這個地方卡了很久,就是因爲不知道被註釋掉了,所以怎麼改都不會生效。
在/etc/supervisor
目錄下創建conf文件夾
mkdir /etc/supervisor/conf
在conf目錄下創建testcore3.1.conf
mkdir /etc/supervisor/conf
touch testcore3.1.conf
編輯文件
vi testcore3.1.conf
修改爲下面內容
[program:testcore3.1]
command=dotnet testcore3.1.dll ; 運行程序的命令
directory=/var/www/dotnet ; 命令執行的目錄
autorestart=true ; 程序意外退出是否自動重啓
stderr_logfile=/var/log/testcore3.1.err.log ; 錯誤日誌文件
stdout_logfile=/var/log/testcore3.1.out.log ; 輸出日誌文件
environment=ASPNETCORE_ENVIRONMENT=Production ; 進程環境變量
user=root ; 進程執行的用戶身份
stopsignal=INT
運行supervisord,查看是否生效
supervisord -c /etc/supervisor/supervisord.conf
ps -ef | grep testcore3.1
如果出現這個錯誤,意思是守護進程已經在運行了,需要kill掉才能重新運行
查找進程
ps -ef | grep supervisor
殺死進程
kill -9 19293
配置應用程序開機自啓動
在/usr/lib/systemd/system
目錄下新建supervisord.service
touch /usr/lib/systemd/system/supervisord.service
編輯supervisord.service
vi /usr/lib/systemd/system/supervisord.service
修改爲
# dservice for systemd (CentOS 7.0+)
# by ET-CS (https://github.com/ET-CS)
[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 enable supervisord
驗證
systemctl is-enabled supervisord
成功