如何在CentOS 7上部署.NET Core Web应用程序

.NET Core是由Microsoft和不断增长的.NET社区维护的经过重新设计的开放源代码跨平台开发框架。借助.NET Core,开发人员可以轻松地在各种平台上构建现代的高性能应用程序。

在本文中,我将向您展示如何在CentOS 7服务器实例上安装.NET Core,然后部署完整功能的.NET Core Web应用程序。

先决条件

将.NET产品Feed添加到系统中

作为一个跨平台开发框架,.NET Core为各种操作系统提供了预编译的二进制文件。在CentOS 7上,您可以通过以sudo用户身份运行以下命令来设置经过正式签名的.NET YUM存储库:

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'

使用YUM安装最新的.NET SDK

放置.NET YUM存储库后,在计算机上安装最新的.NET SDK,包括.NET Core和其他依赖项:

sudo yum update -y
sudo yum install libunwind libicu -y
sudo yum install dotnet-sdk-2.1.4 -y

为了确认结果,您可以创建并运行“ Hello World”演示.NET Core应用程序:

cd
dotnet new console -o helloworldApp
cd helloworldApp
dotnet run

dotnet new console -o helloworldApp命令将helloworldApp在您的主目录中创建一个目录,然后使用该console模板在新创建的目录中生成应用程序文件。

执行dotnet run命令后,您将Hello World!在控制台中看到该消息。

创建一个.NET Core Web应用

现在,创建并运行类型为.NET Core的应用程序razor。请记住,“剃刀页面”是.NET Core MVC的新应用程序模板,专门用于面向页面的方案:

cd
dotnet new razor -o myfirstwebapp
cd myfirstwebapp
dotnet run

通过执行dotnet run上面的命令,您将启动一个.NET Core Web应用程序,侦听以下内容:http://localhost:5000

如果您要确认该Web应用程序已启动并正在运行,尽管它位于没有GUI的服务器实例上,您仍然可以打开新的终端控制台并输入curl http://localhost:5000以查看Web应用程序主页的源代码。

之后,您可以按CTRL+ C关闭.NET Core Web应用程序。

要实现您的Web应用,您需要在app目录中编辑文件。您可以在.NET官方文档页面中了解更多详细信息。

完成所有开发任务后,可以使用以下命令发布Web应用程序:

cd ~/myfirstwebapp
dotnet publish

您可以在~/myfirstwebapp/bin/Debug/netcoreapp2.0目录中找到已发布的Web应用程序。

(可选):设置主管,以使您的.NET Core Web应用程序保持在线状态

发生进程崩溃。为了使您的Web应用程序保持在线状态,最好使用进程管理工具(例如Supervisor)来监视并重新启动崩溃的Web应用程序进程。

在CentOS 7上,您可以使用YUM安装Supervisor:

sudo yum install supervisor -y

接下来,您需要为您的Web应用程序设置专用的Supervisor配置文件:

cd /etc/supervisord.d
sudo vi myfirstwebapp.conf

填充文件:

[program:myfirstwebapp]
command=dotnet myfirstwebapp.dll
directory=/home/sudouser/myfirstwebapp/bin/Debug/netcoreapp2.0/
environment=ASPNETCORE__ENVIRONMENT=Production
user=root
stopsignal=INT
autostart=true
autorestart=true
startsecs=1
stderr_logfile=/var/log/myfirstwebapp.err.log
stdout_logfile=/var/log/myfirstwebapp.out.log

保存并退出:

:wq!

接下来,您需要修改默认supervisord配置文件以包含我们创建的配置文件:

sudo cp /etc/supervisord.conf /etc/supervisord.conf.bak
sudo vi /etc/supervisord.conf

找到最后一行:

files = supervisord.d/*.ini

代替它:

files = supervisord.d/*.conf

保存并退出:

:wq!

启动Supervisor,并将其设置为在系统启动时自动启动:

sudo systemctl start supervisord.service
sudo systemctl enable supervisord.service

加载新的Supervisor设置:

sudo supervisorctl reread
sudo supervisorctl update

现在,您可以使用以下命令显示应用程序的状态:

sudo supervisorctl status

输出将如下所示:

myfirstwebapp                    RUNNING   pid 3925, uptime 0:08:45

接下来,您可以尝试通过指定pid终止应用程序的进程3925

sudo kill -s 9 3925

等待一段时间,然后再次检查状态:

sudo supervisorctl status

这次,输出将指示该应用程序确实崩溃并自动启动:

myfirstwebapp                    RUNNING   pid 3925, uptime 0:00:06

(可选):安装Nginx作为反向代理

为了方便访问者访问,您可以将Nginx安装为反向代理,以将Web流量传递到port 5000

使用YUM安装Nginx:

sudo yum install nginx -y

如下编辑默认的Nginx配置文件:

sudo cp /etc/nginx/nginx.conf /etc/nginx/nginx.conf.bak
sudo vi /etc/nginx/nginx.conf

在细分中找到以下http {}细分:

location / {
}

在大括号之间插入六行反向代理设置,如下所示:

location / {
proxy_pass http://127.0.0.1:5000;
proxy_redirect off;
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header X-Forwarded-Proto $scheme;
}

保存并退出:

:wq!

启动Nginx服务,然后将其设置为在系统启动时启动:

sudo systemctl start nginx.service
sudo systemctl enable nginx.service

设置防火墙规则

之前,游客可以在端口访问.NET核心的Web应用程序80443,你需要修改防火墙规则,如下图所示:

sudo firewall-cmd --zone=public --permanent --add-service=http
sudo firewall-cmd --zone=public --permanent --add-service=https
sudo firewall-cmd --reload

这样就完成了应用程序的设置。现在您可以在上浏览.NET Core Web应用程序http://203.0.113.1

留下評論

在Arch Linux上使用Makepkg

在Arch Linux上使用Makepkg

在Arch Linux上使用Makepkg可以避免系统污染,确保仅安装必要的依赖关系。

如何在Ubuntu 16.04上安装OpenSIPS控制面板

如何在Ubuntu 16.04上安装OpenSIPS控制面板

快速学习如何在Ubuntu 16.04上安装OpenSIPS控制面板,为VoIP提供商提供支持的功能。

在Fedora 28上安装Akaunting

在Fedora 28上安装Akaunting

学习如何在Fedora 28上安装Akaunting,一款适合小型企业和自由职业者的开源会计软件。

如何在CentOS 7上安装Mailtrain新闻通讯应用程序

如何在CentOS 7上安装Mailtrain新闻通讯应用程序

使用其他系统?Mailtrain是一个基于Node.js和MySQL / MariaDB构建的开源自托管新闻通讯应用程序。

诊断Minecraft服务器延迟和低TPS

诊断Minecraft服务器延迟和低TPS

了解導致Minecraft延遲的原因和解決方案,包括優化伺服器性能和減少滯後的步驟。

AI 能否應對越來越多的勒索軟件攻擊?

AI 能否應對越來越多的勒索軟件攻擊?

勒索軟件攻擊呈上升趨勢,但人工智能能否幫助應對最新的計算機病毒?AI 是答案嗎?在這裡閱讀知道是 AI 布恩還是禍根

ReactOS:這是 Windows 的未來嗎?

ReactOS:這是 Windows 的未來嗎?

ReactOS,一個開源和免費的操作系統,這裡有最新版本。它能否滿足現代 Windows 用戶的需求並打倒微軟?讓我們更多地了解這種老式但更新的操作系統體驗。

通過 WhatsApp 桌面應用程序 24*7 保持聯繫

通過 WhatsApp 桌面應用程序 24*7 保持聯繫

Whatsapp 終於為 Mac 和 Windows 用戶推出了桌面應用程序。現在您可以輕鬆地從 Windows 或 Mac 訪問 Whatsapp。適用於 Windows 8+ 和 Mac OS 10.9+

人工智能如何將流程自動化提升到新的水平?

人工智能如何將流程自動化提升到新的水平?

閱讀本文以了解人工智能如何在小型公司中變得流行,以及它如何增加使它們成長並為競爭對手提供優勢的可能性。

macOS Catalina 10.15.4 補充更新引發的問題多於解決

macOS Catalina 10.15.4 補充更新引發的問題多於解決

最近,Apple 發布了 macOS Catalina 10.15.4 補充更新以修復問題,但似乎該更新引起了更多問題,導致 mac 機器變磚。閱讀這篇文章以了解更多信息