方式一:发布独立项目
运行方式:
[root@iZmtbm0yxr88hrZ simpleDemo]# ./PingTech.API
方式二:发布依赖框架项目
安装依赖
- 1、下载依赖包:aspnetcore-runtime
下载地址:https://dotnet.microsoft.com/download/dotnet-core/3.1
选择对应平台,如Windows 64有开发需求下载SDK,只是运行安装runtime
本次使用运行时版本为:aspnetcore-runtime-3.1.3-linux-x64.tar.gz
- 2、将安装包拷贝到Linux特定目录下
本次使用目录为:/home/softwarePackages/
- 3、新建文件夹:
[root@localhost softwarePackages]# mkdir /home/softwarePackages/dotnet
- 4、/home/softwarePackages目录下解压运行时到指定文件夹dotnet:
[root@localhost softwarePackages]# tar -zxf aspnetcore-runtime-3.1.3-linux-x64.tar.gz -C dotnet
参考:Linux下解压安装
- 5、配置环境变量
在/etc/profile文件末尾加上两行配置项:
export DOTNET_ROOT=/home/softwarePackages/dotnet
export PATH=$DOTNET_ROOT:$PATH
执行 source /etc/profile 使改动生效:
[root@localhost simpleDemo]# source /etc/profile
运行方式:
[root@localhost simpleDemo]# dotnet PingTech.API.dll
后台任务运行方式:
[root@localhost simpleDemo]# dotnet PingTech.API.dll &
测试访问网址:curl http://127.0.0.1:5000/weatherforecast
查看进程:
lsof -i:端口号 ps -ef|grep 进程名称
关闭进程:
kill -s 9 进程ID(PID)
QA
-
问题:软件执行时异常提示
-bash: ./PingTech.API: Permission denied(无权限)
解决方法:
chmod u+rwx PingTech.API (添加权限)
参考:
Linux权限详解(chmod、600、644、666、700、711、755、777、4755、6755、7755) -
问题:运行后异常提示
Process terminated. Couldn't find a valid ICU package installed on the system. Set the configuration flag System.Globalization.Invariant to true if you want to run with no globalization support.
解决方法:
项目中新建文件:runtimeconfig.template.json,重新发布
runtimeconfig.template.json文件内容:{ "configProperties": { "System.Globalization.Invariant": true } }
-
问题:软件运行后只能本机访问
解决方式一:项目文件appsetting.json文件中添加配置项urls,重新发布
"urls": "http://*:5000;"
解决方式二:软件运行时添加--urls参数,如:dotnet PingTech.API.dll --urls=http://*:5000 &
进程守护及开机自启动
新建服务service
在指定目录中新建(.service)文件: /etc/systemd/system/WebApiDemo.service
文件内容:
[Unit]
Description=WebApiDemo
DefaultDependencies=no
[Service]
Type=simple
RemainAfterExit=no
ExecStart=/home/softwarePackages/dotnet/dotnet PingTech.API.dll --urls=http://*:5000
WorkingDirectory=/home/publish/simpleDemo/framework-dependent
Restart=on-failure
RestartSec=10
KillMode=process
[Install]
WantedBy=multi-user.target
说明: ExecStart #dotnet路径 + 执行命令,命令后面不能带空格
WorkingDirectory #软件部署路径
开机自启
设置开机自启动
[root@localhost ~]# systemctl enable WebApiDemo.service
停止开机自启动
[root@localhost ~]# systemctl disable WebApiDemo.service
验证一下是否为开机启动
[root@localhost ~]# systemctl is-enabled WebApiDemo
启动服务
[root@localhost ~]# systemctl start WebApiDemo.service
停止服务
[root@localhost ~]# systemctl stop WebApiDemo.service
重启服务
[root@localhost ~]# systemctl restart WebApiDemo.service
查看服务当前状态
[root@localhost ~]# systemctl status WebApiDemo.service
查看所有已启动的服务
[root@localhost ~]# systemctl list-units --type=service
重载服务
[root@localhost ~]# systemctl daemon-reload