Linux (centOS7) nginx をインストールする

                                                   nginxのインストール

 

ダウンロードアドレス: http://nginx.org/download/nginx-1.4.2.tar.gz

インストールの準備: nginx は pcre ライブラリに依存するため、pcre を最初にインストールする必要があります

yum インストール pcre pcre-devel

 cd /usr/local/src/

 wget http://nginx.org/download/nginx-1.4.2.tar.gz

tar zxvf nginx-1.4.2.tar.gz

cd nginx-1.4.2

./configure --prefix=/usr/local/nginx はこのステップまで実行され、次のエラーが報告されます。

これは、gcc コンパイラーがインストールされていないことを意味します。nginx は C 言語で書かれています。もちろん C コンパイラーが必要なので、それをインストールしてください。

yum インストール gcc-c++

コマンドを再度実行すると、次のエラーが報告されます

「zlib-devel」をインストールする必要があります。SSH は次のコマンドを実行します: yum install -y zlib-devel

問題ありません。nginx をコンパイルしてインストールします。

メイク&&メイクインストール

プロセスに明らかなエラーがなければ、それは成功を意味します。

起動:

cd /ulsr/local/nginx、次の 4 つのディレクトリを参照してください。

./

 ....conf 構成ファイル  

 ... HTML Web ページ ファイル

 ...logs ログ ファイル 

 ...sbin メインバイナリプログラム

 

[root@localhost nginx]# ./sbin/nginx

nginx: [emerg] 0.0.0.0:80 へのbind() が失敗しました (98: アドレスはすでに使用されています)

....

nginx: [emerg] 0.0.0.0:80 へのbind() が失敗しました (98: アドレスはすでに使用されています)

nginx: [emerg] まだbind()できませんでした

 

ポート 80 をバインドできません。ポート 80 はすでに占有されています

(Apache、nginx などをインストールする場合もありますが、多くの場合、オペレーティング システムに Apache が付属し、サービスとして開始されます)

解決策: ポート 80 を占有しているソフトウェアまたはサービスを閉じます。

                                                 Nginx 設定セクション

 nginx ディレクトリの下の conf ディレクトリにある Nginx.conf ファイルが nginx 設定ファイルです

// グローバル領域
worker_processes 1; // 作業中の子プロセスが 1 つあり、それ自体を変更できますが、CPU を競合する必要があるため、大きすぎて有益ではなく、通常は CPU の数に設定されます。 * コアの数

 

イベント {

// 一般的には、nginx 接続を設定する機能です

// たとえば、1 つのワードで同時に許可できる接続数はいくつですか

 work_connections 1024; // これは、子プロセスが最大 1024 個の接続を許可することを意味します

}

 

http { //これは、http サーバーを構成するためのメインセクションです

     Server1 { // これは仮想ホストセグメントです

       

            Location { //画像ディレクトリなどの特別なパスまたはファイルを検索、再配置しますが、別個に処理されます

            } /// .phpを個別に処理する場合

 

     }

 

     サーバー2 {

     }

}

 

 

例 1: ドメインベースの仮想ホスティング

 

    サーバー {

        listen 80; #リスニングポート

        サーバー名 a.com; #監視ドメイン名

 

        位置 / {

                root /var/www/a.com; #ルートディレクトリの場所

                インデックスindex.html;

        }

    }

 

例 2: ポートベースの仮想ホスト構成

 

    サーバー {

        8080を聞いてください。

        サーバー名 192.168.1.204;

 

        位置 / {

                ルート/var/www/html8080;

                インデックスindex.html;

        }

    }

                                                              

                                                    ログ管理

nginx のサーバーセクションを観察すると、次のような同様の情報が表示されます。

 #access_log ログ/host.access.log main;

これは、サーバーのアクセス ログ ファイルが logs/host.access.log であることを示しています。

使用される形式は「メイン」形式です。

メインの形式に加えて、他の形式をカスタマイズできます。

 

主な形式は何ですか?

log_format main '$remote_addr - $remote_user [$time_local] "$request" '

    # '$status $body_bytes_sent "$http_referer" '

    # '"$http_user_agent" "$http_x_forwarded_for"';

 

主な形式は、ログ形式を定義し、参照しやすいように名前を付けることです。

上記の例では、ログの主なタイプ、記録されたremote_addr... http_x_forwarded_for およびその他のオプションを考えてみましょう。

 

 

1: ログ形式は、どのオプションが記録されるかを示します。

デフォルトのログ形式: メイン

     log_format main '$remote_addr - $remote_user [$time_local] "$request" '

                            '$status $body_bytes_sent "$http_referer" '

                            '"$http_user_agent" "$http_x_forwarded_for"';

デフォルトのメインログ形式など、次のいくつかの項目を記録します。

リモート IP - リモート ユーザー/ユーザー時間リクエスト メソッド (GET/POST など) リクエスト本文の長さのリファラー ソース情報

http-user-agent ユーザー エージェント/スパイダー、転送されたリクエストの元の IP

http_x_forwarded_for: プロキシを経由する場合、プロキシはこのヘッダー情報に元の IP を追加して、元の IP を送信します

2: 一意の log_format を宣言し、名前を付けます

    log_format mylog '$remote_addr- "$request" '

                     '$status $body_bytes_sent "$http_referer" '

                        '"$http_user_agent" "$http_x_forwarded_for"';

次のサーバー/場所で、mylog を参照できます。

サーバーセクションでは、次のように宣言します

Nginx では、サーバーごとに異なるログが許可されます (lighttp など、一部の Web サーバーはサポートしていません)。

access_log ログ/access_8080.log mylog;   

ログのログ位置のログ形式を宣言します。

実用的なアプリケーション: シェル + 時間指定タスク + nginx シグナル管理、日付ごとの完全なログ保存

分析のアイデア:

午前00:00:01に、昨日のログの名前を変更し、対応するディレクトリに置きます。

次に、USR1 情報番号が nginx を制御して新しいログ ファイルを再生成します。


具体脚本:

#!/bin/bash

Base_path='/usr/local/nginx/logs'

log_path=$(日付 -d 昨日 +"%Y%m")

day=$(日付 -d 昨日 +"%d")

mkdir -p $base_path/$log_path

mv $base_path/access.log $base_path/$log_path/access_$day.log

#echo $base_path/$log_path/access_$day.log

kill -USR1 `cat /usr/local/nginx/logs/nginx.pid`

時限タスク

Crontab で時間指定タスクを編集する

01 00 * * * /xxx/path/b.sh 毎日 00:01 (システム負荷が小さいため、02 ~ 04 時が推奨)

 

おすすめ

転載: blog.csdn.net/qq_34128089/article/details/80634852