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は緯度と経度をリアルタイムで取得し、住所を特定します

推薦する

Linux C++ マルチスレッド同期の非常に詳細な説明

目次1. ミューテックス1. ミューテックスの初期化2. ミューテックスロックの関連特性と分類3. ...

SVNサービスバックアップ操作手順の共有

SVN サービスのバックアップ手順1. ソースサーバーとターゲットサーバーを準備するソースサーバー:...

MySQLデータのセキュリティを確保するための提案

データは企業の中核資産であり、企業にとって最も重要なタスクの 1 つです。注意しないと、データが意図...

SQL の左結合と右結合の原理と例の分析

テーブルが 2 つあり、テーブル A のレコードがテーブル B に存在しない可能性があります。左結合...

このようなシェル スクリプトを使用して、多数の MySQL データベースを強制終了します (推奨)

朝早くに電話で起こされました。あるプロジェクトのデータベースがダウンしていて起動できないとのことでし...

Nginx をベースに特定の IP への短期アクセス数を制限する

特定の期間内に特定の IP へのアクセス回数を制限する方法は、特に悪意のある DDOS 攻撃に直面し...

Mysql general_log をクリーンアップする方法の概要

方法1: グローバル general_log を 'OFF' に設定します。 テーブ...

JS を使用してデータ型を決定する 4 つの方法

目次序文1. 型2. インスタンス3. コンストラクター詳細: 4. 文字列要約する序文Javasc...

MySQLステートメントを監視する方法の詳細な説明

クイックリーディングSQL ステートメントを監視する必要があるのはなぜか、監視方法と監視手段について...

MySQL レプリケーションの詳細な説明と簡単な例

MySQL レプリケーションの詳細な説明と簡単な例マスタースレーブレプリケーション技術は、MySQL...

MySQL 8で追加された3つの新しいインデックスは、非表示、降順、関数です。

目次MySQL 8 の隠しインデックス、降順インデックス、関数インデックス1. 隠しインデックス1....

CSS でのナビゲーション バーとドロップダウン メニューの実装

1. CSSナビゲーションバー(1)ナビゲーションバーの機能ナビゲーション バーを使いこなすことは、...

MySQL アクティブ-アクティブ同期レプリケーションの 4 つのソリューションの詳細な説明

目次MySQLネイティブレプリケーションに基づくマスター-マスター同期ソリューションGaleraレプ...

Dockerカスタムネットワークコンテナ相互接続

目次序文-リンクカスタムネットワーク質問する序文前回は、 -Linkパラメータを使用してコンテナ間の...

ファイル操作のためのLinuxシステムコール

目次1. ファイルを開くパラメータの紹介2. ファイルの読み取り3. ファイルを書き込む4. 閉じる...