最近在开发一个.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 接口完成 服务的自启动安装,重启后,服务运行正常。