Tomcatサーバーは、軽量なアプリケーションサーバではなく、一般的に中小のシステムと同時ユーザーに使用されている多くの場所ある無料のオープンソースのWebアプリケーションサーバでは、好ましい開発とテストJSPプログラムです。一般に、そのような処理機能を備えたHTMLページとしてTomcat WebサーバーのApacheやnginxのであるが、しかし、理由ははるかに少ないapacheの静的なページやnginxのを扱う能力のために、それだけでは動作し、TomcatサーブレットとJSPコンテナとして一般的です次のようにバックエンドは、Tomcatアプリケーション・シナリオは次のとおりです。
ユーザー・アクセスは、常に、apacheの/ nginxのサーバーで、その後、apacheの/ nginxのことで、サーバー・プロセスのTomcatサーバに転送するたびに、データへのユーザーアクセスは同じですが、apacheの/ nginxのを作るために使用されるように、すべてのサーバーは、共有ストレージ・サーバに接続されています負荷分散として知られているスケジューリング、少し説明のロードバランシング。。。
一般的に、原因の可能な単一障害点と、あまりにも多くの複雑で多様な顧客の要求やその他の問題に対処することができないとTomcatのサイトは、本番環境で単独で使用することはできません、我々はこれらの問題に対処するためのロードバランシングを使用する必要があります。
nginxのは、50,000の同時接続までの応答をサポートして静的リソース、安定、およびメモリ、CPUやその他のシステムリソースの消費に対処するための強力な能力を持っている非常に良いhttpサーバソフトウェアは、非常に低いです。現在では、多くの大規模なサイトでは、同時実行の負荷全体のサイト改善するためのリバースプロキシとロードバランサのバックエンドWebアプリケーションとしてnginxのサーバーを使用しています。
次のように共有ストレージ・サーバ、および環境を展開していない、簡単にするために、以下の環境を設定し、開始します。
まず、展開前の準備:
3台のサーバを展開するcentos7を使用している次のように、使用されるソフトウェアの展開プロセスは、次のとおりです。
- centos7システムイメージ。
- リンク:nginxの公式ウェブサイトからダウンロードできるTomcatのソースパッケージには、私はまた、(ISOイメージファイルとしてパッケージ)からダウンロードするためのリンクを提供することができますhttps://pan.baidu.com/s/1hQOG-e9aaW8V2kvbBSzIxg
抽出コード:9pdvを
第二に、Tomcatサーバーを設定します。
1は、私がここで停止し、ファイアウォールに直接関連するトラフィックを解放するために、独自のファイアウォールを構成し、省略され、ここで、ファイアウォールの設定で、Tomcatのデフォルトのポート番号は8080です(192.168.1.1サーバのTomcatにデプロイするために始めた、nginxのデフォルトポート番号)は80です。
[root@localhost ~]# java -version #查看JDK是否安装,若没有,自行安装
openjdk version "1.8.0_161"
OpenJDK Runtime Environment (build 1.8.0_161-b14)
OpenJDK 64-Bit Server VM (build 25.161-b14, mixed mode)
[root@localhost media]# tar zxf apache-tomcat-8.5.16.tar.gz -C /usr/src #解压Tomcat包
[root@localhost media]# cd /usr/src/
[root@localhost src]# mv apache-tomcat-8.5.16/ /usr/local/tomcat8
#Tomcat不用编译安装,解压后即可用
[root@localhost src]# mkdir -p /web/webapp1 #建立Java的web站点,用于存放网站文件
[root@localhost src]# vim /web/webapp1/index.jsp #建立一个index.jsp的测试页面
<%@ page language="java" import="java.util.*" pageEncoding="UTF-8"%>
<html>
<head>
<title>JSP test1 page</title>
</head>
<body>
<% out.println("www.test1111.com");%>
</body>
</html>
[root@localhost src]# vim /usr/local/tomcat8/conf/server.xml #修改Tomcat的主配置文件
......................................
<Host name="localhost" appBase="webapps"
unpackWARs="true" autoDeploy="true"> #定位到该行,然后添加下面两行内容
<Context docBase="/web/webapp1" path="" reloadable="false">
</Context>
#docBase:web应用的文档默认目录;
#path=""设置默认“类;”
#reloadable设置监视“类”是否变化;
[root@localhost ~]# /usr/local/tomcat8/bin/startup.sh
#启动服务,停止服务的话,只需将startup.sh换为shutdown.sh即可。
Using CATALINA_BASE: /usr/local/tomcat8
Using CATALINA_HOME: /usr/local/tomcat8
Using CATALINA_TMPDIR: /usr/local/tomcat8/temp
Using JRE_HOME: /usr
Using CLASSPATH: /usr/local/tomcat8/bin/usr/local/tomcat8/bin/tomcat-juli.jar
Tomcat started.
[root@localhost src]# netstat -antp | grep 8080 #查看默认端口8080是否在监听状态
tcp6 0 0 :::8080 :::* LISTEN 13220/java
マシンのテストアクセス:192.168.1.1:8080、以下のテストページを参照してください。
この時点で、Tomcatのの192.168.1.1の設定が完了している、別のTomcatサーバ設定192.168.1.2と192.168.1.1まったく同じ設定、サーバ192.168.1.2に再び上記の構成、それの設定が、テストするために私たちは、各サーバへのアクセスが同じではありません見ることができるようにあなたは、効果がロードバランシングを見ることができたとき、あなたはページTomcatサーバー192.168.1.2と192.168.1.1をテストする必要が同じページではありません。
しかし、実際の運用環境では、2回のTomcatのアクセスがユーザーにサービスを提供するサーバーに関係なく、同じ共有ストレージサーバーを使用する必要があり、ユーザーは、ページが同じでなければなりません受け取ります。
以下のように自身が再びそれにサーバ192.168.1.2に設定の上、テストページコンテンツサーバ192.168.1.2は、それを変更します。
[root@localhost src]# vim /web/webapp1/index.jsp
<%@ page language="java" import="java.util.*" pageEncoding="UTF-8"%>
<html>
<head>
<title>JSP test1 page</title>
</head>
<body>
<% out.println("www.test22222222222222.com");%>
</body>
</html>
第三に、設定nginxのサーバー(IP:192.168.1.1):
1、nginxのをインストールします。
[root@localhost ~]# yum -y install pcre-devel zlib-devel openssl-devel
#安装依赖包
[root@localhost ~]# useradd www -s /bin/false #创建运行用户
[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=www --group=www --with-file-aio --with-http_stub_status_module --with-http_gzip_static_module --with-http_flv_module && make && make install #编译安装
[root@localhost nginx-1.12.0]# vim /usr/local/nginx/conf/nginx.conf #编辑主配置文件
.............................
#gzip on; #定位到该行,写入下面四行
upstream tomcat_server {
server 192.168.1.1:8080 weight=1;
server 192.168.1.2:8080 weight=1;
}
#写到这里结束
#weight参数表示权重,权重越高,表示被分配到的概率越大。
#为了测试效果明显,这里将权重设置为一样
server {
listen 80;
server_name localhost;
......................
location / {
root html;
index index.html index.htm;
proxy_pass http://tomcat_server; #定位到该{ }中,写入该行,“http://”后面的名字要和上面添加的upstream项后面的名字一致,才可实现调度。
}
2、nginxのの最適制御:
[root@localhost nginx-1.12.0]# ln -s /usr/local/nginx/sbin/nginx /usr/local/sbin/
#创建主程序的链接文件
[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"
case "$1" in
start)
$PROG
;;
stop)
kill -s QUIT $(cat $PIDF)
;;
restart)
$0 stop
$0 start
;;
reload)
kill -s HUP $(cat $PIDF)
;;
*)
echo "USAGE:$0 {start | stop | restart | reload}"
exit 1
esac
exit 0
[root@localhost ~]# chmod +x /etc/init.d/nginx #添加执行权限
[root@localhost ~]# chkconfig --add nginx #添加为系统服务
[root@localhost nginx-1.12.0]# nginx -t #检查主配置文件是否有误
nginx: the configuration file /usr/local/nginx/conf/nginx.conf syntax is ok
nginx: configuration file /usr/local/nginx/conf/nginx.conf test is successful
[root@localhost ~]# systemctl start nginx #启动Nginx服务,以确认脚本的正常运行
[root@localhost ~]# netstat -anpt | grep nginx #查看80端口是否处于监听状态
tcp 0 0 0.0.0.0:80 0.0.0.0:* LISTEN 90475/nginx: master
第四に、テストにアクセスします。
次のようにこれまでのところ、展開が完了した、と今でクライアントアクセスサーバーnginxのが192.168.1.1のテストを使用し、効果は次のとおりです。
最初の訪問は、次のインタフェースが表示されます。
次のインタフェースが表示されますページを更新
あなたは私たちの訪問は、nginxのサーバーで、アクセス要求は、実際にTomcatサーバーを処理され、各アクセス要求にTomcatサーバが処理するために異なっている、効果も明らかであることがわかります。
展開中に遭遇した小さな問題:最後に書かれてV.
テストにアクセスする際にTomcatサーバーのプロファイルの変更後、訪問はまだTomcatのに付属しているデフォルトのページで確認するために、少しは次のように、数回起動し、Tomcatサービスを停止するには、次のコマンドを使用しようと、困惑しましたA:
[root@localhost webapp1]# /usr/local/tomcat8/bin/shutdown.sh #停止服务
Using CATALINA_BASE: /usr/local/tomcat8
Using CATALINA_HOME: /usr/local/tomcat8
Using CATALINA_TMPDIR: /usr/local/tomcat8/temp
Using JRE_HOME: /usr
Using CLASSPATH:/usr/local/tomcat8/bin/bootstrap.jar:/usr/local/tomcat8/bin/tomcat-juli.jar
[root@localhost webapp1]# /usr/local/tomcat8/bin/startup.sh #启动服务
Using CATALINA_BASE: /usr/local/tomcat8
Using CATALINA_HOME: /usr/local/tomcat8
Using CATALINA_TMPDIR: /usr/local/tomcat8/temp
Using JRE_HOME: /usr
Using CLASSPATH:/usr/local/tomcat8/bin/bootstrap.jar:/usr/local/tomcat8/bin/tomcat-juli.jar
Tomcat started.
このサービスは開始して、問題の停止であってもよいし、本サービスに行かないと、他のサービスは同じではありません:
nginxのサービスが停止した後、次のようになり、見つけ出すされているポート番号を確認してください。
[root@localhost ~]# systemctl stop nginx
[root@localhost ~]# netstat -anpt | grep nginx #Nginx服务停止后,什么都查不到
[root@localhost ~]#
そして、Tomcatサービスが停止した後、情報を見つける前に、瞬間を待った後、(TIME_WAIT状態に起動時の状態を聞く)以下のステータスがありますポート番号を確認してください。
[root@localhost webapp1]# netstat -antp | grep 8080
tcp6 0 0 ::1:56448 ::1:8080 TIME_WAIT
一番下に取得しないでください、最後の結果がうまく出てきたが、また、私はこのような状況を初めて会いました。