こんにちは、情報システム部の高野です。
以前、下記の記事を書きまして今度は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」を付けないとダメです。
まとめ
RHELのASP.NET Core環境の作り方を説明しました。
CentOSとは、微妙に違う部分があるので注意が必要です。
弊社ではエンジニアを募集しています。
興味がある方は下記からエントリお願いします。
athome-inc.jp
*1:いつもこのパターンですいません。