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 を起動する 監督を停止 [設定ファイルを再読み込み] 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 環境を構築する詳細な方法です。皆様のお役に立てれば幸いです。 以下もご興味があるかもしれません:
|
<<: Vueは、選択した月に応じて日付に対応する曜日を動的に表示します。
>>: Linux で MySQL のルート パスワードを変更する方法
環境の紹介オペレーティングシステム: Centos 7.4 Zabbix バージョン: zabbix...
目次1. 繰り返し宣言1.1 変数1.2 しましょう1.3 定数2. 可変プロモーション2.1 変数...
シナリオ: 検査文書には n 個の検査詳細があり、検査詳細には n 個の検査項目があります。実装効果...
1 要件の概要MySQL5.6本番データベースの複数のテーブルのデータは、Oracle11gデータウ...
序文:グループ化関数はグループ内の最初のデータを取得しますが、各グループ内の最新のデータを取得する必...
Docker はポートを IPv6 にのみマッピングし、IPv4 にはマッピングしません。 dock...
ミラーを探すDocker Hubのウェブサイトからイメージを検索できます。Docker Hubのウェ...
第二に、キーワードのランキングは、Webページの表示速度にも関係しています(参照:キーワードランキン...
仮想DOMの役割まず、仮想 DOM の出現によってどのような問題が解決されるのかを知る必要があります...
1. 原因:サブボックスをフロートに設定した後の効果: 青いボックスをフロートに設定すると、標準のド...
定義と使用法display プロパティは、要素が生成するボックスのタイプを指定します。例示するこの属...
HTML メールを送信するためのヒント: スタイルを使用してインライン CSS を記述する、使用する...
目次Vue 再帰コンポーネントドラッグイベント最近、Vue を使用して、ドラッグ可能なツリー構造図と...
AWS - Amazon のクラウド コンピューティング サービス プラットフォーム以前、AWS の...
まず、例を見てみましょう。記事テーブルにはタイプフィールドがあり、1 見出し、2 おすすめ、3 ホッ...