.net Core 生产环境 KestrelServer + Shell 实践
1、背景描述 原項目部署在windwos 服務器下的windwos 服務程序。?
2、現已經改版為Linux Centos 下的服務程序。?
?
環境說明:
服務器系統:CentOS 7.0+
相關工具:Xshel、Xftp
服務器軟件軟件:.netcore、
?
1.安裝 CentOS
測試環境自行安裝,生產環境公司運維團隊準備。
2.安裝 .net Core SDK For Centos7
這里想必網上已經爛大街 了。
參考:https://www.microsoft.com/net/core#linuxredhat
選擇指定的系統:這里選擇Centos
提前使用windwos 開發好的程序。給予.net Core 1.1
下面幾種方法:
方案1:
1.jexus+ KestrelServer?
Jexus:Jexus 即 Jexus Web Server,簡稱JWS,是Linux平臺上的一款ASP.NET WEB服務器,是 Linux、Unix、FreeBSD 等非Windows系統架設 ASP.NET WEB 服務器的核心程序,是企業級ASP.NET跨平臺部署的一種可選方案。與其它WEB服務器相比,Jexus不但具有跨平臺ASP.NET服務器這樣的標志性特征,同時還擁有內核級的安全監控、入侵檢測、URL重寫、無文件路由等一系列重要功能和專有特性
KestrelServer?:Kestrel是一個基于libuv的跨平臺ASP.NET Core web服務器,libuv是一個跨平臺的異步I/O庫。ASP.NET Core模板項目使用Kestrel作為默認的web服務器.?
?
?
因為這里是準對發布Windwos 服務的改造程序。所以這里也是一個類似與服務程序的程序。
?
1、安裝jexus
?這里參考官網 https://www.jexus.org/?
2.安裝完成我們發布程序,在對應的目錄下創建屬于自己的文件夾。
?
這里對應相關已經全部安裝好.如圖所示,因為公司對這里要求比較嚴格這里就不貼過多圖。
?上傳程序到
3.配置jexus 配置文件。
4.這里懷著慢慢的激情運行Jexus的命令。查看進程結果沒有任何反應.
a)?這里的問題就不說了,因為Jexus需要root權限,因為公司分配的權限沒有root權限。對root權限限制比較嚴重。這里也和Jexus 的大牛宇內流云 溝通最終因為權限問題放棄使用 Jexus。(因為Jexus這里必須使用Root權限)。
?
方案2:?
KestrelServer?+ Linux Shell編程模式
?
1.Shell腳本:?
1.
??
2.Start.sh ?程序將要啟動調用 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 程序將要停止時調用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系統定時器定時檢查腳本。
?
| #!/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 配置系統定時器:crontab -e
?
| 1 | * /1 * * * *? cd /home/baseuser/www/XXX .XXX.Service && . /serverstatus .sh 2>&1 |
查看相關進程:
或者這是,你可以自己殺掉 程序進程,程序自己會重啟。?
我這里只運行windwos服務程序的改造程序,若想運行Web應用,直接安裝Nginx稍作配置即可。
原文地址:http://www.cnblogs.com/gongzhe/articles/6953556.html
.NET社區新聞,深度好文,微信中搜索dotNET跨平臺或掃描二維碼關注
總結
以上是生活随笔為你收集整理的.net Core 生产环境 KestrelServer + Shell 实践的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: C#码农的大数据之路 - 使用C#编写M
- 下一篇: NET Core中使用Irony实现自己