这两天抽出了点时间写了一个.NET5 Web API及部署到Centos7.5 上,是为了我验证Kestrel在IIS和Centos 7.5 上的性能差异,从而为自己下一个项目打下基础层代码。这篇内容中我重点讲一下,.NET5 部署到Centos7.5 上的基本方式和步骤:
开始前提是有一台Centos 7..5服务器
一. 在Centos 7.5 上安装dotnet运行环境 可以查看微软官方教程: https://docs.microsoft.com/zh-cn/dotnet/core/install/linux-centos
运行以下命令,安装相应的sdk
1.sudo rpm -Uvh https://packages.microsoft.com/config/centos/7/packages-microsoft-prod.rpm 2.sudo yum install dotnet-sdk-5.0 3.sudo yum install dotnet-runtime-5.0
上面三个安装完成后,可以通过:dotnet --info 查看是否安装成功,出现下面结果说明安装成功完成:
二. 编译打包发布相关Net5 WebAPI的应用程序 三. 发布的NET5 WebAPI 应用程序更新到Centos 自己创建的文件夹中 。 我这里创建的为:var/www/dotnetcd /var/www/dotnet,然后运行 dotnet xxxx.dll
如果有误,你先在你本地window下dotnet xxx.dll看看有没有错误,一般在你本地上没问题,在服务器也是没问题的。
现在外网还不能访问你的5000端口的,这个dotnet默认只监听本地的5000端口.
请注意,现在外网还不能访问你的5000端口的,为什么?
(1) 看我上面的listening on http://localhost:5000,我这个dotnet默认只监听本地的5000端口,所以外网无法访问,解决方法就是在命令后面加上参数urls
dotnet xxxx.dll --urls http://*:5000
(2) Centos的防火墙默认是开启的,所以在防火墙里添加个端口
firewall-cmd --zone=public --add-port=5000/tcp --permanent // permanent参数是永远存在,不然的话,重启后就没有了 firewall-cmd --reload // 重启防火墙 ,添加端口后记得执行此命令
一般来说,现在就你可以通过内网ip加5000的端口访问你的网站了。
四. 到了这一步基本上你的程序已经正常在Centos 上跑起来了, 只是说现在Shell 不能关闭,已关闭应用程序也就跟着停了。 还有到了这一步各自根据自己的部署的方式添加使用nginx 让外部访问不通过实际端口来访问。通过nginx 来做代理转发。nginx 的配置过程这里我就不说了,都是一些程序部署的基本常识哈。我这里直接设置好,去掉端口直接访问下过如下: 五.centos7.5 开机自启NET5项目, systemd 做进程管理(也可以用 supervisor)(1) 创建自启动文件。 我这里创建一个net5.service
vi /etc/systemd/system/net5.service
[Unit] Description=net5.service [Service] WorkingDirectory=/var/www/dotnet ExecStart=/usr/bin/dotnet /var/www/dotnet/TenlanesCoreServices.dll --urls http://*:5000 Restart=always RestartSec=10 KillSignal=SIGINT SyslogIdentifier=AspnetCore User=root Environment=ASPNETCORE_ENVIRONMENT=Production Environment=DOTNET_PRINT_TELEMETRY_MESSAGE=false [Install] WantedBy=multi-user.target
(2) 使自启动生效
systemctl enable xxx.service
(3)立即启动服务
systemctl start xxx.service
(4) 查看服务状态
systemctl status xxx.service
出现上面结果,说明已经成功。现在可以关闭shell 不用担心应用服务会关闭,均可以正常访问
总结: 部署完成之后我用相同的代码在IIS上部署通过访问对比QPS 同一个接口,是IIS上的4倍。 当然这个程序可能还待优化,微软官方给出的理论值为搞23倍目前还不知道他们怎么弄。今天就先简单的记录到这里希望对看到人有所帮助



