這篇文章將為大家詳細(xì)講解有關(guān)如何進(jìn)行.net Core 生產(chǎn)環(huán)境下的KestrelServer + Shell 實(shí)踐,文章內(nèi)容質(zhì)量較高,因此小編分享給大家做個(gè)參考,希望大家閱讀完這篇文章后對(duì)相關(guān)知識(shí)有一定的了解。
創(chuàng)新互聯(lián)是一家集做網(wǎng)站、成都網(wǎng)站設(shè)計(jì)、網(wǎng)站頁(yè)面設(shè)計(jì)、網(wǎng)站優(yōu)化SEO優(yōu)化為一體的專(zhuān)業(yè)網(wǎng)站制作公司,已為成都等多地近百家企業(yè)提供網(wǎng)站建設(shè)服務(wù)。追求良好的瀏覽體驗(yàn),以探求精品塑造與理念升華,設(shè)計(jì)最適合用戶的網(wǎng)站頁(yè)面。 合作只是第一步,服務(wù)才是根本,我們始終堅(jiān)持講誠(chéng)信,負(fù)責(zé)任的原則,為您進(jìn)行細(xì)心、貼心、認(rèn)真的服務(wù),與眾多客戶在蓬勃發(fā)展的市場(chǎng)環(huán)境中,互促共生。
1、背景描述 原項(xiàng)目部署在windwos 服務(wù)器下的windwos 服務(wù)程序。
2、現(xiàn)已經(jīng)改版為L(zhǎng)inux Centos 下的服務(wù)程序。
環(huán)境說(shuō)明:
服務(wù)器系統(tǒng):CentOS 7.0+
相關(guān)工具:Xshel、Xftp
服務(wù)器軟件軟件:.netcore、
1.安裝 CentOS
測(cè)試環(huán)境自行安裝,生產(chǎn)環(huán)境公司運(yùn)維團(tuán)隊(duì)準(zhǔn)備。
2.安裝 .net Core SDK For Centos7
這里想必網(wǎng)上已經(jīng)爛大街 了。
參考:https://www.microsoft.com/net/core#linuxredhat
選擇指定的系統(tǒng):這里選擇Centos
提前使用windwos 開(kāi)發(fā)好的程序。給予.net Core 1.1
下面幾種方法:
方案1:
1.jexus+ KestrelServer
Jexus:Jexus 即 Jexus Web Server,簡(jiǎn)稱(chēng)JWS,是Linux平臺(tái)上的一款A(yù)SP.NET WEB服務(wù)器,是 Linux、Unix、FreeBSD 等非Windows系統(tǒng)架設(shè) ASP.NET WEB 服務(wù)器的核心程序,是企業(yè)級(jí)ASP.NET跨平臺(tái)部署的一種可選方案。與其它WEB服務(wù)器相比,Jexus不但具有跨平臺(tái)ASP.NET服務(wù)器這樣的標(biāo)志性特征,同時(shí)還擁有內(nèi)核級(jí)的安全監(jiān)控、入侵檢測(cè)、URL重寫(xiě)、無(wú)文件路由等一系列重要功能和專(zhuān)有特性
KestrelServer :Kestrel是一個(gè)基于libuv的跨平臺(tái)ASP.NET Core web服務(wù)器,libuv是一個(gè)跨平臺(tái)的異步I/O庫(kù)。ASP.NET Core模板項(xiàng)目使用Kestrel作為默認(rèn)的web服務(wù)器.
因?yàn)檫@里是準(zhǔn)對(duì)發(fā)布Windwos 服務(wù)的改造程序。所以這里也是一個(gè)類(lèi)似與服務(wù)程序的程序。
1、安裝jexus
這里參考官網(wǎng) https://www.jexus.org/
2.安裝完成我們發(fā)布程序,在對(duì)應(yīng)的目錄下創(chuàng)建屬于自己的文件夾。
這里對(duì)應(yīng)相關(guān)已經(jīng)全部安裝好.如圖所示,因?yàn)楣緦?duì)這里要求比較嚴(yán)格這里就不貼過(guò)多圖。
上傳程序到
3.配置jexus 配置文件。
4.這里懷著慢慢的激情運(yùn)行Jexus的命令。查看進(jìn)程結(jié)果沒(méi)有任何反應(yīng).
a) 這里的問(wèn)題就不說(shuō)了,因?yàn)镴exus需要root權(quán)限,因?yàn)楣痉峙涞臋?quán)限沒(méi)有root權(quán)限。對(duì)root權(quán)限限制比較嚴(yán)重。這里也和Jexus 的大牛宇內(nèi)流云 溝通最終因?yàn)闄?quán)限問(wèn)題放棄使用 Jexus。(因?yàn)镴exus這里必須使用Root權(quán)限)。
方案2:
KestrelServer + Linux Shell編程模式
1.Shell腳本:
1.
2.Start.sh 程序?qū)⒁獑?dòng)調(diào)用 Start.sh腳本:
#!/bin/sh
PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin
export PATH
source /home/baseuser/.bash_profile
nohup dotnet /home/baseuser/www/XX.XX.Service/XX.XX.Service.dll >nohup.out 2>&1 &
2.Stop.sh 程序?qū)⒁V箷r(shí)調(diào)用Stop.sh
#!/bin/bash
echo
"begain kill server !"
ps
-ef|
grep
XXX|
grep
-
v
"grep"
|
awk
'{print "kill "$2}'
|sh
sleep
2
processnum=`
ps
-ef|
grep
XXX|
grep
-
v
"grep"
|
wc
-l`
if
[ $processnum -
eq
0 ]
then
echo
"kill Success !"
else
echo
"kill Failed !"
exit
Fi
|
3.ServerStatus.sh Linux系統(tǒng)定時(shí)器定時(shí)檢查腳本。
#!/bin/sh
PATH=
/usr/local/sbin
:
/usr/local/bin
:
/usr/sbin
:
/usr/bin
:
/sbin
:
/bin
export
PATH
source
/home/baseuser/
.bash_profile
echo
'look for server statu...'
>>server_status.log
processnum=`
ps
-ef|
grep
XXX|
grep
dotnet|
wc
-l`
echo
$processnum >>server_status.log
if
[ $processnum -
eq
0 ]
then
echo
'server is shut down ...begain start server...'
>>server_status.log
echo
"`source /home/baseuser/www/XXX.XXX.Service/start.sh`"
echo
'server is starting'
>>server_status.log
else
echo
'server is normal...'
>>server_status.log
exit
fi
|
4 配置系統(tǒng)定時(shí)器:crontab -e
1 | *
/1
* * * *
cd
/home/baseuser/www/XXX
.XXX.Service && .
/serverstatus
.sh 2>&1
|
查看相關(guān)進(jìn)程:
或者這是,你可以自己殺掉 程序進(jìn)程,程序自己會(huì)重啟。
我這里只運(yùn)行windwos服務(wù)程序的改造程序,若想運(yùn)行Web應(yīng)用,直接安裝Nginx稍作配置即可。
關(guān)于如何進(jìn)行.net Core 生產(chǎn)環(huán)境下的KestrelServer + Shell 實(shí)踐就分享到這里了,希望以上內(nèi)容可以對(duì)大家有一定的幫助,可以學(xué)到更多知識(shí)。如果覺(jué)得文章不錯(cuò),可以把它分享出去讓更多的人看到。