コンテンツにスキップ

LinuxサーバーにASP.NET Coreアプリをデプロイする

現在、XServerにWordPressブログを作成している

本記事では、サブドメインを切ってASP.NET Core Webアプリケーションをデプロイする

記事中で取り扱うトピック - Linux - CentOS - .NET Core

サブドメインを作成

まずXServerの管理画面にログインして、サーバーパネルからサブドメイン設定を開く

server_panel

[サブドメイン設定追加]でサブドメインを入力し、設定する(※反映まで少し時間がかかる)

SSH接続でログイン

次にサブドメインのフォルダにSSH接続でログインする

事前にSSH設定を行う
サーバーID、公開鍵認証用鍵ペアの生成に使用したパスフレーズが必要となる為、控えておく

ssh_setting

ログインにはTera Termを使用する(インストールはプロジェクトページから)

Tera Termの接続方法は、公式ドキュメントが詳しいので割愛

teraterm_new_connection

ログインに成功すると、以下のようにターミナル(黒い画面)が表示される

Last login: Fri May 17 09:46:32 2024 from as001180.dynamic.ppp.asahi-net.or.jp
[xs77326@sv14626 ~]$

シェルを確認

$ echo $SHELL
/bin/bash

cat /etc/os-releaseコマンドで、Linuxのバージョン情報を確認

$ cat /etc/os-release

NAME="CentOS Linux"
VERSION="7 (Core)"
ID="centos"
ID_LIKE="rhel fedora"
VERSION_ID="7"
PRETTY_NAME="CentOS Linux 7 (Core)"
ANSI_COLOR="0;31"
CPE_NAME="cpe:/o:centos:centos:7"
HOME_URL="https://www.centos.org/"
BUG_REPORT_URL="https://bugs.centos.org/"

CENTOS_MANTISBT_PROJECT="CentOS-7"
CENTOS_MANTISBT_PROJECT_VERSION="7"
REDHAT_SUPPORT_PRODUCT="centos"
REDHAT_SUPPORT_PRODUCT_VERSION="7"

CentOSのバージョン7という事がわかったので、Microsoftの公式ドキュメントを参考に.NETをインストールする
ただ、以下のドキュメントの方法はsu doが使えるLinuxのみ参考にできる
https://learn.microsoft.com/ja-jp/dotnet/core/install/linux-centos

XServerは共用サーバーなので、su doコマンドを実行しても「許可がありません」と表示される
su -でスーパーユーザーになれない(パスワードが分からない)ため、権限の問題でこの方法は使えない

dotnet-install スクリプト

dotnet-installであれば、XServerでもインストール可能

インストール用のディレクトリ作成

$ mkdir -p /opt/dotnet && cd /opt/dotnet

wegetを使用してdotnet-install.shダウンロード

$ wget https://dot.net/v1/dotnet-install.sh -O dotnet-install.sh

dotnet-install.shスクリプトに実行権限を付与

$ chmod +x ./dotnet-install.sh

最新のLTS SDKをインストールする

$ ./dotnet-install.sh --version latest

dotnetコマンドを環境変数に設定する

$ export DOTNET_ROOT=$HOME/.dotnet

$ export PATH=$PATH:$DOTNET_ROOT:$DOTNET_ROOT/tools

この段階でdotnetを実行するとエラーとなる

$ dotnet
dotnet: /lib64/libstdc++.so.6: version `GLIBCXX_3.4.20' not found (required by dotnet)
dotnet: /lib64/libstdc++.so.6: version `GLIBCXX_3.4.21' not found (required by dotnet)

これは、dotnetランタイムが必要としているライブラリGlibcのバージョンが古いことが原因で発生している
Glibcは、C言語の標準ライブラリ
参考:Glibc

現在のlibcのバージョンを確認

$ ldd --version
ldd (GNU libc) 2.17

バージョン確認は、RPMパッケージマネージャーを使っても調べることができる

$ rpm -q glibc
glibc-2.17-326.el7_9.x86_64

Glibcのアップデート

作業用ディレクトリ作成

$ mkdir -p tmp/glibc

※工事中

$ cd tmp/glibc
$ wget --no-check-certificate https://ftp.gnu.org/gnu/glibc/glibc-3.4.21.tar.gz

補足

Linuxのターミナルでは、Ctr + cでのコピーやCtr + vでのペーストが使えない - コピーには、Ctrl + Insertを使用 - ペーストは、Shift + Insertを使用

Reference