.NET Code WebApi CentOS部署
准备
Visual Studio Code
CentOS 7
FTP
创建webapi项目
>dotnet new webapi
项目简单模拟通过POST调用接口,读取配置文件发送消息,返回发送结果
创建这几个文件:
ServerConfig.cs//用于读取配置文件
Modes>Message.cs//模拟发消息的实体类
Controllers>MessageControllers.cs//控制器
ServerConfig.cs
Modes>Message.cs
Controllers>MessageControllers.cs//控制器
这里顺便提一下web api的知识,有人经常遇到[FromBody]Message message,接收到实体的时候得到的是null,也没有抛异常,这个问题通常是传参的时候,有字段没法反序列化的原因,比如一个int类型的属性ID,传参的时候比如是“123456789”。
代码完成我们来测试一下:
可以看到,运行正常,为了在外网能够访问,我们修改一下默认端口比如5354
测试的代码就绪,那么开始发布。
webapi> dotnet publish -c Release
这些就是我们将要发布的文件。
登录Linux
执行命令,可以登录微软官网查看。
sudo rpm -Uvh https://packages.microsoft.com/config/rhel/7/packages-microsoft-prod.rpm
sudo yum update
sudo yum install dotnet-sdk-2.1
执行完成后,新建目录比如:
/var/wwwroot/dotnet/
通过FTP把刚才发布的文件上传到该目录下
可以看到可以正常运行了。
正常运行,但是过程并没有这么顺利,因为sdk版本不一致,项目的是2.1.500,所以安装一下2.1.200.
执行这个命令的时候
sudo yum install dotnet-sdk-2.1
安装的版本是2.1.500。
安装一下版本:
安装完后,再运行
删除以下目录。
现在再运行即可正常。
控制台退出后,那么进程也结束了,把它做成服务。
配置文件webapi.service
[Unit] Description=Example .NET Web API App running on Ubuntu [Service]
#涉及到磁盘写操作,改行必须配置 WorkingDirectory=/var/wwwroot/dotnet
#注意这行,/usr/bin/dotnet必须加上 ExecStart=/usr/bin/dotnet /var/wwwroot/dotnet/webapi.dll Restart=always RestartSec=10 KillSignal=SIGINT User=root Environment=ASPNETCORE_ENVIRONMENT=Production Environment=DOTNET_PRINT_TELEMETRY_MESSAGE=false [Install] WantedBy=multi-user.target
至此完成。