.NET CoreのアプリをSystemd化

優

.Net

弊社技術顧問増田智明著  ASP.NET MVCプログラミング入門(Amazon)

今回はローカルで作成した.NET Coreで作ったアプリをサーバで動かす手順の御紹介です!今回は環境まで構築します。お手本として弊社技術顧問の増田氏の本を参考にしております。

環境

  • CentOS7

.NET Core SDKのインストール

# sudo rpm -Uvh https://packages.microsoft.com/config/rhel/7/packages-microsoft-prod.rpm


Retrieving https://packages.microsoft.com/config/rhel/7/packages-microsoft-prod.rpm
warning: /var/tmp/rpm-tmp.zFvHhj: Header V4 RSA/SHA256 Signature, key ID be1229cf: NOKEY
Preparing...                          ################################# [100%]
Updating / installing...
   1:packages-microsoft-prod-1.0-1.el7################################# [100%]
# yum update
# yum install dotnet-sdk-2.1
# yum install libunwind libicu

環境情報の確認

# dotnet --version
2.1.401
# dotnet --info output:


.NET Core SDK (reflecting any global.json):
 Version:   2.1.401
 Commit:    91b1c13032

Runtime Environment:
 OS Name:     centos
 OS Version:  7
 OS Platform: Linux
 RID:         centos.7-x64
 Base Path:   /usr/share/dotnet/sdk/2.1.401/

Host (useful for support):
  Version: 2.1.3
  Commit:  124038c13e

.NET Core SDKs installed:
  2.1.401 [/usr/share/dotnet/sdk]

.NET Core runtimes installed:
  Microsoft.AspNetCore.All 2.1.3 [/usr/share/dotnet/shared/Microsoft.AspNetCore.All]
  Microsoft.AspNetCore.App 2.1.3 [/usr/share/dotnet/shared/Microsoft.AspNetCore.App]
  Microsoft.NETCore.App 2.1.3 [/usr/share/dotnet/shared/Microsoft.NETCore.App]

To install additional .NET Core runtimes or SDKs:
  https://aka.ms/dotnet-download

アプリをサーバに持っていって下さいね。

展開しましょう。

# unzip app-123hoge.zip
# cd /root/app-123hoge/Cool.Server
# dotnet publish -c Release

ディレクトリを作成

# mkdir -p /var/netcoreapp/Cool.Server

ファイルをコピーします

# cp -R /root/app-123hoge/Cool.Server/bin/Release/netcoreapp2.0/publish/* /var/netcoreapp/Cool.Server/

権限設定

# useradd -s /sbin/nologin dotnetuser
# chown -R dotnetuser /var/netcoreapp/

任意のユーザにして下さいね!

Systemd化しよう

# vi /etc/systemd/system/Cool.Server.service


[Unit]
Description=.NET Core Cool.Server
DefaultDependencies=no

Wants=network.target
After=network.target

[Service]
Type=oneshot
RemainAfterExit=no
ExecStart=/usr/bin/dotnet Cool.Server.dll ←プロジェクトのdll名を記述して下さいね!
SyslogIdentifier=Cool.Server
WorkingDirectory=/var/netcoreapp/Cool.Server ←プロジェクトのパスを記述して下さいね!
User=dotnetuser
Group=dotnetuser
Environment=ASPNETCORE_ENVIRONMENT=Production
KillMode=process

[Install]
WantedBy = multi-user.target
# systemctl daemon-reload
# systemctl enable usb-blocker-serverd

サーバの再起動をしよう!

# reboot now

サーバ再起動後にちゃんとサービスが立ち上がってればおっけ~。

お疲れ様です。

最新情報をチェックしよう!
>システム構築・保守に特化した会社です。

システム構築・保守に特化した会社です。

システムの構築・保守運用「システムガーディアン」 社内システム担当が欲しいが、専属で雇うほどの仕事量はない。 必要な時に必要なだけ頼りたいというお悩みを持つ企業様へ専門知識を持って対応を行っております。 サーバから各種システムまで自社・他社で構築されたシステムに対してサポートを行っております。

CTR IMG