Centos7 システムでの .NET Core 2.0 + Nginx + Supervisor 環境の構築

Centos7 システムでの .NET Core 2.0 + Nginx + Supervisor 環境の構築

1. Linux .NET Core の紹介

Microsoft は常に自社のプラットフォームに対してのみ .NET サポートを提供してきました。つまり、Linux および macOS 上のこの「理論上の」クロスプラットフォーム フレームワークのサポートは、サードパーティ プロジェクト (Mono .NET など) によってのみ提供されることになります。

Microsoft が完全にオープン ソースの .NET Core をリリースするまでは。このオープン ソース プラットフォームは .NET Standard と互換性があり、Windows、Linux、MacOS で完全に一貫した API を提供します。この小さな .NET フレームワークは標準 .NET のサブセットにすぎませんが、すでに非常に強力です。

この小さなフレームワークにより、一方では、いくつかの機能的なアプリケーションを 3 つのプラットフォームで同時に実行できます (一部の機能的な Python スクリプトと同様)。他方では、サーバー オペレーターが Linux サーバーに ASP.NET サービス プログラムを展開することもできます (特に、Windows Server の実行が難しいサーバーの場合)。

公式ウェブサイト参照: https://www.microsoft.com/net/core#linuxcentos

2. Linux .NET Core 2.0環境を展開する前の準備

1. 環境の説明:

サーバーシステム: CentOS 7.2.1511

2. インストール前の準備(ファイアウォールをオフにする、selinuxをオフにする)

1) ファイアウォールをオフにします。

systemctl stop firewalld.service #ファイアウォールを停止する
systemctl enable firewalld.service #ファイアウォールの起動を無効にするfirewall-cmd --state #デフォルトのファイアウォールの状態を表示する(閉じているときはnotrunningと表示され、開いているときはrunningと表示される)

2) selinuxをオフにする

sed -i "s/SELINUX=enforcing/SELINUX=disabled/g" /etc/selinux/config

変更されたファイルを次のように確認します。

[root@localhost ~]# cat /etc/selinux/config 
 
# このファイルはシステム上の SELinux の状態を制御します。
# SELINUX= は次の 3 つの値のいずれかを取ることができます。
# enforcing - SELinux セキュリティ ポリシーが適用されます。
# permissive - SELinux は強制する代わりに警告を出力します。
# 無効 - SELinux ポリシーはロードされません。
SELINUX=無効
# SELINUXTYPE= は次の 3 つの値のいずれかを取ることができます。
# 対象 - 対象プロセスは保護され、
# minimum - 対象ポリシーの変更。選択されたプロセスのみが保護されます。 
# mls - マルチレベルセキュリティ保護。
SELINUXTYPE=ターゲット

3) CentOSを再起動する

リブート

3. Centosは.NET Core 2.0環境を展開する

1. DOTNET製品を追加する

.NET Core をインストールする前に、Microsoft 製品フィードに登録する必要があります。これは一度だけ実行する必要があります。まず、Microsoft 署名キーを登録し、次に Microsoft 製品フィードを追加します。

rpm --import https://packages.microsoft.com/keys/microsoft.asc                   
sh -c 'echo -e "[packages-microsoft-com-prod]nname=packages-microsoft-com-prod nbaseurl=https://packages.microsoft.com/yumrepos/microsoft-rhel7.3-prodnenabled=1ngpgcheck=1ngpgkey=https://packages.microsoft.com/keys/microsoft.asc" > /etc/yum.repos.d/dotnetdev.repo'

2. .NET Core SDKをインストールする

続行する前に、システムから .NET の以前のプレビュー バージョンを削除してください。

次のコマンドは、インストールする製品のリストを更新し、.NET Core に必要なコンポーネントをインストールしてから、.NET Core SDK をインストールします。

yumアップデート
yum インストール libunwind libicu -y
yum インストール dotnet-sdk-2.0.0 -y

3. dotnetが正常にインストールされているかどうかを確認し、バージョンを確認します。

ドットネット --info
ドットネット --version

4. .NET Core 2.0環境をテストする

1. ホームディレクトリにテスト環境を初期化し、「Hello World」コンテンツを出力します(テスト方法1、無視できます)

cd /ホーム
dotnet 新しいコンソール -o hwapp
cd ハップ
ドットネット実行

出力は次のように空になります。

[root@localhost hwapp]# dotnet 実行
「こんにちは世界」

2. テスト用に .net core インスタンス ページをアップロードします (テスト方法 2、推奨)

Centos .net core 2 環境のテストケース (/home ディレクトリまたはカスタム ディレクトリにアップロードします)

ダウンロードアドレス:

http://down.51cto.com/data/2334968

次のコマンドを実行します

cd /home/WebApplication1
dotnet restore //テスト方法1を使用した場合は、このコマンドを実行して現在の新しいWebサイトファイルを再読み込みする必要があります。dotnet run

実行後、次の図が表示されます。

IEからテストページにアクセスする

5. ASP.NET Coreアプリケーションを転送するためにnginxをインストールして構成する

1. Nginx環境をインストールする

[root@localhost ~]#curl -o nginx.rpm http://nginx.org/packages/centos/7/noarch/RPMS/nginx-release-centos-7-0.el7.ngx.noarch.rpm
[root@localhost ~]#rpm -ivh nginx.rpm
[root@localhost ~]#yum nginxをインストール -y

nginx を起動するには、「systemctl start nginx」と入力します。

[root@localhost ~]# systemctl nginxを起動します

nginx を起動するように設定するには、systemctl enable nginx と入力します (Linux はクラッシュまたは再起動時に自動的に nginx を実行するため、コマンドを入力するために Linux に接続する必要はありません)

[root@localhost ~]#systemctl nginxを有効にする
/etc/systemd/system/multi-user.target.wants/nginx.service から /usr/lib/systemd/system/nginx.service へのシンボリックリンクを作成しました。

2. IEからアクセスできるか確認する

[root@localhost nginx-1.8.1]# ps -ef|grep nginx
root 14626 1 0 08:47 ? 00:00:00 nginx: マスタープロセス nginx
nginx 14627 14626 0 08:47 ? 00:00:00 nginx: ワーカープロセス
ルート 14636 3269 0 08:49 pts/1 00:00:00 grep --color=auto nginx

nginxのよく使われる操作コマンド

systemctl start nginx.service #nginx サービスを起動します

systemctl enable nginx.service #自動起動を設定する

systemctl enable nginx.service #自動起動を停止する

systemctl status nginx.service #サービスの現在のステータスを表示します

systemctl restart nginx.service #サービスを再起動します

systemctl list-units –type=service #開始されているすべてのサービスを表示

4. ファイアウォールの設定(システムにファイアウォールがある場合は、ルールを記述する必要があります)

コマンド:firewall-cmd –zone=public –add-port=80/tcp –permanent (ポート80を開く)

コマンド: systemctl restart firewalld (設定をすぐに有効にするにはファイアウォールを再起動します)

5. ASP.NET Coreアプリケーションを転送するようにnginxを構成する

/etc/nginx/conf.d/default.conf ファイルを変更します。

ファイルの内容を

サーバー{
  聞く 80;
  位置 / {
    proxy_pass http://localhost:88;
    プロキシ_http_バージョン 1.1;
    proxy_set_header アップグレード $http_upgrade;
    proxy_set_header 接続キープアライブ;
    proxy_set_header ホスト $host;
    proxy_cache_bypass $http_upgrade;
  }
}

nignxをリロード

[root@localhost nginx]# nginx -s リロード

nginxの設定が完了しました

6. テスト用にdotnet runを開く

[root@localhost ~]# cd /home/WebApplication1/
[root@localhost WebApplication1]# dotnet run
/home/WebApplication1/Properties/launchSettings.json からの起動設定を使用しています...
ホスティング環境: 開発
コンテンツ ルート パス: /home/WebApplication1
現在視聴中: http://[::]:88
アプリケーションが起動しました。シャットダウンするには Ctrl+C を押してください。

IPポート80経由でアクセス

6. スーパーバイザーを構成する

問題は3つある

質問 1: ASP.NET Core アプリケーションはシェルで実行されます。シェルを閉じると、ASP.NET Core アプリケーションが閉じられ、アプリケーションにアクセスできなくなります。これは絶対に避けたい状況であり、運用環境ではこのような状況は許容されません。

質問 2: ASP.NET Core プロセスが予期せず終了した場合は、手動でシェルに接続して再起動する必要がありますが、この操作は十分なタイミングで実行されないことがよくあります。

質問 3: サーバーがダウンしたり、再起動が必要な場合でも、サーバーを起動するにはシェルに接続する必要があります。

この問題を解決するには、ASP.NET Core アプリケーションの状態を監視するプログラムが必要です。アプリケーションの実行が停止した場合は、直ちに再起動してください。ここでは、Python を使用して開発された Supervisor ツールを使用します。

1. スーパーバイザーをインストールする

[root@localhost /]# yum install python-setuptools -y
[root@localhost /]#easy_install スーパーバイザー

2. スーパーバイザーを構成する

[root@localhost /]#mkdir /etc/supervisor
[root@localhost /]#echo_supervisord_conf > /etc/supervisor/supervisord.conf

supervisord.confファイルを修正し、ファイルの末尾の設定を変更してください。

[root@localhost /]# vi /etc/supervisor/supervisord.conf

最後の 2 行を変更します。

;[含む]                          
;files = 相対/ディレクトリ/*.ini

変更する

[含む]
ファイル = conf.d/*.conf

ps: サービスが開始されている場合は、「supervisorctl reload」コマンドを使用して構成ファイルを変更し、有効にすることができます。

3. ASP.NET Coreアプリケーションガードを構成する

次の内容の WebApplication1.conf ファイルを作成します。

[root@localhost /]# vi WebApplication1.conf
[プログラム:WebApplication1]
command=dotnet WebApplication1.dll ; プログラムを実行するコマンドdirectory=/home/WebApplication1/ ; コマンドが実行されるディレクトリautorestart=true ; プログラムが予期せず終了した場合に自動的に再起動するかどうかstderr_logfile=/var/log/WebApplication1.err.log ; エラー ログ ファイルtdout_logfile=/var/log/WebApplication1.out.log ; 出力ログ ファイルenvironment=ASPNETCORE_ENVIRONMENT=Production ; プロセス環境変数user=root ; プロセス実行のユーザー IDstopsignal=INT

ファイルを「/etc/supervisor/conf.d/WebApplication1.conf」にコピーします。

[root@localhost /]#mkdir /etc/supervisor/conf.d
[root@localhost /]#cp WebApplication1.conf /etc/supervisor/conf.d/

supervisordを実行して動作するか確認する

[root@localhost /]#supervisord -c /etc/supervisor/supervisord.confsupervisord -c /etc/supervisor/supervisord.conf
[root@localhost /]# ps -ef | grep WebApplication1
ルート 29878 29685 0 09:57 ? 00:00:00 ドットネット WebApplication1.dll
ルート 29892 29363 0 09:57 pts/3 00:00:00 grep --color=auto WebApplication1

dotnet WebApplication1.dll プロセスが存在する場合、操作が成功したことを意味します。この時点で、ブラウザを使用してアクセスできます。

この時点で、ASP.NET Core アプリケーション ガードの構成は完了です。

スーパーバイザデーモンの共通操作

supervisord を起動する
設定が正しいことを確認したら、各ホストで次のコマンドを使用してスーパーバイザーサーバー supervisord を起動します。
監督された

監督を停止
supervisorctl シャットダウン

[設定ファイルを再読み込み]
スーパーバイザctlリロード

7. スーパーバイザーの起動を構成する

新しい「supervisord.service」ファイルを作成する

[root@localhost /]# vi supervisord.service
# systemd 用の dservice (CentOS 7.0+)
# ET-CS (https://github.com/ET-CS) による
[ユニット]
説明=スーパーバイザデーモン
[サービス]
タイプ=フォーク
ExecStart=/usr/bin/supervisord -c /etc/supervisor/supervisord.conf
ExecStop=/usr/bin/supervisorctl シャットダウン
ExecReload=/usr/bin/supervisorctl リロード
キルモード=プロセス
再起動=失敗時
再起動秒数=42秒
[インストール]
WantedBy=マルチユーザー.ターゲット

ファイルを次の場所にコピーします: "/usr/lib/systemd/system/supervisord.service"

[root@localhost /]# cp supervisord.service /usr/lib/systemd/system/

コマンドを実行: systemctl enable supervisord

[root@localhost /]# systemctl を有効にする supervisord
/etc/systemd/system/multi-user.target.wants/supervisord.service から /usr/lib/systemd/system/supervisord.service へのシンボリックリンクを作成しました。

コマンドを実行: systemctl is-enabled supervisord #起動時に起動されているかどうかを確認する

[root@localhost /]# systemctl is-enabled supervisord

システムを再起動して、正常にアクセスできるかどうかを確認します。

[root@localhost /]# 再起動

以上が Centos7 システムで .NET Core2.0+Nginx+Supervisor+Mysql 環境を構築する詳細な方法です。皆様のお役に立てれば幸いです。

以下もご興味があるかもしれません:
  • .Net Core3.0 WebApi プロジェクト フレームワークの構築: Log4j の代わりに Serilog を使用する
  • .Net Core サービス ガバナンス Consul がクラスターを構築
  • Jenkins をベースにした .NET Core 継続的インテグレーション環境を構築するプロセスの図
  • CodeFirst が Asp.Net Core 2.0 Web サイトをゼロから構築
  • .Net Core+Angular Cli/Angular4開発環境構築チュートリアル
  • VS2015 で Asp.net Core 開発環境を構築する方法
  • .Net Core + Angular2環境構築の詳しい説明
  • クラウドサーバー上でのASP.NET Core環境の構築
  • Linux (Ubuntu) での ASP.NET Core 環境の構築
  • Windows 10 で ASP.NET Core 展開環境を構築する手順
  • Windows Server 2012 R2 標準 ASP.NET Core 環境グラフィックス チュートリアル
  • Ubuntu16.04システムは.Net Core開発環境を構築します

<<:  Vueは、選択した月に応じて日付に対応する曜日を動的に表示します。

>>:  Linux で MySQL のルート パスワードを変更する方法

推薦する

MySQL 5.7 でルートパスワードを変更する方法

MySQL 5.7 以降では、多くのセキュリティ更新が追加されました。旧バージョンのユーザーは慣れて...

ウェブデザインレイアウトの理解

<br />矛盾が生じます。私たちのような小さな工房では、デザインとレイアウトは基本的に...

SSHのssh-keygenコマンドの基本的な使い方の詳細な説明

SSH 公開鍵認証は、SSH 認証方式の 1 つです。 SSH パスワードフリーのログインは公開鍵認...

MySQL に絵文字表現を挿入できない問題の解決方法

序文最近この問題に遭遇するまで、私は UTF-8 が文字セットの問題に対する普遍的な解決策だと考えて...

Jenkins Docker 静的エージェント ノードのビルド プロセス

静的ノードはマシン上に固定されており、いくつかの固定コマンドを通じて起動されます。動的ノードには複数...

Linux システム AutoFs 自動マウント サービスのインストールと構成

目次序文1. サービスプログラムをインストールする2. メイン設定ファイルを書く3. サブ構成ファイ...

jQueryでフルスクリーンスクロール効果を実現

この記事の例では、フルスクリーンスクロールを実現するためのjQueryの具体的なコードを参考までに共...

MySQL デッドロックのトラブルシューティングの全プロセス記録

【著者】 Liu Bo: Ctrip テクニカル サポート センターのシニア データベース マネージ...

Vueドロップダウンメニューのコンポーネント開発の詳細説明

この記事の例では、Vueドロップダウンメニューのコンポーネント開発の具体的なコードを参考までに共有し...

MySQL実行計画の詳細な分析

序文前回の面接では、実行計画について質問されたとき、多くの人がそれが何なのか知りませんでした。実行計...

Web デザイン スキル: iframe の適応高さの問題

おそらく、この問題にまだ遭遇していない人もいるでしょうから、まずは適応高さとは何かを説明しましょう。...

WeChatアプレットAmapマルチポイントルート計画プロセス例の詳細な説明

電話Amap API を呼び出す方法は? Amap が https://lbs.amap.com/a...

CentOSはローカルyumソース/Alibaba Cloud yumソース/163yuanソースを設定し、yumソースの優先順位を設定します。

1. Centosイメージを使用してローカルのyumソースをビルドするCentOS をインストール...

Vueは携帯電話のカメラとアルバムを呼び出す機能を実装します

この記事では、携帯電話のカメラとアルバムにアクセスするためのVueの具体的なコードを参考までに共有し...

Tomcat のインストール後に起こりうる問題の紹介

1. Tomcatサービスが開いていませんブラウザのアドレスバーにlocalhost:8080と入力...