nginx と他のサーバー間のパフォーマンスの比較:
Tomcat サーバーは Java 言語を指向しており、重量のあるサーバーですが、nginx は軽量のサーバーです。 Apache サーバーは安定しており、オープン ソースであり、クロスプラットフォームです。ただし、Apache サーバーは高い同時実行性をサポートしていません。Nginx は数百万の TCP 接続と 100,000 を超える同時接続の処理をサポートでき、優れたクロスプラットフォーム サーバーです。
nginx の主な利点は、高い同時実行性、シンプルなデプロイメント、低メモリ消費、低コストなどを実現できることです。主な欠点は、書き換え機能が十分強力ではないことと、Apache ほど多くのモジュールがないことです。
この記事では、主に一般的で実用的な nginx tomcat リバース プロキシと負荷分散の導入について説明します。この記事の各部分にはあまり関連性がないため、必要に応じて個別に学習できます。
nginx リバース プロキシ プロセスを見てみましょう:
nginx 負荷分散プロセス (アクセスの負担が少ないサーバーが自動的に選択されます):
##全体的なアーキテクチャは基本的に明確になったので、詳細に実装してみましょう:
ヒント: この記事では、基本的に ssh を使用します。関連する操作については、Windows で Putty をインストールすることも、Mac でシステムに付属のターミナル ツールを直接使用することもできます。
1. Linux で nginx サーバーを構築しますサーバー 192.168.2.20 に nginx サーバーをセットアップします:
1) nginx をダウンロードします
2) サーバー nginx インストール パッケージをアップロードします
$ scp ~/downloads/nginx-1.10.2.tar.gz root@192.168.2.20:/usr/local
3) nginx をインストールします
$ ssh root@192.168.2.20 //ssh连接 # yum -y install gcc gcc-c++ autoconf automake //gcc、gcc-c++的库文件 # yum install -y pcre pcre-devel //安装nginx依赖包 # yum install -y zlib zlib-devel
注: -y は、検出された場合に「はい」を意味し、autoconf は自動構成を意味し、automake は自動コンパイルを意味します。
# cd /usr/local # tar -zxvf nginx-1.10.2.tar.gz //解压缩 # cd nginx-1.10.2 //切换到该目录下 # ./configure //配置 # make # make install //安装
インストールが完了したかどうかを確認します:
# cd /usr/local # ls //如果存在nginx文件夹,则安装成功
上記のインストール手順とディレクトリ設定の後、nginx の起動プログラムは /usr/local/nginx/sbin/nginx となり、デフォルトでは設定ファイルは /usr /local/nginx/conf/nginx.conf ですが、nginx.conf を直接編集することはお勧めできません。通常、新しい設定ファイルを作成して、ポート、リバース プロキシ パスなどを変更することを選択します。新しい構成ファイルの .
2. nginx の起動、停止、信号制御1) nginx サーバーを起動します (形式: nginx 実行ファイル -c nginx 設定ファイル):
# /usr/local/nginx/sbin/nginx -c /usr/local/nginx/conf/nginx.conf
2) nginx サーバーを停止します:
nginx サーバーを停止するには、まず nginx (マスター プロセス) のメイン プロセス番号をクエリする必要があります。ここでのクエリは 1060 を取得すると仮定します (便宜上)。次のデモ):
# ps -ef|grep nginx
nginx サーバーを停止する方法を見てみましょう。nginx を停止するには 3 つの方法があります:
簡単停止:
# ps -ef|grep nginx //查看nginx的主进程号(master process),假设此处查询得到1060 # kill -quit 1060
クイック停止:
# kill -term 1060
強制停止:
# pkill -9 nginx
3) nginx サーバーを再起動します:
nginx 設定ファイルを変更した場合、有効にするために再起動する必要があります。また、再起動する前に構成ファイルが正しいことを確認してから、再起動操作を実行する必要があります:
# /usr/local/nginx/sbin/nginx -t -c /usr/local/nginx/conf/nginx.conf //验证 # /usr/local/nginx/sbin/nginx -s reload //重启
4) nginx サーバーのスムーズなアップグレード
スムーズなアップグレードでは、実行中のプロセスは停止しません。プロセスはリクエストの処理を継続しますが、新しいリクエストは受け付けなくなります。これらの古いプロセスは、まだ処理中のリクエストを処理した後に停止します。このスムーズなアップグレード プロセス中に、新しく開かれたプロセスが処理されます。これはスムーズなアップグレードです。
# /usr/local/nginx/sbin/nginx -v //查看当前版本
以下はスムーズなアップグレードです:
# cd /usr/local # tar -zxvf nginx-1.11.6.tar.gz //解压缩 新版本nginx # cd nginx-1.11.6 //切换到该目录下 # ./configure //配置 # make # cd /usr/local/nginx/sbin //打开 旧版本nginx可执行文件位置 # cp nginx nginx.old //备份 旧版本nginx可执行文件,防止升级错误而无法恢复 # cp -rfp /usr/local/nginx-1.11.6/objs/nginx /usr/local/nginx/sbin //复制新版本可执行文件到旧版本处 # rm -f /usr/local/nginx-1.11.6.tar.gz //善后工作 删除压缩文件 # rm -rf /usr/local/nginx-1.11.6 //删除文件夹
この時点で、nginx サーバーのスムーズなアップグレードは成功しています。
3. nginx での負荷分散の実装引き続き、最初に ssh に接続してから、次の操作を実行します (通常、デフォルトの main を変更することは推奨されません)構成ファイル nginx.conf が存在するため、サーバーのセキュリティを確保するために、次のように新しい負荷分散構成ファイル fzjh.conf を作成します):
# cd /usr/local/nginx/conf # touch fzjh.conf # vi fzjh.conf //用vi编辑器打开文件,然后按键盘的i
注意:vi编辑器中,键盘按 i 进入 insert 状态,按 esc 退出 insert 状态。
然后输入以下配置代码(注释部分按需开启):
#设置低权限用户,为了安全而设置的 user nobody; #工作衍生进程数 worker_processes 4; #设置错误文件存放路径 #error_log logs/error.log; #error_log logs/error.log notice; #error_log logs/error.log info; #设置pid存放路径(pid是控制系统中重要文件) #pid logs/nginx.pid; #设置最大连接数 events{ worker_connections 1024; } http{ #主要是用于设置一组可以在proxy_pass和fastcgi_pass指令中使用额代理服务器,默认负载均衡方式为轮询 upstream tomcat_client { #设置同一个cookie的两次/多次请求,请求的是同一台服务器 ip_hash; #weight权重,默认1,权重越大访问概率越大,backup备用服务器,服务器全部崩溃后启动 server 192.168.2.21:8080 weight=5; server 192.168.2.22:8080 weight=5; server 192.168.2.23:8080 weight=5 backup; } #开启gzip压缩,开启后,访问网页会自动压缩 #gzip on; #指定服务器的名称和参数 server { listen 80; server_name test.nginxtest.net; #设置字符 #charset koi8-r; #location / 指用根目录做负载均衡 location / { proxy_pass http://tomcat_client; proxy_redirect default; #设置代理 proxy_set_header host $host; proxy_set_header x-real-ip $remote_addr; } } }
输入完成后按下esc,然后输入:
:wq!
就可以保存并退出负载均衡的配置文件了,下来我们加载我们的配置文件:
# /usr/local/nginx/sbin/nginx //启动nginx # /usr/local/nginx/sbin/nginx -c /usr/local/nginx/conf/fzjh.conf //加载配置文件
如果存在端口占用,可以使用如下命令kill掉nginx的程序:
# killall -9 nginx
至此,nginx服务器部署完毕。下面我们开始部署负载均衡下的那三台真实提供数据的服务器。
4.linux下安装jdk
我们在192.168.2.21、192.168.2.22、192.168.2.23这三台服务器安装jdk,以192.168.2.21为例:
1)下载jdk
2)上传服务器jdk安装包
$ scp ~/downloads/jdk-8u112-linux-x64.tar.gz root@192.168.2.21:/usr/local
3)安装jdk
$ ssh root@192.168.2.21 //ssh连接 # cd /usr/local # tar -zxvf jdk-8u112-linux-x64.tar.gz //解压缩 # mv jdk1.8.0_112/ jdk //将jdk1.8.0_112重命名为jdk # vi /etc/profile //用vi编辑器打开文件,然后按键盘的i
下来我们移动光标至最后面,两个回车换行,然后添加下面代码配置java的环境变量:
java_home="/usr/local/jdk" class_path="$java_home/lib:$java_home/jre/lib" path=".:$path:$java_home/bin" catalina_home="/usr/local/tomcat" export java_home catalina_home
输入完成后按下esc,然后输入:
:wq!
就可以保存并退出了。此时我们想让其立即生效,则需要继续输入命令:
# source /etc/profile
此时profile文件就更新了,此时环境变量就配置成功了。下面我们验证一下jdk是否安装配置成功:
# java -version
如果返回java版本号则安装成功。
5.linux下搭建tomcat服务器
我们在192.168.2.21、192.168.2.22、192.168.2.23这三台服务器搭建tomcat服务器,以192.168.2.21为例:
1)下载tomcat
2)上传服务器tomcat安装包
$ scp ~/downloads/apache-tomcat-8.5.9.tar.gz root@192.168.2.21:/usr/local
3)安装tomcat
$ ssh root@192.168.2.21 //ssh连接 # cd /usr/local # tar -zxvf apache-tomcat-8.5.9.tar.gz //解压缩 # mv apache-tomcat-8.5.9/ tomcat //将apache-tomcat-8.5.9重命名为tomcat
4)设置tomcat网页文件目录
tomcat默认网页文件的路径是 /usr/local/tomcat/webapps/root,但是一般我们不在这里存放,我们在linux根目录新建 data/wwwroot 目录:
# mkdir /data //新建目录 # mkdir /data/www # mkdir /data/www/root # cd /usr/local/tomcat/conf # vi server.xml //用vi编辑器打开server.xml配置文件,打开后键盘按i
我们找到host节点下的appbase=”webapps”,修改为:appbase="/data/www"
输入完成后按下esc,然后输入:
:wq!
就可以保存并退出配置文件了,然后重启tomcat即可生效,此时tomcat的网页文件目录就变成了 /data/www/root 了。
配置tomcat环境变量,我们在配置jdk的时候已经配置好了,可以回头看一下。
6.tomcat的启动、停止
1)启动tomcat服务器
# /usr/local/tomcat/bin/startup.sh
2)停止tomcat服务器:
# /usr/local/tomcat/bin/shutdown.sh
到此,nginx + tomcat 负载均衡 集群 已经部署完毕了。不过有了服务器,肯定也少不了数据库,下面拓展一下linux下安装mysql数据库的方法。
7.linux下安装mysql数据库
我们重新找了 192.168.2.30 这台服务器上mysql数据库:
1)下载mysql数据库
2)上传mysql数据库安装包
$ scp ~/downloads/mysql-5.1.51.tar.gz root@192.168.2.30:/usr/local
3)安装mysql
$ ssh root@192.168.2.30 //ssh连接 # groupadd mysql //建立mysql的组 # useradd mysql -g mysql //增加用户mysql到mysql的组中 # yum list|grep ncurses # yum -y install ncurses-devel # yum install ncurses-devel # cd /usr/local # tar -zxvf mysql-5.1.51.tar.gz //解压缩 # cd mysql-5.1.51 # ./configure --prefix=/usr/local/mysql --with-mysqld-ldflags=-all-static --with-client-ldflags=-all-static --with-readline --with-sll //配置,设置安装路径,设置编译mysql不带共享库,设置编译client不带共享库,设置要以rmp的方式安装tar包,设置以rmp的方式安装opensll # make # make install //安装,在make[4]的时候等待时间比较长,几分钟到十几分钟,都是正常现象 # /usr/local/mysql/bin/mysql_install_db --user //对安装好的mysql进行初始化 # cp ./support-files/mysql.server /etc/init.d/mysql //将mysql启动服务复制到系统中并重命名为mysql # cp ./support-files/my-medium.cnf /etc/my.cnf //复制规则文件 # chmod 755 /etc/init.d/mysql //更改文件权限 //文件权限由三个数字组成,第一位:文件拥有者的权限,第二位:文件拥有者同组的人的权限,第三位:文件拥有者非同组人的权限 //7:可读可写可执行,5:可读可执行 # cd /usr/local/mysql # chown -r mysql . //将 /usr/local/mysql 的拥有者更改为mysql # chgrp -r mysql . //将 /usr/local/mysql 归到mysql组中 # ps -ef|grep mysql # kill -9 3632 //将mysql所有进程号依次杀死,这里假定是3632 # /usr/local/mysql/bin/mysql_install_db --user=mysql //再次初始化 # service mysql start //启动mysql # /usr/local/mysql/bin/mysqladmin -u root password '123456' //设置mysql密码
到此mysql就安装成功了,下来我们测试一下:
# /usr/local/mysql/bin/mysql -u root -p
如果输入密码后可以登进mysql,那么就测试成功。下面我们设置mysql允许开启远程连接:
# /usr/local/mysql/bin/mysql -u root -p mysql> grant all privileges on *.* to 'root'@'%' identified by '123456' with grant option; //创建用户用于远程连接(root:用户名,%:所有电脑都可以连接,也可以设置某个ip地址运行连接,123456:密码) mysql> flush privileges; //立即生效
下面我们查询一下数据库的用户:
mysql> select distinct concat('user: ''',user,'''@''',host,''';') as query from mysql.user; mysql> \q //登出
找一台电脑测试一下,使用navicat远程登录mysql,登进成功。
以上がNginx+Tomcat リバースプロキシ、ロードバランシング、クラスター展開方法の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

Nginxは、高い並行性と静的コンテンツの処理に適していますが、Apacheは動的な内容と複雑なURL書き換えに適しています。 1.Nginxは、高い並行性に適したイベント駆動型モデルを採用しています。 2。Apacheは、動的なコンテンツに適したプロセスモデルまたはスレッドモデルを使用します。 3。NGINX構成は簡単ですが、Apache構成は複雑ですが、より柔軟です。

NginxとApacheにはそれぞれ独自の利点があり、選択は特定のニーズに依存します。 1.NGINXは、単純な展開を備えた高い並行性に適しており、構成の例には仮想ホストとリバースプロキシが含まれます。 2。Apacheは複雑な構成に適しており、展開も同様に簡単です。構成の例には、仮想ホストとURL書き換えが含まれます。

Nginxunitの目的は、Webアプリケーションの展開と管理を簡素化することです。その利点には、次のものが含まれます。1)Python、PHP、Go、Java、node.jsなどの複数のプログラミング言語をサポートします。 2)動的構成と自動リロード関数を提供します。 3)統一されたAPIを介してアプリケーションライフサイクルを管理します。 4)非同期I/Oモデルを採用して、高い並行性と負荷分散をサポートします。

Nginxは2002年に開始され、C10Kの問題を解決するためにIgorsysoevによって開発されました。 1.Nginxは、高性能の非同期アーキテクチャであり、高い並行性に適した高性能Webサーバーです。 2。システムのパフォーマンスと信頼性を向上させるために、リバースプロキシ、ロードバランス、キャッシュなどの高度な機能を提供します。 3。最適化手法には、HTTP/2とセキュリティ構成を使用した、ワーカープロセスの数の調整、GZIP圧縮の有効化が含まれます。

NginxとApacheの主なアーキテクチャの違いは、Nginxがイベント駆動型の非同期非ブロッキングモデルを採用し、Apacheはプロセスまたはスレッドモデルを使用することです。 1)nginxは、静的な内容と逆プロキシに適したイベントループとI/O多重化メカニズムを介して、高電流接続を効率的に処理します。 2)Apacheは、非常に安定しているがリソース消費量が高いマルチプロセスまたはマルチスレッドモデルを採用しており、リッチモジュールの拡張が必要なシナリオに適しています。

Nginxは、高い同時コンテンツと静的コンテンツの処理に適していますが、Apacheは複雑な構成と動的コンテンツに適しています。 1。NGINXは、交通量の多いシナリオに適した同時接続を効率的に処理しますが、動的コンテンツを処理するときは追加の構成が必要です。 2。Apacheは、複雑なニーズに適したリッチモジュールと柔軟な構成を提供しますが、並行性のパフォーマンスが低いです。

NginxとApacheにはそれぞれ独自の利点と欠点があり、選択は特定のニーズに基づいている必要があります。 1.Nginxは、非同期の非ブロッキングアーキテクチャのため、高い並行性シナリオに適しています。 2。Apacheは、モジュラー設計のため、複雑な構成を必要とする低変動シナリオに適しています。

Nginxunitは、複数のプログラミング言語をサポートし、動的構成、ゼロダウンタイム更新、組み込みのロードバランシングなどの機能を提供するオープンソースアプリケーションサーバーです。 1。動的構成:再起動せずに構成を変更できます。 2。多言語サポート:Python、Go、Java、PHPなどと互換性があります。 4。ビルトインロードバランシング:リクエストは、複数のアプリケーションインスタンスに配布できます。


ホットAIツール

Undresser.AI Undress
リアルなヌード写真を作成する AI 搭載アプリ

AI Clothes Remover
写真から衣服を削除するオンライン AI ツール。

Undress AI Tool
脱衣画像を無料で

Clothoff.io
AI衣類リムーバー

Video Face Swap
完全無料の AI 顔交換ツールを使用して、あらゆるビデオの顔を簡単に交換できます。

人気の記事

ホットツール

SecLists
SecLists は、セキュリティ テスターの究極の相棒です。これは、セキュリティ評価中に頻繁に使用されるさまざまな種類のリストを 1 か所にまとめたものです。 SecLists は、セキュリティ テスターが必要とする可能性のあるすべてのリストを便利に提供することで、セキュリティ テストをより効率的かつ生産的にするのに役立ちます。リストの種類には、ユーザー名、パスワード、URL、ファジング ペイロード、機密データ パターン、Web シェルなどが含まれます。テスターはこのリポジトリを新しいテスト マシンにプルするだけで、必要なあらゆる種類のリストにアクセスできるようになります。

メモ帳++7.3.1
使いやすく無料のコードエディター

DVWA
Damn Vulnerable Web App (DVWA) は、非常に脆弱な PHP/MySQL Web アプリケーションです。その主な目的は、セキュリティ専門家が法的環境でスキルとツールをテストするのに役立ち、Web 開発者が Web アプリケーションを保護するプロセスをより深く理解できるようにし、教師/生徒が教室環境で Web アプリケーションを教え/学習できるようにすることです。安全。 DVWA の目標は、シンプルでわかりやすいインターフェイスを通じて、さまざまな難易度で最も一般的な Web 脆弱性のいくつかを実践することです。このソフトウェアは、

ドリームウィーバー CS6
ビジュアル Web 開発ツール

MinGW - Minimalist GNU for Windows
このプロジェクトは osdn.net/projects/mingw に移行中です。引き続きそこでフォローしていただけます。 MinGW: GNU Compiler Collection (GCC) のネイティブ Windows ポートであり、ネイティブ Windows アプリケーションを構築するための自由に配布可能なインポート ライブラリとヘッダー ファイルであり、C99 機能をサポートする MSVC ランタイムの拡張機能が含まれています。すべての MinGW ソフトウェアは 64 ビット Windows プラットフォームで実行できます。

ホットトピック









