我使用NetCore 2.0
开发了一个控制台应用程序,如果我执行:dotnet name.dll
,这在我的linux发行版上运行得非常好但是我找不到任何解释如何运行这个控制台app的教程线上。
我正在寻找一种允许我24小时运行软件的解决方案,因为我的应用程序需要将数据存储到mysql数据库中。
我看到不同的网站提供了ASP.NET
廉价托管,但我不知道应该购买哪种服务来实现类似的东西,有人可以帮助我吗?
感谢。
答案 0 :(得分:1)
要部署应用程序,您需要运行它,并通过设置反向代理将HTTP流量重定向到Kestrel Web服务器。
Windows和IIS
首先,通过将此配置添加到您的Program类(应该已经存在),确保您的应用程序正在使用Kestrel Web服务器运行:
<强> Program.cs的强>
public class Program
{
public static void Main(string[] args)
{
CreateWebHostBuilder(args).Build().Run();
}
public static IWebHostBuilder CreateWebHostBuilder(string[] args) =>
WebHost.CreateDefaultBuilder(args)
.UseStartup<Startup>();
}
}
以上配置将为您设置反向代理和自动运行Kestrel服务器。
有关详情,请查看Host ASP.NET Core on Windows with IIS和ASP.NET Core Web Host。
Linux和Nginx或Apache
您需要手动配置反向代理,以将流量重定向到正在运行的Kestrel服务器。如果您想自动启动服务器,则需要配置服务:
如果您使用的是CentOS(或任何基于RedHat的发行版),以下是一些说明:
创建服务配置文件:
sudo nano /etc/systemd/system/kestrel-name.service
使用以下内容编辑文件:
[Unit]
Description=My awesome .NET Core Website
[Service]
WorkingDirectory=/var/aspnetcore/your_website
ExecStart=/usr/local/bin/dotnet /var/aspnetcore/your_website/name.dll
Restart=always
# Restart service after 10 seconds if dotnet service crashes
RestartSec=10
SyslogIdentifier=dotnet-example
# Change this to match the user running your Web server
User=apache
Environment=ASPNETCORE_ENVIRONMENT=Production
[Install]
WantedBy=multi-user.target
保存并关闭文件,运行以下命令安装并启动服务:
systemctl enable kestrel-name.service
systemctl start kestrel-name.service
如果您使用的是基于debian的发行版,例如ubuntu:
在/ etc / init /
中为您的服务创建配置文件sudo nano /etc/init/kestrel-name.conf
将以下内容添加到配置文件中:
# My awesome .NET Core Website service configuration
start on filesystem
exec /usr/local/bin/dotnet /var/aspnetcore/your_website/name.dll
保存文件并运行以下命令以安装和启动服务:
sudo ln -s /etc/init/kestrel-name.conf /etc/init.d/my_website_name
sudo service my_website_name start
以下链接说明了如何配置反向代理: