ASP.NET 核心 RC2 作为 linux 守护进程
ASP.NET Core RC2 as linux deamon
我需要有关托管网络核心控制台或 asp.net 应用程序作为 linux 守护程序的信息。 Microsoft.Hosting.WindowsService 已经支持将应用程序托管为 Windows 服务,但我需要类似的 linux 守护进程。
我运行正在使用 RHEL,因此选择编写我自己的 systemd 单元文件。这是我与 PostgreSQL 结合使用的一个示例(因此是环境变量)。出于显而易见的原因,我删除了敏感信息。
[Unit]
Description=My Sample Application
Documentation=
Wants=network.target
After=network.target
[Service]
User=dotnetuser
Group=dotnetuser
Nice=5
KillMode=control-group
SuccessExitStatus=0 1
Environment=MY_CONNSTRING=Server=localhost;Username=myUser;Password=myPass;Database=myDatabase
NoNewPrivileges=true
PrivateTmp=true
InaccessibleDirectories=/sys /srv -/opt /media -/lost+found
ReadWriteDirectories=/var/www/myapp
WorkingDirectory=/var/www/myapp
ExecStart=/opt/dotnet/dotnet run
[Install]
WantedBy=multi-user.target
该文件位于 /etc/systemd/system
目录中,并根据您喜欢的名称为服务命名,并在其后加上“.service”。例如,完整路径可能是 /etc/systemd/system/aspnet-example.service
.
然后您可以使用 systemctl start aspnet-example
和 systemctl stop aspnet-example
启动和停止服务。
将服务设置为开机启动:systemctl enable aspnet-example
配置文件中主要需要指出的是:
用户和组不应是 root。我建议创建一个新用户,您的应用程序 运行.
KillMode=control-group 已设置,以便将 SIGTERM 发送到服务为 运行.
的所有 dotnet 进程
ReadWriteDirectory 和 WorkingDirectory 指向您的 Web 应用程序的根目录。我以 /var/www/myapp
为例。
ExecStart 必须是 dotnet 二进制文件的绝对路径。 Systemd 不支持相对路径。
编辑:我忘记提及的一件事是,我通常 运行 nginx 作为我的应用程序前面的反向代理。我包含了一个 link,其中包含有关发布到 Linux 生产服务器的更多信息。
https://docs.asp.net/en/latest/publishing/linuxproduction.html
我需要有关托管网络核心控制台或 asp.net 应用程序作为 linux 守护程序的信息。 Microsoft.Hosting.WindowsService 已经支持将应用程序托管为 Windows 服务,但我需要类似的 linux 守护进程。
我运行正在使用 RHEL,因此选择编写我自己的 systemd 单元文件。这是我与 PostgreSQL 结合使用的一个示例(因此是环境变量)。出于显而易见的原因,我删除了敏感信息。
[Unit]
Description=My Sample Application
Documentation=
Wants=network.target
After=network.target
[Service]
User=dotnetuser
Group=dotnetuser
Nice=5
KillMode=control-group
SuccessExitStatus=0 1
Environment=MY_CONNSTRING=Server=localhost;Username=myUser;Password=myPass;Database=myDatabase
NoNewPrivileges=true
PrivateTmp=true
InaccessibleDirectories=/sys /srv -/opt /media -/lost+found
ReadWriteDirectories=/var/www/myapp
WorkingDirectory=/var/www/myapp
ExecStart=/opt/dotnet/dotnet run
[Install]
WantedBy=multi-user.target
该文件位于 /etc/systemd/system
目录中,并根据您喜欢的名称为服务命名,并在其后加上“.service”。例如,完整路径可能是 /etc/systemd/system/aspnet-example.service
.
然后您可以使用 systemctl start aspnet-example
和 systemctl stop aspnet-example
启动和停止服务。
将服务设置为开机启动:systemctl enable aspnet-example
配置文件中主要需要指出的是:
用户和组不应是 root。我建议创建一个新用户,您的应用程序 运行.
KillMode=control-group 已设置,以便将 SIGTERM 发送到服务为 运行.
的所有 dotnet 进程
ReadWriteDirectory 和 WorkingDirectory 指向您的 Web 应用程序的根目录。我以
/var/www/myapp
为例。ExecStart 必须是 dotnet 二进制文件的绝对路径。 Systemd 不支持相对路径。
编辑:我忘记提及的一件事是,我通常 运行 nginx 作为我的应用程序前面的反向代理。我包含了一个 link,其中包含有关发布到 Linux 生产服务器的更多信息。
https://docs.asp.net/en/latest/publishing/linuxproduction.html