athome-developer’s blog

不動産情報サービスのアットホームの開発者が発信するブログ

RHEL7.4でASP.NET Coreを動かす

こんにちは、情報システム部の高野です。
以前、下記の記事を書きまして今度はRHELだって環境構築したら
またもやハマったので手順を書いておきます。*1
dblog.athome.co.jp

環境

Red Hat Enterprise Linux Server release 7.4 (Maipo)
.Net Core2.0.0 (rhel.7-x64)

.Net Coreのインストール

ここを見れば分かりますが、一応

> sudo subscription-manager repos --enable=rhel-7-server-dotnet-rpms
> sudo yum install scl-utils
> sudo yum install rh-dotnet20
> scl enable rh-dotnet20 bash

※上記は、サーバ版のRHELのコマンドになります。ワークステーション版などはコマンドが違うので注意が必要です。

確認してみる。下記のように表示されればOKです。

> dotnet --info
.NET Command Line Tools (2.0.0)

Product Information:
 Version:            2.0.0
 Commit SHA-1 hash:  cdcd1928c9

Runtime Environment:
 OS Name:     rhel
 OS Version:  7
 OS Platform: Linux
 RID:         rhel.7-x64
 Base Path:   /opt/rh/rh-dotnet20/root/usr/lib64/dotnet/sdk/2.0.0/

Microsoft .NET Core Shared Framework Host

  Version  : 2.0.0
  Build    : N/A


注意が必要なのが、下記のコマンドです。

> scl enable rh-dotnet20 bash

これで「dotnet」コマンドがどこでも起動できるようになるのですが
ターミナルを起動するたびに入力が必要になります。

永続的にコマンドを使いたければ
/etc/profile.d/enabledotnet20.shを作成します。
中身は下記

source scl_source enable rh-dotnet20


ターミナルを再起動せずに利用したい場合は、下記コマンドを実行します。

source /etc/profile.d/enabledotnet20.sh

Nginxのインストール

Nginxのインストールと設定は、以前のCentOSの記事と同様です。

Kestrelをバックグラウンドで実行する

CentOSとパスが違うので記載しておきます。

/etc/systemd/systemに○○.serviceというファイルを作成します。(○○は、なんでもいいです)

[Unit]
  Description=kestrel server
  After=syslog.target network.target
 
[Service]
  ExecStart=/opt/rh/rh-dotnet20/root/bin/dotnet /home/user/www/hoge/sample.dll #dotnetのパスが異なる
  WorkingDirectory=/home/user/www/hoge
  Restart=always
  RestartSec=10
  SyslogIdentifier=sampleapp
  User=user
  Environment=ASPNETCORE_ENVIRONMENT=Staging #サイト毎に環境を変えたい時などに使える
 
[Install]
WantedBy=multi-user.target


起動します。

> sudo systemctl start ○○.service


サーバー再起動時にKestrelも起動したい場合

> sudo systemctl enable ○○.service

デプロイする

dotnet publishコマンドでデプロイ用のモジュールを作成します。

dotnet publish -o /home/www/hoge/ -c Release -r rhel.7-x64

「-r」 オプションで「rhel.7-x64」を付けないとダメです。

まとめ

RHELASP.NET Core環境の作り方を説明しました。
CentOSとは、微妙に違う部分があるので注意が必要です。


弊社ではエンジニアを募集しています。
興味がある方は下記からエントリお願いします。
athome-inc.jp

*1:いつもこのパターンですいません。