Linux搭建dotnet-sdk环境

Linux 搭建 dotnet sdk 环境

  1. 微软官网下载相应的版本,dotnet-sdk-5.0.102-linux-x64.tar.gz
    选择x64下载
  2. 创建指定的目录 /root/opt/dotnet,并解压到指定的目录 /root/opt/dotnet
1
mkdir -p /root/opt/dotnet && tar zxf dotnet-sdk-5.0.102-linux-x64.tar.gz -C /root/opt/dotnet
  1. 配置 dotnet 环境变量
1
ln -s /root/opt/dotnet/dotnet /usr/bin/dotnet
  1. 查看 dotnet
1
dotnet --info
  1. 发布 dotnet
  • 需要安装 runtime 或 sdk
1
dotnet publish -c Release
  • 不需要安装 runtime 发布,并发布成单个文件
1
dotnet publish -c Release -r win-x64 --sc true /p:PublishSingleFile=true
  1. -c|--configuration 指定配置文件
  2. -r|--runtime 指定 rid 标识 NET RID 目录
  3. -sc|--self-contained 是否需要独立部署,是否需要安装 runtime
  4. /p:PublishSingleFile=true 是否发布成单个文件

此时单个文件包含了 runtime ,可能文件会很大

  • 不需要安装 runtime 发布,不合并成单个文件
1
dotnet publish -c Release -r win-x64 --sc true

此时会产生很多运行时的文件

部署 dotnet web api

  1. 创建 webapi 目录,如:mkdir /root/demo_api
  2. 将编译好的 webapi 文件放至/root/demo_api
  3. 配置 Production 环境 appsettings.Production.json
  4. 添加辅助配置文件[可选] hosting.json
  5. 启动命令
1
2
3
4
5
cd /root/demo_api
dotnet demo_api.dll

# 带环境变量临时启动
ASPNETCORE_ENVIRONMENT=Production dotnet demo_api.dll

配置 webapi 的开机启动

添加开机启动的 service 文件

1
2
cd /lib/systemd/system
vim demo_api.service

配置开机启动:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
[Unit]
Description="demo api, use dotnet core 5.0"

[Service]
Type=simple
WorkingDirectory=/root/demo_api
ExecStart=/root/opt/dotnet/dotnet demo_api.dll
#Restart=always
#RestartSec=10
PrivateTmp=true
User=root
Environment=ASPNETCORE_ENVIRONMENT=Production

[Install]
WantedBy=multi-user.target

开机启动命令:

1
2
3
4
5
6
systemctl daemon-reload            // 创建或更新linux服务配置文件修改后必须运行此命令重新加载守护进程
systemctl status demo_api.service // 查看服务状态
systemctl start demo_api.service // 启动服务
systemctl stop demo_api.service // 停止服务
systemctl enable demo_api.service // 设置开机启动
journalctl -fu demo_api.service // 进入服务,查看状态

其他 linux 常用命令

  • 查看进程命令:
1
ps -aux|grep dotnet
  • 查看文件属性命令:
1
lsattr dotnet
  • 移除 文件 i 属性 命令:
1
chattr -i dotnet
  • 设置文件最高权限:
1
chmod -R 777 dotnet
  • 删除文件或文件夹(谨慎操作,操作不可逆):
1
rm -rf dotnet
  • 查看端口占用:
1
lsof -i:21021

nginx 配置如下

  • 查看 nginx 配置路径
1
nginx -t
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
user root; # linux 配置 user root;
worker_processes 4;
#error_log /var/log/nginx/error.log;
error_log off;
pid /run/nginx.pid; # linux 配置路径, Windows 配置 pid logs/nginx.pid
events {
worker_connections 65535;
}
http {
upstream demo_api{
ip_hash;
server localhost:21021;
}
map $http_upgrade $connection_upgrade {
default upgrade;
'' close;
}
server {
listen 8001;
server_name localhost;
proxy_hide_header X-Frame-Options;

location /demo_api/ {
proxy_pass http://demo_api/;

proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;

charset utf-8;
proxy_http_version 1.1;
proxy_set_header Upgrade $http_upgrade;
proxy_set_header Connection $connection_upgrade;
}
}
}
1
2
3
4
5
6
// 设置开机启动
systemctl enable nginx.service
// 启动
systemctl start nginx.service
// 停止
systemctl stop nginx.service

linux zip 解压

zip 压缩

  • 将当前文件和文件夹内容压缩,myfile.zip文件。-r表示递归压缩子目录下所有文件.
1
zip -r myfile.zip ./myfile

unzip 解压

  • myfile.zip文件解压到./root/myfile/文件夹下
1
unzip -O CP936 index.zip -d ./root/myfile/

指定中文编码-O CP936