關(guān)于我們

質量為(wèi)本、客戶為(wèi)根、勇于拼搏、務(wù)實創新(xīn)

< 返回新(xīn)聞公共列表

Centos7系統下(xià)搭建.NET Core2.0+Nginx+Supervisor環境的示例

發布時(shí)間(jiān):2021-04-01 16:44:16

本文主要介紹建築實例。Centos7系統下(xià)的. NET Core2.0 Nginx Supervisor環境,具有一(yī)定的參考價值。有興趣的朋(péng)友可以參考一(yī)下(xià)。希望你看完這(zhè)篇文章後收獲很大。讓微子(zǐ)網絡帶你去了(le)解一(yī)下(xià)。

一(yī)、Linux .NET Core簡介

一(yī)直以來(lái),微軟隻提供。NET對自己平台的支持,也(yě)就(jiù)是說(shuō)這(zhè)種“理(lǐ)論上(shàng)”的跨平台框架在Linux和macOS上(shàng)的支持隻能(néng)由第三方項目提供(比如(rú)Mono。NET)。

直到微軟推出了(le)完全開源。NET Core。該開源平台與兼容。NET标準,可以在Windows、Linux、MacOS上(shàng)提供完全一(yī)緻的API。雖然這(zhè)個(gè)緊湊。NET框架隻是标準的一(yī)個(gè)子(zǐ)集。NET,已經相當強大了(le)。

這(zhè)種緊湊的框架一(yī)方面允許一(yī)些(xiē)功能(néng)性的應用同時(shí)運行在三個(gè)平台上(shàng)(就(jiù)像一(yī)些(xiē)功能(néng)性的Python腳本一(yī)樣);另一(yī)方面,它還允許服務(wù)器(qì)操作(zuò)和維護人(rén)員(yuán)部署ASP。服務(wù)器(qì)(尤其是服務(wù)器(qì),它正在努力運行視(shì)窗服務(wù)器(qì))。

官網參考:https://www.microsoft.com/net/core#linuxcentos

二、Linux .NET Core2.0 環境部署前準備

1.環境描述:

服務(wù)器(qì)系統:CentOS 7.2.1511

2.安裝前的準備(關(guān)閉防火(huǒ)牆和selinux)

1)關(guān)閉防火(huǒ)牆:

Systemctlstopfirewalld。服務(wù)#停止防火(huǒ)牆

SystemCtldisableFirewalld。服務(wù)#禁止防火(huǒ)牆啓動

防火(huǒ)牆-cmd -狀态#檢查默認防火(huǒ)牆-cmd-狀态#(關(guān)閉後不運行,打開後運行)2)關(guān)閉selinux

Sed-I的/selinux=implementing/selinux=disabled/g '/etc/selinux/config按如(rú)下(xià)方式查看修改後的文件:

[root @ localhost ~]# cat/etc/selinux/config

#系統的狀态。

# SELINUX=cantakeoneof sethrevalues :

# enforcing-selinuxsecuritypolicyisensforced。

# permissive-selinuxprintswarningsinsteadfenforcing。

# disabled-加載了(le)NoSELinuxpolicyisloaded。

SELINUX=禁用

# SELINUXTYPE=cantackeoneof three two values 3360

# targeted-targeted processes reserved,

# minimum-modificationoftargeted policy . only selected processes reserved

# mls-多重安全保護。

SELINUXTYPE=targeted3)重新(xīn)啓動Centos

重啓三、Centos 部署.NET Core2.0 環境

1.添加DOTNET産品

安裝之前。NET core,需要注冊微軟産品feed。隻需要做一(yī)次。首先注冊微軟簽名密鑰,然後添加微軟産品提要。

rpm-importhttps://packages.microsoft.com/keys/microsoft.asc

sh-c ' echo-e '[packages-Microsoft-com-prod]nname=packages-Microsoft-com-prodnbasure rl=https://packages . Microsoft.com/yum repos/Microsoft-rhel 7.3-productable=1 gpg check=1 gpg key=https://packages . Microsoft.com/key/Microsoft . ASC '/etc/yum . repo . d/DotnetDev . repo ' 2。安裝。net core SDK

請删除任何以前的預覽版本。 NET。NET從您的系統中删除。

以下(xià)命令更新(xīn)要安裝的産品列表,安裝所需的組件。NET核心,然後安裝。NET核心SDK。

升級

yuminstallli

bunwindlibicu-y yuminstalldotnet-sdk-2.0.0-y

3.檢查dotnet是否安裝成功與版本查看

dotnet--info
dotnet--version

四、測試.NET Core2.0 環境

1.在home目錄下(xià)初始化(huà)一(yī)個(gè)測試環境并輸出”Hello World “内容 (測試方式一(yī),可忽略)

cd/home
dotnetnewconsole-ohwapp
cdhwapp
dotnetrun

輸出空内容如(rú)下(xià):

[root@localhosthwapp]#dotnetrun
HelloWorld!

2.上(shàng)傳.net core的實例頁面進行測試 (測試方式二、推薦)

Centos 下(xià).net core 2 環境測試用例 (把它上(shàng)傳到/home目錄下(xià)或自定義的目錄)

下(xià)載地址:

http://down.51cto.com/data/2334968

執行以下(xià)命令

cd/home/WebApplication1
dotnetrestore//如(rú)果使過用測試方式一(yī),就(jiù)需先執行這(zhè)命令重新(xīn)加載一(yī)下(xià)當前新(xīn)的網站(zhàn)文件
dotnetrun

運行後如(rú)下(xià)圖:

Centos7系統下(xià)搭建.NET Core2.0+Nginx+Supervisor環境的示例

通過IE訪問測試頁

Centos7系統下(xià)搭建.NET Core2.0+Nginx+Supervisor環境的示例

五、安裝配置nginx對ASP.NET Core應用的轉發

1.安裝Nginx環境

[root@localhost~]#curl-onginx.rpmhttp://nginx.org/packages/centos/7/noarch/RPMS/nginx-release-centos-7-0.el7.ngx.noarch.rpm
[root@localhost~]#rpm-ivhnginx.rpm
[root@localhost~]#yuminstallnginx-y

輸入:systemctl start nginx 來(lái)啓動nginx。

[root@localhost~]#systemctlstartnginx

輸入:systemctl enable nginx 來(lái)設置nginx的開機啓動(linux宕機、重啓會自動運行nginx不需要連上(shàng)去輸入命令)

[root@localhost~]#systemctlenablenginx
Createdsymlinkfrom/etc/systemd/system/multi-user.target.wants/nginx.serviceto/usr/lib/systemd/system/nginx.service.

2.通過iE檢查能(néng)否訪問

[root@localhostnginx-1.8.1]#ps-ef|grepnginx
root146261008:47?00:00:00nginx:masterprocessnginx
nginx1462714626008:47?00:00:00nginx:workerprocess
root146363269008:49pts/100:00:00grep--color=autonginx

Centos7系統下(xià)搭建.NET Core2.0+Nginx+Supervisor環境的示例

nginx常用的操作(zuò)命令

systemctl start nginx.service   #啓動nginx服務(wù)

systemctl enable nginx.service #設置開機自啓動

systemctl disable nginx.service #停止開機自啓動

systemctl status nginx.service #查看服務(wù)當前狀态

systemctl restart nginx.service  #重新(xīn)啓動服務(wù)

systemctl list-units –type=service #查看所有已啓動的服務(wù)

4.防火(huǒ)牆配置(如(rú)果系統有防火(huǒ)牆就(jiù)需要進行寫入規則)

命令:firewall-cmd –zone=public –add-port=80/tcp –permanent(開放(fàng)80端口)

命令:systemctl restart firewalld(重啓防火(huǒ)牆以使配置即時(shí)生(shēng)效)

5.配置nginx對ASP.NET Core應用的轉發

修改 /etc/nginx/conf.d/default.conf 文件。

将文件内容替換為(wèi)

server{
listen80;
location/{
proxy_passhttp://localhost:88;
proxy_http_version1.1;
proxy_set_headerUpgrade$http_upgrade;
proxy_set_headerConnectionkeep-alive;
proxy_set_headerHost$host;
proxy_cache_bypass$http_upgrade;
}
}

重新(xīn)加載nignx

[root@localhostnginx]#nginx-sreload

nginx的配置己完成

6.開啓dotnet run進行測試

[root@localhost~]#cd/home/WebApplication1/
[root@localhostWebApplication1]#dotnetrun
Usinglaunchsettingsfrom/home/WebApplication1/Properties/launchSettings.json...
Hostingenvironment:Development
Contentrootpath:/home/WebApplication1
Nowlisteningon:http://[::]:88
Applicationstarted.PressCtrl+Ctoshutdown.

通過IP 80端口訪問

Centos7系統下(xià)搭建.NET Core2.0+Nginx+Supervisor環境的示例

六、配置守護服務(wù)(Supervisor)

目前存在三個(gè)問題

問題1:ASP.NET Core應用程序運行在shell之中,如(rú)果關(guān)閉shell則會發現(xiàn)ASP.NET Core應用被關(guān)閉,從而導緻應用無法訪問,這(zhè)種情況當然是我們不想遇到的,而且生(shēng)産環境對這(zhè)種情況是零容忍的。

問題2:如(rú)果ASP.NET Core進程意外終止那麽需要人(rén)為(wèi)連進shell進行再次啓動,往往這(zhè)種操作(zuò)都不夠及時(shí)。

問題3:如(rú)果服務(wù)器(qì)宕機或需要重啓我們則還是需要連入shell進行啓動。

為(wèi)了(le)解決這(zhè)個(gè)問題,我們需要有一(yī)個(gè)程序來(lái)監聽(tīng)ASP.NET Core 應用程序的狀況。在應用程序停止運行的時(shí)候立即重新(xīn)啓動。這(zhè)邊我們用到了(le)Supervisor這(zhè)個(gè)工具,Supervisor使用Python開發的。

1.安裝Supervisor

[root@localhost/]#yuminstallpython-setuptools-y
[root@localhost/]#easy_installsupervisor

2.配置Supervisor

[root@localhost/]#mkdir/etc/supervisor
[root@localhost/]#echo_supervisord_conf>/etc/supervisor/supervisord.conf

修改supervisord.conf文件,将文件尾部的配置

[root@localhost/]#vi/etc/supervisor/supervisord.conf

将裏面的最後兩行:

;[include]
;files=relative/directory/*.ini

改為(wèi)

[include]
files=conf.d/*.conf

ps:如(rú)果服務(wù)已啓動,修改配置文件可用“supervisorctl reload”命令來(lái)使其生(shēng)效

3.配置對ASP.NET Core應用的守護

創建一(yī)個(gè) WebApplication1.conf文件,内容大緻如(rú)下(xià)

[root@localhost/]#viWebApplication1.conf
[program:WebApplication1]
command=dotnetWebApplication1.dll;運行程序的命令
directory=/home/WebApplication1/;命令執行的目錄
autorestart=true;程序意外退出是否自動重啓
stderr_logfile=/var/log/WebApplication1.err.log;錯誤日志文件
stdout_logfile=/var/log/WebApplication1.out.log;輸出日志文件
environment=ASPNETCORE_ENVIRONMENT=Production;進程環境變量
user=root;進程執行的用戶身(shēn)份
stopsignal=INT

将文件拷貝至:“/etc/supervisor/conf.d/WebApplication1.conf”下(xià)

[root@localhost/]#mkdir/etc/supervisor/conf.d
[root@localhost/]#cpWebApplication1.conf/etc/supervisor/conf.d/

運行supervisord,查看是否生(shēng)效

[root@localhost/]#supervisord-c/etc/supervisor/supervisord.confsupervisord-c/etc/supervisor/supervisord.conf
[root@localhost/]#ps-ef|grepWebApplication1
root2987829685009:57?00:00:00dotnetWebApplication1.dll
root2989229363009:57pts/300:00:00grep--color=autoWebApplication1

如(rú)果存在dotnet WebApplication1.dll 進程則代表運行成功,這(zhè)時(shí)候在使用浏覽器(qì)進行訪問。

Centos7系統下(xià)搭建.NET Core2.0+Nginx+Supervisor環境的示例

至此關(guān)于ASP.NET Core應用程序的守護即配置完成。

Supervisor守護進程常用操作(zuò)

【啓動supervisord】
确保配置無誤後可以在每台主機上(shàng)使用下(xià)面的命令啓動supervisor的服務(wù)器(qì)端supervisord
supervisord

【停止supervisord】
supervisorctl shutdown

【重新(xīn)加載配置文件】
supervisorctl reload

七 、配置Supervisor開機啓動

新(xīn)建一(yī)個(gè)“supervisord.service”文件

[root@localhost/]#visupervisord.service
#dserviceforsystemd(CentOS7.0+)
#byET-CS(https://github.com/ET-CS)
[Unit]
Description=Supervisordaemon
[Service]
Type=forking
ExecStart=/usr/bin/supervisord-c/etc/supervisor/supervisord.conf
ExecStop=/usr/bin/supervisorctlshutdown
ExecReload=/usr/bin/supervisorctlreload
KillMode=process
Restart=on-failure
RestartSec=42s
[Install]
WantedBy=multi-user.target

将文件拷貝至:“/usr/lib/systemd/system/supervisord.service”

[root@localhost/]#cpsupervisord.service/usr/lib/systemd/system/

執行命令:systemctl enable supervisord

[root@localhost/]#systemctlenablesupervisord
Createdsymlinkfrom/etc/systemd/system/multi-user.target.wants/supervisord.serviceto/usr/lib/systemd/system/supervisord.service.

執行命令:systemctl is-enabled supervisord #來(lái)驗證是否為(wèi)開機啓動

[root@localhost/]#systemctlis-enabledsupervisord

重啓系統看能(néng)否能(néng)成功訪問

[root@localhost/]#reboot

Centos7系統下(xià)搭建.NET Core2.0+Nginx+Supervisor環境的示例

感謝你能(néng)夠認真閱讀完這(zhè)篇文章,希望小編分(fēn)享的“Centos7系統下(xià)搭建.NET Core2.0+Nginx+Supervisor環境的示例”這(zhè)篇文章對大家有幫助,同時(shí)也(yě)希望大家多多支持億速雲,關(guān)注億速雲行業資訊頻道,更多相關(guān)知識等着你來(lái)學習!


/template/Home/Zkeys/PC/Static