在Linux部署.Net Core应用
做为一个C#开发者,一直都是基于.net framework框架进行开发,最大的缺点就是不能跨平台,只能局限于windows系统;自从2016年发布.net core1.0版本后,.net core就变成c#开发者未来的开发趋势,可以像java一样部署于各种操作系统中,今天就以web api为例,详细讲解如何将api应用部署到Linux服务器中。
# 打包一个api项目
1.以自己开发的一个会议系统的api为例;开发工具:VS2022
,.net core版本:5.0
;
.net core有两种打包方式:一种是使用命令行CLI打包,一种是使用视图操作;我们这里选择视图操作,右键web项目点击发布
2.选择发布目录
3.发布配置,部署模式选:框架依赖,目标运行时选:Linux-64,点击保存
部署模式参数说明
- 框架依赖:服务器需安装.net core运行时,打包后的文件体积比较小
- 独立:服务器无需安装.net core运行时,运行时和项目文件一起打包,打包后的文件体积大
4.保存配置,发布
# 上传打包文件到Linux服务器
在服务器新建目录,专门存放web api应用
mkdir -p /home/webapi/meeting
使用ftp工具将打包好的文件,上传到webapi/meeting
# 安装.net core运行环境
开发环境我们要安装.net core runtime和sdk,在服务器上部署只需要安装runtime就行了
yum install -y dotnet-runtime-5.0
运行命令查看是否安装成功,出现如下信息代表安装成功
# 运行.net core api
OK,通过如上操作,运行环境安装好了,项目也打包上传了;现在就只欠把api跑起来了。
进入api目录,找到*.Web.dll文件
1.直接在当前目录运行Ultra.Meeting.Web.dll
,指定端口为6001
出现如上界面表示运行成功。
2.api是跑起来了,但是还有个问题就是,当前会话如果关闭,api进程也会关闭;所以我们要把api应用创建为后台进程(服务)
进入后台进程池目录,创建.service文件
cd /etc/systemd/system
touch meetingapi.service
编辑meetingapi.service文件,保存
vim meetingapi.service
[Unit]
Description=Meeting Api By Asp.Net Core
[Service]
User=root
Group=root
WorkingDirectory=/home/webapi/meeting
ExecStart=/usr/bin/dotnet /home/webapi/meeting/Ultra.Meeting.Web.dll
Restart=always
RestartSec=5
SyslogIdentifier=netcore-api
Environment=ASPNETCORE_ENVIRONMENT=Production
[Install]
WantedBy=multi-user.target
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
参数说明
- WorkingDirectory 打包文件所在目录
- Environment 指定ASP.NET CORE的环境变量
- ExecStart 启动服务执行的命令,分为3部分,中间空格隔开
- 第一部分 dotnet对应的bin路径
- 第二部分 *.Web.dll的路径
- 第三部分 ASP.NET Core中Web主机服务监听的端口--urls
3.刷新后台进程,启动服务
systemctl daemon-reload
systemctl start meetingapi
systemctl status meetingapi
出现如下界面,说明后台服务创建并运行成功
# 配置Nginx访问swagger文档
上面我们已经成功部署.net core api服务,现在需要验证外网是否能访问api的swagger文档。我们通过Nginx将域名转发到6001端口,Nginx增加如下配置
vim /usr/local/webserver/nginx/conf/nginx.conf
server {
listen 443 ssl http2;
server_name m-api.luckyzp.top;
ssl_certificate cert/9809623_meeting.luckyzp.top.pem;
ssl_certificate_key cert/9809623_meeting.luckyzp.top.key;
ssl_session_timeout 5m;
ssl_ciphers HIGH:!aNULL:!MD5;
ssl_protocols TLSv1.1 TLSv1.2 TLSv1.3;
ssl_prefer_server_ciphers on;
location /doc/ {
rewrite ^/doc/$ /doc/swagger permanent;
proxy_intercept_errors on;
proxy_set_header Host m-api.luckyzp.top;
proxy_set_header X-Forwarded-Proto https; #$scheme
proxy_pass http://localhost:6001/;
}
}
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
重启Nginx,浏览器输入域名,可以看到swagger文档了
大功告成!以上就是在Linux部署.net core的全部教程