.NET Core发展速度很快,特别是2.0发布后,越来越多的项目开始使用。网上关于ASP.NET Core的文章也已经很多了,但是因为版本升级较快,有些已经过时。这篇文章将基于当前最新的.NET Core 2.0.5运行时,说明在CentOS中部署的详细过程。
要部署的是一个Web应用,提供生成Guid的服务,只有一个页面,每次访问都生成一个新的Guid。
Web服务器使用默认的Kestrel ,同时使用Nginx做反向代理(Nginx比Kestrel功能更加丰富更加专业)。
这里使用了阿里云虚拟机,因为.NET Core 2x不支持CentOS 6,所以操作系统选择了64位 CentOS7.4,关于.NET Core 2x支持的linux发行版见:https://docs.microsoft.com/zh-cn/dotnet/core/linux-prerequisites?tabs=netcore2x
1、创建ASP.NET Core Web应用
首先在Visual Studio 2017中创建一个ASP.NET Core Web应用程序,采用Razor页面技术(本质还是MVC技术)。
去掉没用的代码,只保留必要的Index.cshtml和_ViewImports.cshtml。
编写Index.cshtml代码:
@page @model IndexModel @Model.Message
编写Index.cshtml.cs代码:
public class IndexModel : PageModel { public string Message { get; set; } public void OnGet() { Message = Guid.NewGuid().ToString().ToLower(); } }
然后发布项目到某个本地目录,备用。
2、安装Nginx
为了省事,这里直接使用了一键安装包:lnmp,它提供的脚本会把nginx、mysql、php都安装好,虽然这个项目暂时用不上mysql和php。
具体安装流程见:https://lnmp.org/install.html
由于安装lnmp需要进行编译生成,如果机器性能不好可能需要较长时间。
安装成功后通过相关命令创建一个Web站点,比如这里是 guid.fireflysoft.net,此站点根目录在/home/wwwroot/guid.fireflysoft.net。
3、安装.NET Core SDK
因为默认的项目发布方式是便携发布,用于依赖框架的部署,并不会携带.NET Core的基础运行环境,需要在Linux系统中安装运行时。
首先将.NET产品包源添加到系统安装来源中:
sudo rpm --import https://packages.microsoft.com/keys/microsoft.asc sudo sh -c 'echo -e "[packages-microsoft-com-prod]\nname=packages-microsoft-com-prod \nbaseurl= https://packages.microsoft.com/yumrepos/microsoft-rhel7.3-prod\nenabled=1\ngpgcheck=1\ngpgkey=https://packages.microsoft.com/keys/microsoft.asc" > /etc/yum.repos.d/dotnetdev.repo'
然后安装.NET SDK
sudo yum update sudo yum install libunwind libicu sudo yum install dotnet-sdk-2.1.4
请注意查看安装结果,安装成功后执行 dotnet –info 应该可以显示.NET Core的相关信息:
.NET Command Line Tools (2.1.4) Product Information: Version: 2.1.4 Commit SHA-1 hash: 5e8add2190 Runtime Environment: OS Name: centos OS Version: 7 OS Platform: Linux RID: centos.7-x64 Base Path: /usr/share/dotnet/sdk/2.1.4/ Microsoft .NET Core Shared Framework Host Version : 2.0.5 Build : 17373eb129b3b05aa18ece963f8795d65ef8ea54
4、启动ASP.NET Core应用程序
将步骤1中生成的应用发布文件上传到Nginx新建的站点guid.fireflysoft.net目录下。
通过命令启动它:
/usr/bin/dotnet /home/wwwroot/guid.fireflysoft.net/GetGuidWeb.dll
这时候将为此应用分配一个默认的5000端口,如果防火墙开放了此端口,通过IP:5000应该可以访问此站点了。
5、监控应用状态
使用步骤4中的命令已经启动了应用,但是如果退出shell,则应用进程会自动关闭。这显然不是我们想要的,也不能应用于生产环境。
systemd可以创建服务用来启动和监视应用的状态,并自动启动被关闭的程序。
这里在目录/etc/systemd/system/下创建一个名为kestrel-guid-fireflysoft-net.service的服务,服务内容:
[Unit] Description=GUID.FIREFLYSOFT.NET DOTNETCORE APP [Service] WorkingDirectory=/home/wwwroot/guid.fireflysoft.net ExecStart=/usr/bin/dotnet /home/wwwroot/guid.fireflysoft.net/GetGuidWeb.dll Restart=always RestartSec=10 SyslogIdentifier=GUID-FIREFLYSOFT-NET User=www [Install] WantedBy=multi-user.target
相关配置请自行研究。
然后启用和启动该服务,并查看服务状态:
systemctl enable kestrel-guid-fireflysoft-net.service systemctl start kestrel-guid-fireflysoft-net.service systemctl status kestrel-guid-fireflysoft-net.service
如果出现如下字样,则表明服务启动成功:
Now listening on: http://localhost:5000 Application started. Press Ctrl+C to shut down.
6、配置反向代理
修改Nginx下站点guid.fireflysoft.net的配置文件:
server { listen 80; server_name guid.fireflysoft.net ; index index.html index.htm default.html default.htm; root /home/wwwroot/guid.fireflysoft.net; location ~ .*\.(gif|jpg|jpeg|png|bmp|swf)$ { expires 30d; } location ~ .*\.(js|css)?$ { expires 12h; } location ~ /.well-known { allow all; } location ~ /\. { deny all; } # https://developer.mozilla.org/en-US/docs/Web/HTTP/Headers/X-XSS-Protection add_header X-XSS-Protection 1; add_header X-Frame-Options DENY; add_header X-Content-Type-Options nosniff; location / { proxy_pass http://localhost:5000; proxy_http_version 1.1; proxy_set_header Upgrade $http_upgrade; proxy_set_header Connection keep-alive; proxy_set_header Host $http_host; proxy_cache_bypass $http_upgrade; } access_log off; }
最后的location / { … } 是反向代理的相关配置,将对此站点的访问转发到本地5000端口。
7、演示站点
现在通过 http://guid.fireflysoft.net 就可以访问ASP.NET Core应用了。页面上只有一个Guid值,十分清爽:
以后需要生成一个Guid时,记得直接访问此站点哦,还可以程序调用,简直太方便了。
发表评论
相关文章
国内AI资源汇总,AI聊天、AI绘画、AI写作、AI视频、AI设计、AI编程、AI音乐等,国内顺畅访问,无需科学上网。
扫码或点击进入:萤火AI大全
文章分类
最新评论