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

推薦する

CSS スタッキングと Z インデックスのサンプルコード

カスケードとカスケードレベルHTML 要素は 3 次元の概念です。水平方向と垂直方向に加えて、「Z ...

Prometheus+Grafanaによるnginxの監視方法を分析する

目次1. ダウンロード2. nginxとnginx-vts-exporterをインストールする3. ...

webpackが静的リソースキャッシュを実装する方法

目次導入複数の異なるハッシュを区別するハッシュチャンクハッシュコンテンツハッシュjs キャッシュの実...

Linuxファイルの基本属性の知識ポイントのまとめ

Linux システムは典型的なマルチユーザー システムです。異なるユーザーは異なる立場にあり、異なる...

JavaScript axiosのインストールとパッケージ化のケースの詳細な説明

1. axiosプラグインをダウンロードする cnpm インストール axios -S 2. mai...

Docker 入門インストールチュートリアル (初心者版)

ドクター紹介: Docker はコンテナ関連の技術です。簡単に言うと、さまざまなソフトウェアを実行で...

WeChatアプレットのスワイパードットのドットをスライダーに変更する方法

目次背景ターゲット効果アイデア成し遂げるスワイパーは変更を聞きますカスタムドットモジュール変更イベン...

CSS3で実装されたグラデーションスライド効果

成果を達成する コードhtml <div class="css-slideshow&...

複数の Tomcat を展開して起動し、プロジェクトを移行する方法を 1 つの記事で学習します。

目次tomcatをデプロイする1.ダウンロードして解凍する2. 設定ファイルを変更する移植プロジェク...

XHTML CSSを使用して正式なブログを書く

ブログの正式名称は「Web log」で、中国語で「ネットワークログ」を意味します。後にブログに短縮さ...

つまり、フィルターコレクション

IE は開発の初期段階では頭を悩ませましたが、他のブラウザとは異なります。他のブラウザがサポートして...

HTML におけるベースタグの使用に関する詳細な説明

requireJS には、baseURL というプロパティがあります。baseURL を設定すること...

CentOS インストール mysql5.7 詳細チュートリアル

この記事では、参考までに、centOSにmysql5.7をインストールする詳細な手順を紹介します。具...

VMware 仮想マシン ブリッジ モードでインターネットにアクセスできない問題を解決する方法

ステップ1: ローカルイーサネットプロパティをチェックして、VMwareブリッジプロトコルがインスト...

Linux LVM 論理ボリューム構成プロセス (作成、増加、削減、削除、アンインストール) の詳細な説明

Linux LVM論理ボリューム構成プロセスの詳細な説明多くの Linux ユーザーは、オペレーティ...