最近在開發一個.Net Core WebApi 服務,大部分都在windwos上運行,很容易,現在要發佈到linux平臺上。
linux 平臺先要安裝 .Net Core 的支持 ,可以到官方平臺看其他平臺安裝:
https://www.microsoft.com/net/core#linuxcentos
敲如下命令:
sudo rpm -Uvh https://packages.microsoft.com/config/rhel/7/packages-microsoft-prod.rpm
sudo yum -y update
sudo yum -y install dotnet-sdk-3.1
dotnet --version
安裝好之後
服務自身是需要開始和停止腳本的
如下
Start.sh (主要實現服務啓動,後臺運行)
#!/bin/sh
RUN_NAME="BKYL.TPIServer.dll"
export LANG="en_US.UTF-8"
cd `dirname $0`
PID=`ps -ef|grep $RUN_NAME|grep -v grep|awk '{printf $2}'`
echo $PID
if [ ! -n "$PID" ];
then
echo "TPIServer 開始啓動"
else
echo "TPIServer 已啓動,正在重啓"
echo $PID
fi
nohup dotnet $RUN_NAME --urls http://*:808 >/dev/null 2>&1 &
Stop.sh (實現關閉當前服務)
#!/bin/sh
RUN_NAME="BKYL.TPIServer.dll"
export LANG="en_US.UTF-8"
PID=`ps -ef|grep $RUN_NAME|grep -v grep|awk '{printf $2}'`
echo $PID
if [ ! -n "$PID" ];
then
echo "未發現:TPIServer!"
else
echo "TPIServer 已結束執行!"
echo $PID
kill -9 $PID
fi
以上是一個單獨的服務需要運行的常規腳本
但是我想讓這個服務開機的時候,就自動運行,而不需要我自己重新啓動。
那麼就需要以下腳本
第一個爲服務本身的腳本
TPIServer
#!/bin/bash
# description: TPIServer Start Stop Restart
# processname: TPIServer
# chkconfig: 234 20 80
FILE_HOME='/usr/local/TPIServer'
case $1 in
start)
sh $FILE_HOME/Start.sh
;;
stop)
sh $FILE_HOME/Stop.sh
;;
restart)
sh $FILE_HOME/Stop.sh
sh $FILE_HOME/Start.sh
;;
*)
echo 'please use : TPIServer {start | stop | restart}'
;;
esac
exit 0
這個是一個服務腳本,可以通過使用
啓動:service TPIServer start
停止:service TPIServer stop
重啓:service TPIServer restart
來對服務進行 啓動和關閉。
然後 最後的方式是通過 執行一個腳本,來實現 自啓動
InitServer.sh (實現 腳本授權,服務安裝,以及 實現系統自啓動,還有啓動服務)
#!/bin/sh
ServerPath='/etc/init.d'
FileName='TPIServer'
chmod +x Start.sh
chmod +x Stop.sh
chmod +x TPIServer
cp $FileName $ServerPath/$FileName
chkconfig --add $FileName
chkconfig $FileName on
service $FileName start
echo 'Server Success'
RemoveServer.sh (實現停止自啓動,停止服務運行)
#!/bin/sh
ServerPath='/etc/init.d'
FileName='TPIServer'
chkconfig $FileName off
chkconfig --del $FileName
service $FileName stop
echo 'Server Stop'
自此,文件已經完畢。
只用授權 InitServer.sh ,然後,執行 ./InitServer.sh 接口完成 服務的自啓動安裝,重啓後,服務運行正常。