如何將Asp.net core 3.1 網(wǎng)站部署到Centos7.X服務器上

一、安裝.net core SDK及asp.net core 運行時.
1遠程登陸Centos7.X 服務器
ssh -p8080 root@188.180.180.180
2.安裝 .NET 之前,需要:注冊 Microsoft 密鑰;注冊產(chǎn)品存儲庫;安裝必需的依賴項。(每臺計算機只需要執(zhí)行一次此操作。)
[root@localhost ~]#sudo rpm -Uvh https://packages.microsoft.com/config/centos/7/packages-microsoft-prod.rpm
3.安裝 .NET Core SDK
[root@localhost ~]#sudo yum install dotnet-sdk-3.1
4.安裝 ASP.NET Core 運行時(注意:ASP.NET Core 運行時,因為它同時包括 .NET Core 和 ASP.NET Core 運行時)
[root@localhost ~]#sudo yum install aspnetcore-runtime-3.1
二、拷貝網(wǎng)站程序到服務器指定用戶的指定目錄下
scp -r -P 8xxxx?d:\發(fā)布項目\China.WebChat.Project root@188.180.180.180:GangHangProject
三、開放Centos7.X 服務器的指定端口
1.檢查防火墻狀態(tài)
[root@localhost ~]#firewall-cmd --state
running
2.開放指定的端口(假設是:8888),[移除端口用:remove]
[root@localhost ~]#firewall-cmd --permanent --add-port=8888/tcp
success
3.檢查指定的端口是否已開放
[root@localhost ~]#firewall-cmd --query-port=8888/tcp
no
4.重啟防火墻(修改配置后,必須重啟防火墻,操作才能生效)
[root@localhost ~]#service firewalld restart
Redirecting to /bin/systemctl restart firewalld.service
5.再次檢查防火墻狀態(tài)(可省略此步)
[root@localhost ~]#firewall-cmd --query-port=8888/tcp
yes
6.查看防火墻規(guī)則(此步可省略,目的是再確認一下)
[root@localhost ~]#firewall-cmd --list-all
public (active)
? target: default
? icmp-block-inversion: no
? interfaces: enp0s31f6
? sources:?
? services: ssh dhcpv6-client
? ports: 8888/tcp
? protocols:?
? masquerade: no
? forward-ports:?
? source-ports:?
? icmp-blocks:?
? rich rules:?
至此,如在服務器上運行donet appname.dll,通過開放的端口應該可以訪問的到。
四、安裝并配置 nginx (反向代理服務器,如不考慮負載平衡,可不用此代理,直接跳到第五步。)
1.添加Nginx存儲庫
[root@localhost ~]#sudo yum install epel-release
2.安裝Nginx
[root@localhost ~]#sudo yum install nginx
3.啟動Nginx(Nginx不會自行啟動)
[root@localhost ~]#sudo systemctl start nginx
4.允許HTTP和HTTPS通信(對防火墻操作,此步視具體情況運行)
[root@localhost ~]#sudo firewall-cmd --permanent --zone=public --add-service=http sudo firewall-cmd --permanent --zone=public --add-service=httpssudo firewall-cmd --reload
5.配置Nginx,可以直接在服務器上修改nginx的配置文件,也可以下載下來修改,然后再上傳。
[root@localhost ~]#vi /etc/nginx/nginx.conf
打開后i鍵修改,添加以下內容:
? ?server {
? ? ? listen 8888;
? ? ? server_name ?localhost;
? ? ? location / {
? ? ? ? ? proxy_pass http://localhost:5000;
? ? ? ? ? proxy_http_version 1.1;
? ? ? ? ? proxy_set_header Upgrade $http_upgrade;
? ? ? ? ? proxy_set_header Connection $http_connection;
? ? ? ? ? proxy_set_header Host $host;
? ? ? ? ? proxy_cache_bypass $http_upgrade;
? ? ? ? ?}
? ? }
按ESC鍵,再輸入 :wq 保存退出
如想下載到本地編輯,然后再上傳到服務器,可用以下兩條命令。
scp -P8080 root@188.180.180.180:/etc/nginx/nginx.conf nginx.conf
scp -P8080 nginx.conf ?root@188.180.180.180:/etc/nginx/nginx.conf
6.驗證nginx配置文件是否正確(進入nginx安裝目錄sbin下,輸入命令:)
[root@localhost ~]#nginx -t
…… nginx.conf syntax is ok
…… nginx.conf test is successful
7.重啟nginx服務
[root@localhost ~]#nginx -s reload
五、安裝并配置 進程守護者 Supervisor (以便程序能不間斷運行)
1.安裝
[root@localhost ~]#yum install python-setuptools
[root@localhost ~]#easy_install supervisor
2.配置
(1) 指定 Supervisor 配置文件 目錄,并生成缺省的配置文件
[root@localhost ~]#mkdir /etc/supervisor
[root@localhost ~]#echo_supervisord_conf > /etc/supervisor/supervisord.conf
(2)對生成的缺省配置文件進行編輯
[root@localhost ~]#vi /etc/supervisor/supervisord.conf
在打的文件最下邊找到如下文本片段:
;[include]
;files = relative/directory/*.ini
修改為:
[include]
files = /etc/supervisor/conf.d/*.conf
3.為已經(jīng)部署的asp.net core 網(wǎng)站添加進程配置文件(假設叫:netcore.conf)
[root@localhost ~]#vi /etc/supervisor/conf.d/netcore.conf
文件內容如下:
[program:China.WebChat.Project] ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ;自定義進程名稱
command=dotnet China.WebChat.Project.dll ? ? ? ? ? ? ? ? ? ? ? ;程序啟動命令
directory=/home/dell/GangHangProject/China.WebChat.Project ? ? ;命令執(zhí)行的目錄
autostart=true ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?;在Supervisord啟動時,程序是否啟動
autorestart=true ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?;程序退出后自動重啟
startretries=5 ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?;啟動失敗自動重試次數(shù),默認是3
startsecs=1 ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ;自動重啟間隔
user=root ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ;設置啟動進程的用戶,默認是root
priority=999 ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?;進程啟動優(yōu)先級,默認999,值小的優(yōu)先啟動
stderr_logfile=/var/log/Scorpio.WebApi.err.log ?;標準錯誤日志
stdout_logfile=/var/log/Scorpio.WebApi.out.log ?;標準輸出日志
environment=ASPNETCORE_ENVIRONMENT=Production ? ;進程環(huán)境變量
stopsignal=INT ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?;請求停止時用來殺死程序的信號
4.應用配置文件,啟動Supervisor
[root@localhost ~]#supervisord -c /etc/supervisor/supervisord.conf
5.配置Supervisor開機啟動
(1)設置并編輯服務配置文件
[root@localhost ~]#vi /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 $OPTIONS shutdown
ExecReload=/usr/bin/supervisorctl $OPTIONS reload
KillMode=process
Restart=on-failure
RestartSec=42s
[Install]
WantedBy=multi-user.target
(2)設置開機啟動
[root@localhost ~]#systemctl enable supervisord.service
[root@localhost ~]#systemctl daemon-reload
六、重啟服務器?
[root@localhost ~]#reboot
至此全部搞定,Good luck!