netcore 在windows和linux下部署

Windows环境下部署

1.IIS

2.命令行启动

3. 部署为服务

Linux环境下部署

1. nohup

  • 启动
# 多文件启动
nohup dotnet plat-api.dll --urls=http://*:5201 &
# 单文件启动
nohup ./ktfc-api urls=http://*:36766 Environment=Development &
# 退出
exit 
  • 查看控制台日志

退出控制台要使用exit命令,否则可能会导致退出

# 查看网站是否可以访问
curl -i http://localhost:8523/swagger/index.html
# 查看日志
tail -fn200 nohup.out

  • kill程序重新部署
ps -ef | grep dotnet
kill -9 xxxx
#!/bin/bash

# ==设置应用程序的名称,端口及环境变量==
APP_NAME=MyWebApi
PORT=18351
ENV=Development

PID=`find -name  ${APP_NAME} | xargs pgrep -f | xargs`
if [ "$PID" ]
then
  echo "---------->程序${APP_NAME}已经启动,正在杀掉"
  kill -9 $PID
  echo "---------->程序杀掉成功"
fi
echo "---------->程序正在启动"
# 启动应用
nohup ./${APP_NAME} urls=http://*:${PORT} Environment=${ENV} >/dev/null 2>&1 & 
echo "---------->程序${APP_NAME}启动成功"

  • stop.sh
#!/bin/bash

APP_NAME=MyWebApi
PID=`find -name  ${APP_NAME} | xargs pgrep -f | xargs`
if [ "$PID" ]
then
  echo "---------->程序${APP_NAME}已经启动,正在杀掉"
  kill -9 $PID
  echo "---------->程序杀掉成功"
else
  echo "---------->程序${APP_NAME}没有启动,不需要执行关闭操作"
fi

start.sh

#!/bin/bash
# 应用程序名称
name="MyWebApi"
# 端口
port=18351
# 环境
env=Development
echo "启动应用${name}:${port}【${env}】"
chmod +x ${name}
rm -rf nohup.out
nohup ./${name} urls=http://*:${port} Environment=${env} & 
tail -fn200 nohup.out

stop.sh

#!/bin/sh
# 要kill程序的端口号
port=18351
ntpl=$(ss -ntpl | grep "$port" | column -t)
appName=$(echo $ntpl | awk -F '[(,]' '{print $(NF-2)}')
rawPid=$(echo $ntpl| awk -F ',' '{print $(NF-1)}')
pid=$(echo $rawPid | awk -F '=' '{print $NF}')

if [ -n "$pid" ]
then
        echo "find $appName[$pid], kill it..."
        kill $pid
		echo "$appName is killed"
else
        echo 'cannot find listened port: '$port
        exit -1
fi

2. systemd

  1. 新建plat-api.service放入 /usr/lib/systemd/system文件夹中
[Unit]
#简单描述
Description=plat-api 黑山口软件基础平台

[Service]
#工作目录
WorkingDirectory=/home/web/netcore/plat-api
#开启时执行的命令
ExecStart=/usr/bin/dotnet plat-api.dll --urls=http://*:5201
#只有出错时重启,Restart=always表示无论什么原因造成服务停止都会重启
Restart=on-failure #服务崩溃时,十秒钟重启一次
RestartSec=10
# 用户
# User=wyy

[Install]
#该服务所在的target
#这里符号链接放在/usr/lib/systemd/system/multi-user.target.wants目录下
WantedBy=multi-user.target
  1. 执行脚本启动service
serverName="plat-api"
WorkingDirectory="plat-api"

#禁用原有服务开机自启动
systemctl disable ${serverName}
#停止原有服务开机自启动
systemctl stop ${serverName} 
#删除服务的service文件
rm /etc/systemd/system/${serverName}.service # and symlinks that might be related
#重载系统服务
systemctl daemon-reload
#放弃系统服务缓存
systemctl reset-failed
#复制新的服务文件
cp /app/${WorkingDirectory}/${serverName}.service /etc/systemd/system
#重载系统服务
systemctl daemon-reload
#设置服务自动启动
systemctl enable ${serverName} 
#运行服务
systemctl start ${serverName}
#查询服务状态
systemctl status ${serverName}

  1. 查看控制台日志
journalctl -u service-name.service --since "2019-12-20 20:20:00"

3. supervisor

  1. 安装
# 查看supervisord是否已安装及版本号
supervisord -v
# 安装supervisord
yum install supervisor 
  1. 配置supervisord
vi /etc/supervisord.conf

# 启用UI
[inet_http_server]         ; inet (TCP) server disabled by default
port=127.0.0.1:9001        ; (ip_address:port specifier, *:port for all iface)
username=user              ; (default is no username (open server))
password=123               ; (default is no password (open server))

# 指定配置文件扫描目录及文件格式(配置文件最后,一般默认不修改)
[include]
files = supervisord.d/*.ini


  1. 上传项目及配置项目
  • 上传项目到/home/web/netcore/plat-api文件夹

  • 新建plat-api.ini文件,上传至/etc/supervisord.d目录

    • 多文件项目配置
    [program:plat-api]
    command=/bin/bash -c "dotnet plat-api.dll urls="http://*:5202""
    directory=/home/web/netcore/plat-api/
    autorestart=true
    stderr_logfile=/var/log/plat-api.err.log
    stdout_logfile=/var/log/plat-api.out.log
    environment=ASPNETCORE_ENVIRONMENT=Production
    user=root
    stopsignal=INT
    
    • 单文件项目配置

    添加文件的执行权限chmod +x plat-api

    # 冒号后面是应用名称
    [program:plat-api]
    # 启动程序的命令
    command=/bin/bash -c "./plat-api urls="http://*:5202""
    # 应用程序所在目录
    directory=/home/web/netcore/plat-api/
    # 自动重启
    autorestart=true
    # 日志目录,可以自行定义
    stderr_logfile=/var/log/plat-api.err.log
    stdout_logfile=/var/log/plat-api.out.log
    # 启动参数
    environment=ASPNETCORE_ENVIRONMENT=Development
    user=root
    stopsignal=INT
    
  1. 重新加载配置
# 更新某个项目的配置
supervisorctl update plat-api 
# 或重新加载所有配置
supervisorctl reload

  1. 更新程序
  • 上传新项目到对应目录(直接覆盖不用停止项目)
  • 重启项目
supervisorctl restart plat-api
  1. 常用命令
supervisorctl status        //查看所有进程的状态
supervisorctl stop es       //停止es
supervisorctl start es      //启动es
supervisorctl restart es   //重启es
supervisorctl update es    //配置文件修改后使用该命令加载新的配置
supervisorctl reload        //重新启动配置中的所有程序
posted @ 2022-04-07 15:39  鱿鱼丝儿  阅读(260)  评论(0编辑  收藏  举报