1 nginxの紹介1 nginxとは何かNginx は、高性能な http サーバー/リバース プロキシ サーバーおよび電子メール (IMAP/POP3) プロキシ サーバーです。 ロシアのプログラマー Igor Sysoev 氏によって開発された公式テストでは、nginx が 50,000 の同時接続をサポートできることが示されています。 さらに、CPUやメモリなどのリソースの消費量も非常に少なく、動作も非常に安定しています。 2 つのアプリケーション シナリオ1. http サーバー。 Nginx は、http サービスを独立して提供できる http サービスです。静的 Web サーバーとして使用できます。 2. 仮想ホスト。 1 台のサーバー上で複数の Web サイトを仮想化することが可能。たとえば、個人の Web サイトで使用される仮想ホストなどです。 3. リバースプロキシ、負荷分散。ウェブサイトへのアクセス数が一定レベルに達すると、単一のサーバーではユーザーの要求を満たすことができなくなります。 複数のサーバー クラスターを使用する必要がある場合は、nginx をリバース プロキシとして使用できます。複数のサーバーで負荷を均等に分散できるため、 負荷が高いためにサーバーがアイドル状態になる状況は発生しません。 2 nginxのインストール1 ダウンロード公式サイト: http://nginx.org/en/download.html 公式サイトでは3つのバージョンが提供されています。 Nginxの公式サイトでは3種類のバージョンが提供されている メインラインバージョン: メインラインは、Nginx が現在取り組んでいるバージョンであり、開発バージョンと言えます。 安定バージョン: 最新の安定バージョン、本番環境に推奨されるバージョン レガシーバージョン: レガシー旧バージョンの安定バージョン 以下の安定版をダウンロードします 使用されるバージョンは 1.14.0.tar.gz です。 2 インストール環境要件以下の環境は、システム状況に応じて決定する必要があります。環境がない場合は、以下をインストールしてください。 1. gcc環境をインストールする必要がある# yum で gcc-c++ をインストールします 2. サードパーティ開発キット1 ペレ PCRE (Perl 互換正規表現) は、Perl 互換の正規表現ライブラリを含む Perl ライブラリです。 nginx の http モジュールは正規表現を解析するために pcre を使用するため、Linux に pcre ライブラリをインストールする必要があります。 注: pcre-devel は、pcre を使用して開発された二次開発ライブラリです。 nginx にもこのライブラリが必要です。 # yum インストール -y pcre pcre-devel 2 ズリブ zlib ライブラリは、多くの圧縮および解凍方法を提供します。Nginx は zlib を使用して http パッケージの内容を gzip 圧縮するため、Linux に zlib ライブラリをインストールする必要があります。 # yum install -y zlib zlib-devel 3 オープンSSL OpenSSL は、主要な暗号化アルゴリズム、一般的に使用されるキーと証明書のカプセル化管理機能、および SSL プロトコルを含む強力なセキュア ソケット レイヤー暗号化ライブラリです。 また、テストやその他の目的のためのさまざまなアプリケーションを提供します。 Nginx は HTTP プロトコルをサポートするだけでなく、HTTPS (つまり、SSL プロトコル経由で HTTP を送信する) もサポートしているため、Linux に OpenSSL ライブラリをインストールする必要があります。 # yum -y インストール pcre pcre-devel zlib zlib-devel openssl openssl-devel 3 nginxのインストール手順1 Linuxシステムにnginxソースパッケージをアップロードする 2 /usr/localに解凍する # tar -xvf nginx-1.14.0.tar.gz -C /usr/local 3 cofigureコマンドを使用してmakeFileファイルを作成する 以下のコマンドを実行するときは、必ず nginx-1.14.0 ディレクトリに入ってください。 ./configure \ --prefix=/usr/local/nginx \ --pid-path=/var/run/nginx/nginx.pid \ --lock-path=/var/lock/nginx.lock \ --error-log-path=/var/log/nginx/error.log \ --http-log-path=/var/log/nginx/access.log \ --with-http_gzip_static_module \ --http-client-body-temp-path=/var/temp/nginx/client \ --http-proxy-temp-path=/var/temp/nginx/proxy \ --http-fastcgi-temp-path=/var/temp/nginx/fastcgi \ --http-uwsgi-temp-path=/var/temp/nginx/uwsgi \ --http-scgi-temp-path=/var/temp/nginx/scgi \--with-http_stub_status_module \--with-http_ssl_module \--with-file-aio \--with-http_realip_module makeFileファイルがない場合、コンパイル時にエラーが報告されます。 \ はコマンドがまだ入力されていないことを意味し、新しい行を意味します。 --prefix=/usr/local/nginx は、ソフトウェアが /usr/local/nginx の下にインストールされていることを意味します。 make install を実行するときにインストール パスを指定する必要はありません。 実行が完了したら、ディレクトリにMakefileファイルがすでに存在することを確認します。 注意: nginx を起動する前に、一時ファイル ディレクトリを /var/temp/nginx として指定してください。 /varの下にtempとnginxディレクトリを作成する必要があります 4 ディレクトリ /var/temp/nginx/ を作成する # mkdir /var/temp/nginx -p -pはカスケード作成を意味します 5 nginx-1.14.0と入力し、makeコマンドを実行してコンパイルします。 6 nginx-1.14.0と入力し、make installコマンドを実行してインストールします。 ここでインストール パスを再度実行する必要はありません。これは、makefile の作成時にすでに指定されています。 7 インストール場所/usr/local/nginxを入力してディレクトリ構造を表示します。 このうち、html はホームページの html ファイルです。 conf には設定ファイルが含まれています。 sbin には実行可能ファイルのみが含まれます。 3 nginxを起動するsbinディレクトリに入り、./nginxコマンドを実行します。 [root@admin sbin]# ./nginx 4 nginxが起動しているか確認する[root@admin sbin]# ps -aux | grep nginx ps コマンドは、現在のシステムのプロセス ステータスを報告するために使用されます。 -a: ステージジョブリーダーを除くすべての端末で実行されたプログラムを表示します。 a: 他のユーザーのプログラムも含め、現在の端末の下にあるすべてのプログラムを表示します。 u: プログラムの状態をユーザー指向の形式で表示します。 x: 端末に関係なく、すべてのプログラムを表示します。 5. nginxをシャットダウンする[root@admin sbin]# ./nginx -s 停止 または [root@admin sbin]# ./nginx -s 終了 6 nginxを再起動するまずシャットダウンしてから起動する 7 設定ファイルを更新する[root@admin sbin]# ./nginx -s リロード 8. ファイアウォールを無効にしてリモートアクセスを有効にするまずファイアウォールをオフにする必要があります。デフォルトのポートは80です。 方法1: ポート80を永続的に開く /sbin/iptables -I 入力 -p tcp --dport 80 -j 受け入れ /etc/rc.d/init.d/iptables 保存 方法2: システムファイアウォールを一時的に無効にする # サービス iptables を停止 方法3: 設定を変更し、ファイアウォールを起動せずに起動することで、ファイアウォールを永続的に無効にする # chkconfig iptables をオフにする 特別: Alibaba Cloud向け セキュリティグループルールを追加する必要がある 9 nginxにアクセスする10. 仮想ホストを構成する1 つのサーバー上で複数の Web サイトを起動することです。 異なるウェブサイトを区別する方法:主に2つの方法があります 方法1: 異なるポート 方法2: 異なるドメイン名 11 ポートによるホストの区別nginx 設定ファイルの場所: /usr/local/nginx/conf/nginx.conf 元の構成ファイルの内容は次のとおりです。 複数のサーバーを構成して複数の仮想マシンを構成することができます 次のテスト: 元のhtmlディレクトリをコピーし、名前をhtml-81に変更します。 区別しやすいように以下のindex.htmlファイルを変更します [root@admin nginx]# vim html-81/index.html 変更が完了したら、次の設定ファイルを更新します。 [root@admin sbin]# ./nginx -s リロード 次に、それぞれ192.168.204.131:80と192.168.204.131:81にアクセスします。 12 複数のドメイン名が仮想ホストを区別する1 ドメイン名とは何ですか?ドメイン名はウェブサイトです: www.baidu.comはドメイン名です DNS ドメイン名解決サーバーはドメイン名を IP アドレスに解決します。保存されるのは、ドメイン名と IP アドレスのマッピング関係です。 第一レベルドメイン名: baidu.com セカンドレベルドメイン名: www.baidu.com 第三レベルドメイン名: image.baidu.com 1 つのドメイン名は 1 つの IP アドレスに対応し、1 つの IP アドレスは複数のドメイン名にバインドできます。 ファーストレベルドメイン名を購入するだけで、セカンドレベルとサードレベルドメイン名は自由に定義できます。 ホスト構成ファイルを変更することで、ローカル テストを完了できます。 ホストファイルの場所: C:\Windows\System32\drivers\etc ドメイン名と IP のマッピング関係を手動で設定できます。ドメイン名と IP の対応関係が hosts ファイルで設定されている場合、DNS ドメイン名解決サーバーを経由する必要はありません。 ドメイン名を取得すると、まずは hosts ファイルで検索します。見つからない場合は、DNS ドメイン名リゾルバで検索します。 2 nginxの設定3 テスト1 ローカルホストの設定ファイルを変更する 2 htmlディレクトリをコピーし、それぞれhtml-taobaoとhtml-baiduに名前を変更します。 3 html-baiduとhtml-taobaoのindex.htmlファイルをそれぞれ変更して区別しやすくする 4 設定ファイルを更新する [root@admin sbin]# ./nginx -s リロード 5 次にブラウザを使用してwww.taobao.comとwww.baidu.comにアクセスします。 13 フォワードプロキシ14 リバースプロキシリバースプロキシサーバーはサービスを提供するサーバーを決定します 15 nginxはリバースプロキシを実装する2 つのドメイン名は同じ nginx サーバーを指しており、ユーザーが異なるドメイン名にアクセスすると、異なる Web ページ コンテンツが表示されます。 2つのドメイン名はwww.baidu.comとwww.taobao.comです。 nginx プロキシ サーバーは仮想マシン 192.168.204.131 を使用します ステップ 1: 2 つの Tomcat サーバーをインストールし、それぞれポート 8080 と 8081 で実行します。 ステップ 2: 2 台の Tomcat を起動します。 ステップ3: リバースプロキシサーバーの構成 ステップ4: nginxが設定ファイルを再読み込みする ステップ5: ドメイン名を設定する ホストファイルにドメイン名とIPのマッピングを追加する 192.168.204.131 www.baidu.com 192.168.204.131 www.taobao.com 16 負荷分散複数のサーバーでサービスを提供する場合、処理のために負荷を異なるサーバーに分散する必要があり、負荷分散が必要になります。 サーバーの実際の状況に応じてサーバーの重量を調整できます。重みが大きいほど割り当てられるリクエストの数が多くなり、重みが小さいほど割り当てられるリクエストの数が少なくなります。デフォルトは1です 17 起動時に nginx を自動的に起動するように設定する (centos6.5)nginx サービスを起動するたびに、インストールディレクトリの下の /sbin に移動する必要があり、かなり面倒に感じます。 以下では、Linux (CentOS) システムで nginx を自動的に起動するように設定する方法を説明します。 1 スクリプトでnginxサービスを管理する ステップ 1: /etc/init.d/ ディレクトリに nginx ファイルを作成します。コマンドは次のとおりです。 # /etc/init.d/nginx をタッチします ステップ2: 作成したnginxファイルに次の内容を追加します まず次のコマンドを実行します: # vim /etc/init.d/nginx 次に、次の内容を追加し、nginx設定ファイルにコピーします。 #!/bin/sh # # nginx - このスクリプトはnginxデーモンを起動および停止します # # chkconfig: -85 15 # 説明: NGINX は HTTP(S) サーバーであり、HTTP(S) リバースです \ # プロキシと IMAP/POP3 プロキシ サーバー # プロセス名: nginx # 設定: /etc/nginx/nginx.conf # 設定: /etc/sysconfig/nginx # pidファイル: /var/run/nginx.pid # ソース関数ライブラリ。 . /etc/rc.d/init.d/functions # ソースネットワーク構成。 . /etc/sysconfig/ネットワーク # ネットワークが稼働していることを確認します。 [ "$NETWORKING" = "no" ] && 終了 0 nginx="/usr/sbin/nginx" prog=$(ベース名 $nginx) NGINX_CONF_FILE="/etc/nginx/nginx.conf" [ -f /etc/sysconfig/nginx ] && . /etc/sysconfig/nginx ロックファイル=/var/lock/subsys/nginx ディレクトリを作る() { # 必要なディレクトリを作成する user=`$nginx -V 2>&1 | grep "configure 引数:" | sed 's/[^*]*--user=\([^ ]*\).*/\1/g' -` if [ -z "`grep $user /etc/passwd`" ]; then ユーザー追加 -M -s /bin/nologin $user フィ options=`$nginx -V 2>&1 | grep 'configure 引数:'` オプトイン$options; を行う if [ `echo $opt | grep '.*-temp-path'` ]; then 値=`echo $opt | cut -d "=" -f 2` if [ ! -d "$value" ]; then # echo "作成中" $value mkdir -p $value && chown -R $user $value フィ フィ 終わり } 始める() { [ -x $nginx ] || 終了 5 [ -f $NGINX_CONF_FILE ] || 終了 6 ディレクトリの作成 echo -n $"$prog を開始しています: " デーモン $nginx -c $NGINX_CONF_FILE 戻り値=$? エコー [ $retval -eq 0 ] && $lockfile をタッチ $retvalを返す } 停止() { echo -n $"$prog を停止しています: " プロセスを終了する $prog -QUIT 戻り値=$? エコー [ $retval -eq 0 ] && rm -f $lockfile $retvalを返す } 再起動() { configtest || $を返しますか? 停止 睡眠1 始める } リロード() { configtest || $を返しますか? echo -n $"$prog を再ロードしています: " nginx を killproc する -HUP RETVAL=$? エコー } 強制リロード() { 再起動 } configtest() { $nginx -t -c $NGINX_CONF_FILE } rh_status() { ステータス $prog } rh_status_q() { rh_status >/dev/null 2>&1 } ケース「$1」 始める) rh_status_q && 終了 0 1ドル ;; 停止) rh_status_q || 終了 0 1ドル ;; 再起動|構成テスト) 1ドル ;; リロード rh_status_q || 終了 7 1ドル ;; 強制リロード 強制リロード ;; 状態) rh_ステータス ;; condrestart|再起動を試みる) rh_status_q || 終了 0 ;; *) echo $"使用法: $0 {start|stop|status|restart|condrestart|try-restart|reload|force-reload|configtest}" 出口2 エサック 上記のスクリプトファイルは私が作成したものではなく、nginx から公式に提供されたものです。 アドレス: http://wiki.nginx.org/RedHatNginxInitScript 注意: nginx のインストールをカスタマイズした場合は、実際の状況に応じてインストール パスと設定ファイルを変更してください。 次のようにコードをコピーします。 nginx="/usr/sbin/nginx" nginx 実行プログラムのパスに変更します。たとえば、私の場合は nginx="/usr/local/nginx/sbin/nginx" です。 次のようにコードをコピーします。 NGINX_CONF_FILE="/etc/nginx/nginx.conf" 設定ファイルのパスを変更します。例: NGINX_CONF_FILE="/usr/local/nginx/nginx.conf 変更が完了したら、スクリプトファイルを保存し、wqで終了します。 ステップ3: nginxファイルの権限を設定する # chmod a+x /etc/init.d/nginx 説明: a+x ==> すべてのユーザーが実行可能(すべてのユーザーが実行可能)は ステップ4: スクリプトを管理する この時点で、nginxスクリプトを使用してサービスを管理できます。 # /etc/init.d/nginx start サービスを開始します # /etc/init.d/nginx stop サービスを停止します # /etc/init.d/nginx restart サービスを再起動します # /etc/init.d/nginx status サービスのステータスを確認します # /etc/init.d/nginx reload 設定ファイルを更新します 2 chkconfig管理を使用する 上記の方法は、スクリプトを使用して nginx サービスを管理する機能を完了しますが、起動時に nginx が起動するように設定する必要があるなど、まだあまり便利ではありません。 現時点では、chkconfig を使用して管理できます。 ステップ1: chkconfig管理リストにnginxサービスを追加する # chkconfig --add /etc/init.d/nginx ステップ2: サービス管理サービスを利用する # service nginx start サービスを開始します # service nginx stop サービスを停止します # service nginx restart サービスを再起動します # service nginx status サービスのステータスを照会します # service nginx relaod 設定ファイルを更新します ステップ3: ターミナルモードを設定して開始する # chkconfig nginx をオンにする 17 起動時に nginx を自動的に起動するように設定する (centos7.4)ステップ1: /lib/systemd/system/ディレクトリに移動する [root@iz2z init.d]# cd /lib/systemd/system/ ステップ2: nginx.serviceファイルを作成して編集する # vim nginx.service 内容は以下のとおりです。 [ユニット] 説明=nginx サービス 後=ネットワーク.ターゲット [サービス] タイプ=フォーク 実行開始=/usr/local/nginx/sbin/nginx ExecReload=/usr/local/nginx/sbin/nginx -s 再ロード ExecStop=/usr/local/nginx/sbin/nginx -s 終了 プライベートTmp=true [インストール] WantedBy=マルチユーザー.ターゲット [単位]: サービスの説明 説明:サービスの説明 後: サービスカテゴリを説明する [サービス] サービス動作パラメータの設定 Type=forking はバックグラウンド操作を意味します ExecStartはサービスの特定の実行コマンドです ExecReloadは再起動コマンドです ExecStopは停止コマンドです PrivateTmp=Trueはサービスに独立した一時領域を割り当てることを意味します 注意: [サービス] のすべての開始、再起動、停止コマンドには絶対パスが必要です。 [インストール] 実行レベル以下のサービスインストール関連設定は、マルチユーザーに設定できます。つまり、システム実行レベルは3です。 保存して終了します。 ステップ3: 自動起動を追加する # systemctl で nginx を有効にする コンピュータを自動的に起動したくない場合は、次のコマンドを使用して自動起動をキャンセルできます。 # systemctl nginx を無効にする ステップ4: サービスを開始/停止/構成ファイルを更新/ステータスを確認する # systemctl start nginx.service nginx サービスを開始します# systemctl stop nginx.service サービスを停止します# systemctl restart nginx.service サービスを再起動させます# systemctl list-units --type=service 開始されているすべてのサービスを表示します# systemctl status nginx.service サービスの現在のステータスを表示します# systemctl enable nginx.service ブートの自動起動を設定します# systemctl enable nginx.service ブートの自動起動を停止します 一般的なエラー 警告: ディスク上の nginx.service が変更されました。ユニットを再ロードするには、「systemctl daemon-reload」を実行します。 指示に従って、コマンド systemctl daemon-reload を実行するだけです。 # systemctlデーモンリロード 18 システムを再起動してnginxを再度起動し、エラーを報告します1 断層サイト仮想マシン centos6.5 で自動起動を設定すると、再起動後にエラーなしでシステムを正常に起動できるようになります。 Centos6.5の自動起動設定については、セクション16を参照してください。 ただし、centos7.4(Alibaba Cloud 上)では、パート 17 を参照して自動起動を設定してください。システムを再起動すると、nginxが自動的に起動しないことがわかります。 ステータスを確認するには、systemctl status nginx コマンドを使用します。内容は次のとおりです。 次に、/usr/local/nginx/sbin ディレクトリに直接移動し、./nginx を実行しました。次のエラー メッセージが表示されました。 これら 2 つのプロンプトから、/var/run/nginx/ ディレクトリの下の nginx.pid ファイルが見つからないということが大まかにわかります。 2 トラブルシューティングステップ 1: cd /usr/local/nginx/conf/ ディレクトリに移動し、設定ファイル nginx.conf を編集します。 設定ファイルで次の行を見つけます: #pid logs/nginx.pid; 次のように変更します: コメントを削除し、独自のパスに変更します 変更して保存して終了 ステップ2: ディレクトリ/var/run/nginx/を作成する # mkdir /var/run/nginx -p ステップ3: nginxサービスを開始する nginx のディレクトリは sbin にあります。 正常に起動したかどうかを確認できます。 3. 障害の再発[emerg] open() "/var/run/nginx/nginx.pid" が失敗しました (2: そのようなファイルまたはディレクトリはありません) テストでは、reboot コマンドが実行されている限り、var/run/nginx および nginx フォルダーが削除されることが示されています。 毎回nginxフォルダを作成するのは非常に面倒です。我慢できません。下 この問題を解決し続けましょう。 ステップ 1: cd /usr/local/nginx/conf/ ディレクトリに移動し、設定ファイル nginx.conf を編集します。 ステップ2: /usr/local/nginxディレクトリにログフォルダを作成する # mkdir /usr/local/nginx/logs ステップ 3: /var/run/nginx/ ディレクトリ内の nginx.pid ファイルを、ステップ 2 で作成した logs フォルダーにコピーします。 # cp nginx.pid /usr/local/nginx/logs/ ステップ4: confの下のlogsフォルダをコピーする # cp -r ログ設定 ステップ 5: /usr/local/nginx/logs/ ディレクトリの nginx.pid ファイルの権限を変更します。 [root@iz2logs]# chmod 755 nginx.pid ステップ6: 再起動 # 再起動 ステップ6: nginxを起動する nginx のディレクトリは sbin にあります。 今回ようやく無事解決できました。インストール中に発生していた問題を解決しました。この時点でnginxは常に自動起動できるようになり、再起動後にnginx.pidファイルは見つかりません。それは本当に簡単なことではありません。 解決策としては、別の場所で nginx.pid ファイルを探すようにすることです。 /var/run/nginx/nginx.pid ファイルは再起動後に必ず削除されるためです。 シンプルな解決策 上記のプロセスは少し面倒です。実際には、以下の簡単な方法に従うことで直接解決できます。 nginx.conf ファイルを次のように変更します。 /usr/local/nginx/ ディレクトリにログ ディレクトリを作成します。 すると起動し、再起動しても削除されません。 この方法では、次のログ ファイルの構成も簡素化され、# error_log logs/error.log info の前の "#" を削除できます。 error_log ログ/error.log 情報; 19 ログファイルの場所の設定ステップ 1: cd /usr/local/nginx/conf/ ディレクトリに移動し、設定ファイル nginx.conf を編集します。 ステップ 2: このパスが存在することを確認します。この構成のディレクトリを直接作成できます。 # mkdir -p /var/log/nginx/ ステップ3: 構成ファイルを更新する # /usr/local/nginx/sbin/nginx -s リロード 要約するnginx のインストールと設定に関するこの記事はこれで終わりです。より関連性の高い nginx のインストールと設定のコンテンツについては、123WORDPRESS.COM の以前の記事を検索するか、以下の関連記事を引き続き参照してください。今後とも 123WORDPRESS.COM をよろしくお願いいたします。 以下もご興味があるかもしれません:
|
<<: mysql IS NULL インデックスケースの説明を使用する
>>: Linux に nodejs 環境とパス構成をインストールするための詳細な手順
この記事では、主に、IDEA を MYSQL データベースに接続するための構成時に失敗する問題の解決...
この記事では、参考までに、Vue の具体的なコードを共有して、簡単なショッピングカートを実装します。...
目次序文スタイル機能説明初期化コードイベントリスナーの追加リスナーツールバーモニターテーブル行ツール...
1. ナビゲーション: 順序なしリストとその他のラベル要素ナビゲーションを記述するために最も一般的に...
序文最近、弊社では mbp の設定をしており、ssh を使うことが多くなりました。複雑なコマンドを書...
あなたはこの質問について考えたことがあるでしょうか?デュアルアクティブが構成されている場合、データル...
テーブル構造とそのデータをコピーする次のステートメントは、データを新しいテーブルにコピーします。注:...
1. 本番環境でMySQLのデッドロックを監視し、デッドロックの可能性を減らす方法まず、デッドロック...
序文最近、仕事の都合で、APP ショッピングカートの注文支払いに取り組んでいました。テスト中にバグが...
目次1. SVGを使用する2. fontAwesomeを使用する3 ソース4 結論テクノロジースタッ...
このチュートリアルの動作環境: Windows 7 システム、nodejs バージョン 12.19....
目次水波効果実装を見てみましょう水の波紋のデフォルトスタイルをカスタマイズする水の波紋の位置と直径を...
背景開発中、特定の状況でビジネス ロジックをバッチ処理するためのスクリプトが必要になる場合があります...
目次1. 糖衣構文とは何ですか? 2. VUE の構文糖とは何ですか? 1. 最も一般的な構文シュガ...
データは企業の中核資産であり、企業にとって最も重要なタスクの 1 つです。注意しないと、データが意図...