1 离线安装.net8 运行时
下载地址
下载 .NET 8.0 (Linux、macOS 和 Windows) | .NET

我是x64的所以选择这个二进制文件

上传到服务器上解压就行了我用的FileZilla工具上传的
可以用命令解压
cd /home/opsadmin/netcoreruntime
tar -zxvf aspnetcore-runtime-8.0.19-linux-x64.tar.gz
配置环境变量
#打开环境变量配置文件
vim ~/.bashrc
#在文件里新增这两行,其中 /home/opsadmin/netcoreruntime/aspnetcore 是你运行时解压的目录
export DOTNET_ROOT=/home/opsadmin/netcoreruntime/aspnetcore
export PATH=$PATH:$DOTNET_ROOT
#添加后保存文件刷新环境变量
source ~/.bashrc
#验证安装结果 输出版本信息说明配置成功了
dotnet --version
2 将.netcore项目上传到服务器上
#执行dotnet 命令启动服务
dotnet myapp.dll
2 将应用注册到 系统服务上进行管理长期运行
在第一步中使用.dotnet myapp.dll 启动了服务但是窗口运行 窗口关闭服务就停了显然不行,所以咱们还需要把服务应用注册到linux管理服务里进行管理
#新增服务配置文件
sudo vim /etc/systemd/system/myapp.service
[Unit]
Description=My .NET Core Application
After=network.target
[Service]
#服务目录 项目的文件目录
WorkingDirectory=/home/myapp
#dotnet 运行时安装目录
#注意 /home/netcoreruntime/dotnet 这个是dotnet运行时的全目录否则无法执行
#注意 /home/myapp/myapp.dll 这个是你程序的启动dll
ExecStart=/home/netcoreruntime/dotnet /home/myapp/myapp.dll
Restart=always
# Restart service after 10 seconds if the dotnet service crashes:
RestartSec=100
KillSignal=SIGINT
#日志前缀
SyslogIdentifier=dotnet-myappserver
#启用用户 这里建议新建一个用户
User=opsadmin
Environment=ASPNETCORE_ENVIRONMENT=Production
Environment=DOTNET_PRINT_TELEMETRY_MESSAGE=false
[Install]
WantedBy=multi-user.target
以上配置关键几个位置修改下就可以直接使用
配置完成了怎么启动呢
#设置开机自动启动 myapp.service 这个要与刚才创建的配置文件名称一致
sudo systemctl enable myapp.service
#启动服务
sudo systemctl start myapp.service
#查看服务状态 如果running 状态说明服务已经部署成功拉
sudo systemctl status myapp.service
3 日志查看
服务部署完了但是怎么查看日志呢?
sudo journalctl -u myapp.service # 查看所有日志
sudo journalctl -u myapp.service -f # 实时跟踪日志
sudo journalctl -u myapp.service --since "10 minutes ago" # 查看最近10分钟日志

journalctl 是个啥?
journalctl 是 Linux 系统中用于查询和管理 systemd-journald 服务收集的日志的命令行工具,在使用 systemd 的系统(如麒麟 V10、CentOS 7+、Ubuntu 16.04+ 等)中非常常用。它可以集中查看系统、服务、内核等各类日志,功能强大且灵活。
一、基本用法
1. 查看所有日志(默认按分页)
bash
journalctl
按 q 退出查看,按上下键滚动,按 G 跳到底部。
2. 实时跟踪日志(类似 tail -f)
bash
journalctl -f
实时显示新产生的日志,适合监控服务运行状态。
二、按服务 / 单元筛选
1. 查看指定服务的日志(最常用)
bash
journalctl -u 服务名.service
# 示例:查看 nginx 服务的日志
journalctl -u nginx.service
2. 实时跟踪某个服务的日志
bash
journalctl -u nginx.service -f
三、按时间筛选
1. 查看最近 N 时间的日志
bash
# 最近 1 小时
journalctl --since "1 hour ago"
# 最近 30 分钟
journalctl --since "30 minutes ago"
2. 查看某个时间范围内的日志
bash
# 2025-08-14 08:00 到现在
journalctl --since "2025-08-14 08:00"
# 2025-08-14 08:00 到 10:00
journalctl --since "2025-08-14 08:00" --until "2025-08-14 10:00"
四、按日志级别筛选
日志级别从低到高(详细程度递减):debug、info、notice、warning、err、crit、alert、emerg。
bash
# 只显示错误级别及以上的日志(err、crit、alert、emerg)
journalctl -p err
# 显示警告及以上级别,并跟踪 nginx 服务
journalctl -u nginx.service -p warning -f
五、按进程 / 用户筛选
1. 查看某个进程的日志
bash
journalctl _PID=1234 # 1234 是进程 PID
2. 查看某个用户相关的日志
bash
journalctl _UID=1000 # 1000 是用户 UID
六、内核日志相关
1. 只查看内核日志
bash
journalctl -k
2. 实时跟踪内核日志(如硬件事件、驱动信息)
bash
journalctl -k -f
七、实用选项
--no-pager:不分页显示(适合管道符处理)bash
journalctl -u nginx.service --no-pager | grep "error"-o json:以 JSON 格式输出(便于解析)bash
journalctl -u nginx.service -o json--disk-usage:查看日志占用的磁盘空间bash
journalctl --disk-usage--vacuum-size=100M:清理日志,保留最近 100Mbash
sudo journalctl --vacuum-size=100M
八、注意事项
- 权限:部分日志(如系统级、内核日志)需要
sudo才能查看完整内容。 - 日志存储:默认日志存在
/var/log/journal/(二进制格式),由systemd-journald管理,而非传统文本文件。 - 持久化:如果系统未启用日志持久化,重启后可能丢失部分日志,可通过
sudo mkdir -p /var/log/journal并重启systemd-journald开启持久化。
通过 journalctl 的各种组合选项,可以高效定位系统或服务的问题,是 Linux 运维中不可或缺的工具。
.NET Core 8服务在麒麟V10服务器部署及日志查看
3879

被折叠的 条评论
为什么被折叠?



