Linux 环境
独立部署
安装 .NET 环境
参考 在 Linux 上安装 .NET,当前示例使用
Ubuntu
.NET 在 Ubuntu 包管理器源以及 Microsoft 包存储库中可用。 但是,应仅使用其中一种来安装 .NET。 Microsoft 建议使用 Ubuntu 包管理器源。
添加存储库
bashsudo add-apt-repository ppa:dotnet/backports
安装 SDK 或 运行时
如果安装 .NET SDK,则无需安装相应的运行时
bashsudo apt-get update && sudo apt-get install -y dotnet-sdk-9.0
验证安装
通过 CLI 命令查看 dotnet 信息
bashdotnet --info
发布 Linux 版本程序
也可将源码上传至部署环境再进行发布,前提是安装了
.NET SDK
而非运行时
发布程序
上传至部署环境
使用 FTP 工具将发布后的文件上传至部署环境
运行程序
来到上传的文件目录,使用 dotnet CLI 命令启动程序
dotnet Westcore.BCS.WebApi.dll --urls "http://*:5556"
可以看见程序已正确启动,启动端口为指定参数; 默认运行环境为
Production
,可使用--environment Devlopment
指定为开发环境
--urls
为程序指定启动地址,*
为指定端口的 “任意” IP地址Westcore.BCS.WebApi.dll
以实际启动程序名称为准
配置自启
创建
.service
扩展名服务文件,将服务文件放入/etc/systemd/system/
文件夹- WorkingDirectory 是发布应用程序的目录。
- ExecStart 是启动应用程序的实际命令,
/usr/bin/dotnet
为 dotnet 可执行文件所在路径。 - Restart=always 是自我解释的。 如果由于某种原因(无论是手动还是由于崩溃)而停止,则始终会启动此过程。
- RestartSec=10 也是自我解释的。 进程停止后,将在 10 秒后启动。
- SyslogIdentifier 很重要。 这意味着“系统日志标识符”。 有关守护程序的信息在系统日志中记录在此名称下。 还可以使用此标识符查找进程的 PID。
- User 是管理服务的用户。 它应存在于系统中,并具有应用程序文件的相应所有权。
- 可以在服务文件中设置任意数量的环境变量。
用户 www-data 是系统中的特殊用户。 可以使用此帐户。 或者创建一个新用户。 但是,如果不想创建另一个 Linux 用户,则可以使用 www-data 。
ini[Unit] Description=Backend applications running on Ubuntu [Service] WorkingDirectory=/var/firstwebapp/ ExecStart=/usr/bin/dotnet /var/firstwebapp/AspNetCoreDemo.dll --urls "http://*:5556" Restart=always # Restart service after 10 seconds if the dotnet service crashes: RestartSec=10 KillSignal=SIGINT SyslogIdentifier=backend-api User=www-data Environment=ASPNETCORE_ENVIRONMENT=Development Environment=DOTNET_PRINT_TELEMETRY_MESSAGE=false [Install] WantedBy=multi-user.target
运行服务命令
bashsystemctl start 自定义服务名称.service
查看服务运行状态
bashsystemctl status 自定义服务名称.service
服务已正确启用
启用服务
Enabled
表示在服务器启动后自动启动bashsystemctl enable 自定义服务名称.service
再次查看状态,服务标识为
enabled
测试自动重启
PID 进程ID,运行命令
systemctl status myfirstwebapp.service
查看bashsudo kill -9 <PID>
服务配置为10秒自启,预计它会在 10 秒内再次开始;查看信息,服务已按预期启动
Docker 容器独立部署
程序镜像
本地编译
将代码上传至部署环境
也可使用源代码托管工具进行拉取
使用
Dockerfile
编译账户名及仓库名请以实际为准,镜像标签自定义命名即可
bashdocker build -t 账户名/仓库名:backend.api .
编译完成
查看镜像列表
远程仓库
推送镜像
需确保账户中存在此仓库
bashdocker push 账户名/仓库名:镜像标签
登录账户
由于是私有库,所以需要登录
bashdocker login -u <username>
拉取镜像
bashdocker pull nathanhao/repo:backend.v1
运行容器
与 Windows 下使用 CLI 运行容器 操作一致
执行命令
bashdocker run -it -d --name website-backend --restart always -p 5555:8080 -v /var/www:/app/wwwroot -e ASPNETCORE_ENVIRONMENT=Development -e TZ=Asia/Shanghai nathanhao/repo:backend.api
查看容器日志
bashsudo docker logs 47i
程序正常运行
杂项
Linux 时区设置
- bash
timedatectl set-timezone Asia/Shanghai
- bash
export TZ=Asia/Shanghai