Centos7 ベースの Nginx Web サイト サーバーの構築の詳細説明 (仮想 Web ホストの構成を含む)

Centos7 ベースの Nginx Web サイト サーバーの構築の詳細説明 (仮想 Web ホストの構成を含む)

1. Nginx サービス基盤

Nginx (エンジン x) は、パフォーマンスの最適化のために特別に開発されました。メモリ使用量が少なく、安定性があり、システム リソースの消費量が少ないこと、同時接続の処理能力が高いこと (単一の物理サーバーで 5000 件の同時リクエストをサポート) が特徴です。実際、nginx の同時実行能力は、同じタイプの他の Web サーバーよりも優れています。中国本土で nginx を使用している Web サイトのユーザーには、Baidu、JD.com、Sina、NetEase、Tencent、Taobao などがあります。 IMAP/POP3/SMTP サービスも提供されます。

Nginx の利点:

*** 多数の同時接続が可能**
公式テストによると、Nginx は 50,000 の同時接続をサポートでき、実際の運用環境では 20,000 ~ 40,000 の同時接続をサポートできます。
*** メモリ使用量が少ない **
Nginx+PHP (FastCGI) サーバー、同時接続数 30,000、10 個の Nginx プロセスが 150MB のメモリを消費し、15MB*10=150MB、64 個の PHP-CGI プロセスが 1280MB のメモリを消費し、20MB*64=1280MB です。システム自体が消費するメモリと合わせると、消費されるメモリの合計は 2GB 未満です。
*** 低コスト**
F5BIG-IPやNetScalerなどのハードウェア負荷分散スイッチを購入すると、10万~数十万元以上の費用がかかります。Nginxは、2節BSDのようなプロトコルを使用するオープンソースソフトウェアです。無料で試用でき、商用目的でも使用できます。
*** 設定ファイルは非常にシンプルです**
専任のシステム管理者でなくても、ネットワークとプログラムを簡単に理解できます。
*** 書き換えをサポート**
異なるドメイン名と URL に応じて、HTTP リクエストを異なるバックエンド サーバー グループに分割できます。
***ヘルスチェック機能搭載**
NginxProxy の背後にある Web サーバーがダウンしても、フロントエンドのアクセスには影響しません。
*** 帯域幅を節約 **
GZIP 圧縮をサポートし、ブラウザのローカル キャッシュにヘッダーを追加できます。
*** 高い安定性**
リバース プロキシとして使用すると、ダウンタイムの可能性は最小限に抑えられます。
* **ホットデプロイメントをサポート**
Nginx はホット デプロイメントをサポートしており、自動化が特に簡単で、ほぼ 24 時間 365 日稼働できます。数か月稼働しても再起動の必要はありません。また、サービスを中断することなくソフトウェア バージョンをアップグレードできます。

次の図は、Nginx、Apache、lighttpd のパフォーマンス比較です。

これまで、Nginx の強力なパフォーマンスを強調するために多くのことを述べてきました。では、CentOS 7 をベースにした Nginx Web サイト サーバーを構築するにはどうすればよいでしょうか (仮想 Web ホストの構成を含む)? 引き続き、Nginx の構成と仮想マシンでのその適用について説明しましょう。

2. 準備:

1. CentOS 7 サーバー

2. CentOS 7 システム ディスク

3. 必要なソフトウェア パッケージは https://www.jb51.net/softs/25646.html から入手できます。

4. 公式ウェブサイト http://www.nginx.org/ からダウンロードすることもできます。

3. Nginx ウェブサイトの構築を開始します (システム ディスクをマウントし、必要な依存パッケージをインストールします)。

1. システム ディスクによって提供される必要な依存パッケージをインストールします。


2. Nginxをコンパイル、インストール、設定する

[root@localhost media]# useradd -M -s /sbin/nologin nginx #システムユーザーを作成 [root@localhost media]# tar zxf nginx-1.12.0.tar.gz -C /usr/src #解凍 [root@localhost media]# cd /usr/src/nginx-1.12.0/
[root@localhost nginx-1.12.0]# ./configure --prefix=/usr/local/nginx 
--user=nginx --group=nginx --with-http_stub_status_module 
&& 作成 && インストール       
#Nginx をコンパイルしてインストールする
[root@localhost ~]# ln -s /usr/local/nginx/sbin/nginx /usr/local/sbin/
#メインプログラムのリンクファイルを作成する Nginx サービスの起動、停止、リロードなどの操作をより便利にするために、Nginx サービス スクリプトを編集できます。スクリプトは次のようにコンパイルされます。
[root@localhost ~]# vim /etc/init.d/nginx #サービススクリプトを編集#!/bin/bash
# chkconfig: -99 20
PROG="/usr/local/nginx/sbin/nginx"
PIDF="/usr/local/nginx/logs/nginx.pid"
ケース「$1」
 始める)
    $PROG
 ;;
 停止)
    kill -s QUIT $(cat $PIDF)
 ;;
 再起動)
    $0 ストップ
    0ドルからスタート
 ;;
 リロード
    kill -s HUP $(cat $PIDF)
 ;;
 *)
    echo "使用方法:$0 {開始 | 停止 | 再起動 | 再読み込み}"
    出口1
エサック
終了 0

[root@localhost ~]# chmod +x /etc/init.d/nginx #実行権限を追加します[root@localhost ~]# chkconfig --add nginx #システムサービスとして追加します[root@localhost ~]# systemctl start nginx #スクリプトが正常に動作することを確認するためにNginxサービスを開始します[root@localhost ~]# vim /usr/local/nginx/conf/nginx.conf #Webサービスを最適化するために構成ファイルを調整します..............
worker_processes 2; #ワーカープロセスの数 #error_log logs/error.log; #エラーログファイルの場所 #error_log logs/error.log notice;
#error_log ログ/error.log 情報;
#pid logs/nginx.pid; #PID ファイルの場所 events {
  epoll を使用します。#パフォーマンスを向上させるために、even{ } にこの行を追加します。worker_connections 4096; 各プロセスは 4096 個の接続を処理します。

上記の最適化はグローバル設定に基づいて実装されます。各最適化の意味は次のとおりです。

  • worker_processes: ワーカー プロセスの数を示します。サーバーに複数の CPU がある場合、またはマルチコア プロセッサを使用している場合は、CPU コアの合計数に基づいてワーカー プロセスの数を指定できます。具体的な意味は、worker_connections 構成項目に反映されます。
  • worker_connections: この設定項目は、各プロセスで処理される接続数を指定します。通常、この値は 10,000 未満です (デフォルトは 1024)。これは、上記のワーカー プロセス数の設定項目に関連付けられています。たとえば、ワーカー プロセスの数が 8 で、各プロセスが 4,096 の接続を処理する場合、Nginx がサービスを提供できる接続数は通常 30,000 (4096*8=32,768) を超えます。もちろん、具体的なパフォーマンスは、サーバーのハードウェア、ネットワーク帯域幅、その他の物理的な条件によっても異なります。

3. ドメイン名に基づいて仮想ウェブホストを構築します。

1. HTTP 構成:

Nginx の構成ファイルは、「http { }」区切りタグを使用して、アクセス ログ、http ポート、Web ディレクトリ、デフォルトの文字セット、接続の永続性、仮想 Web ホスト、PHP 解析、およびその他のグローバル Web サイト設定を含む HTTP サーバーを設定します。そのほとんどは、サブ区切りタグ「server { }」に含まれています。 「server {}」は特定の Web サイト設定を表します。

[root@localhost ~]# vim /usr/local/nginx/conf/nginx.conf 
http {
  mime.types を含めます。
  デフォルトタイプ アプリケーション/オクテットストリーム;

  log_format main '$remote_addr - $remote_user [$time_local] "$request" '
          '$status $body_bytes_sent "$http_referer" '
           '"$http_user_agent" "$http_x_forwarded_for"';
#上記の 3 行の先頭にある "#" 記号を削除します access_log logs/access.log main; #アクセス ログの場所 sendfile on; 効率的なファイル転送モードを有効にします #tcp_nopush on;

  #キープアライブタイムアウト 0;
  keepalive_timeout 65; #接続キープアライブタイムアウト #gzip オン;

  サーバー{
    listen 80; #Web サーバーのリスニング ポート。"ip address:port" の形式を使用できます。 server_name www.test1.com; #Web サイトのドメイン名 charset utf-8; #Web サイトのデフォルトの文字セット。先頭の "#" 記号を削除する必要があります。 access_log logs/test1.access.log main; #アクセス ログ ファイル名 location /status { #ステータス統計を有効にするには、場所 /status を追加します。アクセス場所は /status です。
      stub_status on; #ステータス統計機能をオンにする access_log off; #この場所のログをオフにする}

    位置 / {
      root /var/www/test1; #Web サイトのルート ディレクトリ index index.html index.php; #デフォルトのホームページ。PHP Web ページをサポートするには index.php に変更します}

    ;
        ..........................

    error_page 500 502 503 504 /50x.html; #内部エラーフィードバックページ location = /50x.html { #エラーページ構成ルートhtml;
    }
    }
 }

上記の構成では、Web サイト サービスのみが構築されます。複数のサービスを実行する場合は、構成ファイルの末尾に提供されているテンプレートをコピーして、「server{ }」構成に貼り付けることができます。構成ファイルには「{ }」が多すぎるため、エラーを回避するには、次のように元の「server{ }」にコピーする必要があります。

サーバー{
聞く 80;
    サーバー名 www.test2.com;
    文字セット utf-8;

    access_log ログ/test2.access.log メイン;
     場所 / ステータス {
      stub_status オン;
      access_log オフ;
}

    位置 / { 
      ルート /var/www/test2;
      インデックス index.html index.php;
    }
  }

  サーバー{
    聞く 80;
    サーバー名 www.test1.com;

        .............................

この時点で、仮想ホストが設定されており、サービスを再起動して有効にし、Webサーバーの正常な動作を確認する必要があります(DNSは自分で設定する必要があります)

4. アクセスステータス統計仮想ホストアプリケーション

[root@localhost ~]# nginx -t #このコマンドを使用して、サービスを再起動する前に構成ファイルを確認します。
#設定ファイルにエラーがある場合は、エラーのある行が表示されます。
#すべてが正しければ、OK と表示されます。エラーがある場合、サービスを再起動してもエラーは報告されませんが、構成ファイルは有効になりません。
nginx: [emerg] /usr/local/nginx/conf/nginx.conf:44 に予期しない ";" があります
#44行目にエラーがあることを示します nginx: 設定ファイル /usr/local/nginx/conf/nginx.conf のテストに失敗しました
[root@localhost ~]# nginx -t #以下はokを示しており、問題がないことを示しています。
nginx: 設定ファイル /usr/local/nginx/conf/nginx.conf の構文は正常です
nginx: 設定ファイル /usr/local/nginx/conf/nginx.conf のテストが成功しました

# 次に、Web サイトのディレクトリとテスト ファイルを準備し、2 つの仮想 Web ホストのルート ディレクトリを作成し、テスト中に区別しやすいようにテスト ホームページを準備します [root@localhost named]# mkdir -p /var/www/test1
[root@localhost 名前]# mkdir -p /var/www/test2
[root@localhost の名前]# echo "www.test1.com" > /var/www/test1/index.html
[root@localhost の名前]# echo "www.test2.com" > /var/www/test2/index.html

クライアント認証:

① www.test1.comのホームページにアクセスします。


② www.test1.com のステータス統計ページにアクセスします。


上記は以下を意味します。

アクティブ接続とは、現在アクティブな接続の数が 2 であることを意味します。

サーバーが処理された要求を受け入れるということは、処理された接続情報を示します。3 つの数字は、処理された接続が 3 つ、ハンドシェイクが 3 回成功し、処理された要求が 6 つあることを表します。

① www.test2.comのホームページにアクセスします。


② www.test2.com のステータス統計ページにアクセスします。

上記はアクセス状況統計と仮想ホストの応用である

以上がこの記事の全内容です。皆様の勉強のお役に立てれば幸いです。また、123WORDPRESS.COM を応援していただければ幸いです。

以下もご興味があるかもしれません:
  • CentOS8.1 で Gitlab サーバーを構築するための詳細なチュートリアル
  • Centos8 でローカル Web サーバーを構築するための実装手順
  • Centos7 で MySQL マスター スレーブ サーバーを構築する方法 (グラフィック チュートリアル)
  • CentOS 7.2 は uniapp プロジェクトを展開するための nginx Web サーバーを構築します
  • Centos7 システム上の nginx サーバーで Phalcon 環境を構築する方法の詳細な説明
  • Centos7 でマスター スレーブ DNS サーバーを構築するチュートリアル
  • CentOSにPHP+Apache+MySQLのサーバー環境をインストールして構築する
  • CentOS 上で PHP サーバー環境を設定するための簡潔なチュートリアル
  • Centos は chrony 時間同期サーバー プロセス図を構築します

<<:  MySQL で最大接続数を設定するためのヒントのまとめ

>>:  React+Amapは緯度と経度をリアルタイムで取得し、住所を特定します

推薦する

Centos8 でローカル Web サーバーを構築するための実装手順

1 概要システム Centos8 では、httpd を使用してローカル Web サーバーを構築します...

Dockerの基本的なネットワーク構成の詳細な説明

外部アクセスポートをランダムにマップする -P フラグを使用すると、Docker は 49000 か...

Vue+tsx のスロット使用の問題が置き換えられない

目次序文問題を見つける解決する追記序文最近、 UIコンポーネントを作成する予定で、 vue 2.xと...

Vue フロントエンド開発における階層的にネストされたコンポーネント間の通信の詳細な説明

目次序文例まとめ序文Vue の親子コンポーネントは、props を通じて親コンポーネントの値を子コン...

ミニマルなウェブサイトデザインの例

Web アプリケーション クラス1. みんなのためにダウンまたは私だけのためにこのウェブサイトは、ウ...

IE7でソースファイルを含むページを開くとページが空白になる問題の解決方法

質問:私のブログのエンコーディングは utf-8 です。ページを開くと空白になっていることもあります...

MySQL データベース面接に必須の 3 つのログの紹介

目次1. redo ログ (MySQL ストレージ エンジン InnoDB のトランザクション ログ...

DockerにTensorFlow環境を素早くインストールする方法

Docker に TensorFlow 環境をすばやくインストールし、TensorFlow を使用し...

コードを通じてHTMLエスケープ文字を識別する方法について説明します

データ内に次のような特徴を持つ「 ' 」などの文字が含まれることがあります。 &# ...

一般的でない js 演算演算子の概要

目次2. カンマ演算子3. JavaScript Null 結合演算子 (??) 4. JavaSc...

MySQL シリーズ II マルチインスタンス構成

チュートリアルシリーズMySQL シリーズ: MySQL リレーショナル データベースの基本概念My...

Linux にバイナリ MySQL をインストールして MySQL パスワードをクラックする方法

1. システムに必要な libaio ソフトウェアがインストールされていることを確認します。インスト...

意外と知らないJSのループ速度テストのいろいろを徹底解説

目次序文1. forループ2. whileループとdo-whileループ3. forEach、map...

ページネーションの例とベストプラクティス

<br />構造と階層により複雑さが軽減され、読みやすさが向上します。記事やサイトが整理...

MySQL クエリ データベース容量方法手順

すべてのデータベースの合計サイズを照会する方法は次のとおりです。 mysql> informa...