因为在医院环境下,服务器大多是离线环境,这里提供的是离线环境下部署的方式

首先请确定,以下文档都是以Centos为准,文档中出现的版本都是以Centos8为基准。

请确保Centos本身是完整版,而不是Minimal版本,否则会缺失很多基本组件导致安装失败

可以用gcc、vim等命令检查当前是否是完整版本。

gcc --version

安装包下载

  1. .NET 6.0安装包下载

可根据需要下载,如果需要在服务器进行打包开发等操作时,下载SDK,如果只是运行的话,下载Runtime即可。但ASP.NET Core Runtime都需要下载。 1727063487078.png|600

  1. Microsoft常见软件仓库包,这个rpm主要用于补足.net的依赖包,这里提供的是CentOS8的包。在这里顺便提供各版本下的下载地址,可以根据需要选择CentOS各版本
  2. libicu,这个包是用于解决常见的全球化部署错误的包
  3. libgdiplus,这个包主要是在Linux .NET下如果需要处理图片的情况下,不安装该包会报出缺失libgdiplus或者gdip的异常。如果在部署后出现该异常应该去安装该包,该包安装极其依赖网络,如果需要处理该问题时,可以参考GitHub - mono/libgdiplus: C-based implementation of the GDI+ API

安装.Net环境

检查当前环境是否存在.net

第一步首先需要检查当前环境下是否包含.net

dotnet --version
dotnet --info

如图所示,如果dotnet装好的情况下,会显示当前版本号,这里的是8.0.100,具体版本按需安装,Aegis目前都是以6.0为主的版本。 image.png|650

如果都已装好,版本查询也正常的情况,则可以直接跳转 到 部署项目部分。

安装Microsoft常见软件仓库和libicu

将下载好的包复制到当前工作目录下,运行以下命令来安装该包(该包是之前提到的Microsoft常见软件仓库)

sudo rpm -Uvh packages-microsoft-prod.rpm
sudo rpm -Uvh libicu-60.3-2.el8_1.x86_64.rpm

安装.Net

首先创建好dotnet将要安装的文件夹

mkdir -p /var/lib/dotnet

解压dotnet runtime,如果是sdk也一样

tar -zxf dotnet-runtime-6.0.33-linux-x64.tar.gz -C /var/lib/dotnet

解压asp net core

tar -zxf aspnetcore-runtime-6.0.33-linux-x64.tar.gz -C /var/lib/dotnet

创建软链接

ln -s /var/lib/dotnet/dotnet /usr/bin

检查环境是否安装成功

dotnet --info

部署项目

将项目文件拷贝到运行目录下(建议是/opt下或者工作用户的目录下,这里举例使用/opt,假设当前项目文件夹是在/opt/webapi下),可以在这里设置http和https运行的端口号,如果不设置会默认使用5000和5001。

dotnet /opt/webapi/Aegis.Webapi.BaseDemo.dll --urls "http://0.0.0.0:8000;https://0.0.0.0:8001"

检查是否运行成功 06064c937554f523bb1aa50c17e6070.png|800

如果没有问题,此时项目就已经运行成功了,可以测试一下是否可连接。(可按Ctrl+C关闭)

设置为开机自启动服务

vim /usr/lib/systemd/system/webapi.service

根据具体情况编写如下内容

[Unit]
Description=WebAPI Service #服务描述

[Service]
WorkingDirectory=/opt/webapi #工作目录
ExecStart=/var/lib/dotnet/dotnet /opt/webapi/Aegis.Webapi.BaseDemo.dll --urls "http://0.0.0.0:8000;https://0.0.0.0:8001" #启动命令
Restart=always
RestartSec=10
KillSignal=SIGINT
SyslogIdentifier=dotnet_webapi #使用的系统日志标识符
User=root #运行用户是谁,建议根据实际情况设置运行用户
# 以下是环境变量
Environment=ASPNETCORE_ENVIRONMENT=Production
Environment=DOTNET_PRINT_TELEMETRY_MESSAGE=false

[Install]
WantedBy=multi-user.target #服务所在的服务组

编写好后开启服务,如果开启失败,请检查webapi.service的内容是否存在问题

systemctl start webapi.service

检查服务状态是否开启,如果未开启,建议使用dotnet直接运行来检查项目是否正常

systemctl status webapi.service

如果一切正常,则将其设置未开机自启动服务

systemctl enable webapi.service

如果需要停止服务,可以使用以下命令这里是停止服务,如果需要停止项目时才使用

systemctl stop webapi.service

开放防火墙指定端口

如果其他服务器无法访问当前服务器的情况下,建议检查端口是否通畅,如果不通畅,开放服务器上的防火墙端口即可(如果还不行多半是信息科建立了端口限制,可联系信息科

查看防火墙状态

systemctl status firewalld.service

\ 关闭防火墙,再做测试,如果可行则代表就是防火墙限制

systemctl stop firewalld.service

开启防火墙

systemctl start firewalld.service

查询指定的8000端口是否开启(运行命令后,返回yes代表已开启,返回no代表未开启)

firewall-cmd --query-port=8000/tcp

如果未开启,添加开放端口

firewall-cmd --add-port=8000/tcp --permanent

重新载入防火墙

firewall-cmd --reload

如果想要彻底禁用防火墙(慎用),则可以运行以下命令

systemctl stop firewalld.service
systemctl disbale firewalld.service

results matching ""

    No results matching ""