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

推薦する

スクリプトを使用して、ワンクリックでDockerイメージをパッケージ化してアップロードします。

著者は1年以上マイクロフロントエンドプロジェクトに取り組んできました。チームは10個のマイクロアプリ...

mysql ルートユーザーを認証できず、Navicat リモート認証プロンプト 1044 の問題を解決します

まず解決策を見てみましょう #------------mysql の root ユーザーに権限を付与...

LeetCode の SQL 実装 (184. 部門内で最も高い給与)

[LeetCode] 184. 部門最高給与従業員テーブルにはすべての従業員が保存されます。すべて...

Reactベースのコンポーネントのカプセル化の実装手順

目次序文antd はどのようにしてコンポーネントをカプセル化するのでしょうか?ディバイダーコンポーネ...

CSS3 で translate と transition を使用する方法

translate と transition は非常に強力で、習得するのは不可能だといつも感じていま...

Nginx でバージョン番号を隠したり偽造したりする方法

1. デフォルトでアクセスするには、curl コマンドを使用します。 # curl -I http:...

レスポンシブデザインについての簡単な説明

1. レスポンシブ デザインとは何ですか?レスポンシブデザインとは、ウェブサイトの開発プロセス中に、...

MySQL インデックスの知識の要約

MySQL インデックスの確立は、MySQL の効率的な操作にとって非常に重要です。インデックスによ...

Windows10 mysql 8.0.12 非インストール版 設定 起動方法

この記事では、MySQL 8.0.12のインストールされていないバージョンを設定して起動するための具...

js、css、htmlはブラウザのさまざまなバージョンを決定します

正規表現を使用してIEブラウザのバージョンを判別するIEブラウザかどうか確認するif (docume...

CentOS 8で自動更新を設定するための手順を完了する

データとコンピューターに対してできる最善のことは、それらを安全に保つことです。アップデートを有効にす...

Dockerはホスト間のネットワーク通信を実現するためにMacvlanを導入する

基本的な概念: Macvlanの動作原理: Macvlan は、Linux カーネルでサポートされて...

DockerにRocketMQをインストールするための実装手順

目次1. 画像を取得する2. ブローカーサーバーを作成する3. ブローカーを作成する4. Rocke...

MYSQL開発パフォーマンス調査:バッチデータ挿入の最適化方法

1. どのような問題に直面しましたか?標準 SQL では、通常、次の SQL 挿入ステートメントを記...

XHTML 入門チュートリアル: リストタグの使用

リストは、類似または関連する一連の項目をリストするために使用されます。順序なしリスト(箇条書きリスト...