1 查看服務器.net core環境信息
連接到服務器,輸入 dotnet --info 查看服務器dotnet core環境信息
這是一台沒有.net core環境的服務器,需要安裝
2 安裝.net core環境
如果服務器只是用來運行.net core程序,則只需安裝.net core runtime即可;如果要做開發和編譯工作,則需要安裝.net core sdk
.net core sdk包含了.net core runtime,所以這里就直接安裝.net core skd了
官方安裝文檔:https://docs.microsoft.com/zh-cn/dotnet/core/install/linux-centos
a 執行命令 sudo rpm -Uvh https://packages.microsoft.com/config/centos/7/packages-microsoft-prod.rpm 將Microsoft包簽名密鑰添加到受信任密鑰列表,並添加Microsoft包存儲庫
b 執行命令 sudo yum install dotnet-sdk-3.1 安裝.net core 3.1 sdk
安裝結束后,再次輸入 dotnet --info 查看環境信息
3 創建asp.net core 3.1項目,並發布到文件夾
4 在centos服務器上創建文件夾,並拷貝上一步發布的好文件
5 通過centos終端,進入發布文件所在文件夾,執行命令 dotnet 項目名.dll
出現異常信息“Unable to bind to http://localhost:5000 on the IPv6 loopback interface: 'Cannot assign requested address'.”
這個問題Ubuntu上沒出現過,centos為什么有這個問題暫時不糾結了,既然默認的5000端口用不了,那就換個嘍
指定端口到8090,重新發布並運行,這次啟動成功了
6 通過外網地址訪問
7 添加nginx做反向代理
a 使用命令 sudo yum install epel-release
添加nginx包存儲庫
b 使用命令 sudo yum install nginx
安裝nginx
c 使用命令 sudo systemctl start nginx
啟動nginx
d 使用命令 ps -ef |grep nginx
驗證nginx是否啟動成功
e 可以使用命令 sudo systemctl enable nginx
設置nginx開機啟動
f 使用命令 sudo systemctl start nginx重啟nginx
8 配置nginx,設置代理端口
訪問成功
9 為什么要添加守護進程,有以下原因
a asp.net core程序運行在shell中,shell關閉會導致該web應用關閉
b 應用程序意外終止的話需要在shell里重新啟動
c 服務器宕機或者意外重啟的話,需要重新啟動shell,然后重新啟動web程序
10 使用守護進程supervisor
1)相關命令
a 使用命令 yum install epel-release 和 yum install supervisor 安裝supervisor
b 使用命令 systemctl start supervisord.service
啟動服務
c 使用命令 systemctl status supervisord.service 查看服務狀態
d 設置開機啟動 systemctl enable supervisord.service
e 重啟 supervisorctl reload
2)文件配置
a 在 /etc/supervisord.d
創建文件 WebApplication1.ini
b 配置 WebApplication1.ini 如下
自此,asp.net core部署至centos服務器結束。
12 備注
1) nginx.conf配置
server {
listen 8081;
location / {
proxy_pass http://localhost:8090;
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;
}
}
1) WebApplication1.ini配置
[program:WebApplication1] ;程序的名稱
command = dotnet WebApplication1.dll ;執行的命令
directory = /var/WebApplication/ ;命令執行的目錄
environment = ASPNETCORE__ENVIRONMENT=Production ;環境變量
user = root ;執行進程的用戶
stopsignal = INT
autostart = true ;是否自動啟動
autorestart = true ;是否自動重啟
startsecs = 1 ;自動重啟間隔
stderr_logfile = /var/log/WebApplication1.err.log ;標准錯誤日志
stdout_logfile = /var/log/WebApplication1.out.log ;標准輸出日志