Tomcat(二):Nginx反向代理实现Tomcat动静分离
实验拓扑:

实验环境:
OS:CentOS-6.7-x86_64
Nginx:
IP:192.168.1.4
Tomcat:
IP:192.168.1.5
实验流程:
Tomcat:
先安装Jvm:openjdk:
1[root@node1 ~]# yum install java-1.7.0-openjdk 2[root@node1 ~]# java -version 3java version "1.7.0_79" 4OpenJDK Runtime Environment (rhel-2.5.5.4.el6-x86_64 u79-b14) 5OpenJDK 64-Bit Server VM (build 24.79-b02, mixed mode)
安装tomcat:
1[root@node1 ~]# tar xf apache-tomcat-7.0.65.tar.gz -C /usr/local/ 2[root@node1 ~]# cd /usr/local/ 3[root@node1 local]# ln -sv apache-tomcat-7.0.65 tomcat 4"tomcat" -> "apache-tomcat-7.0.65" 5[root@node1 ~]# vim /etc/profile.d/tomcat.sh 6export CATALINA_HOME=/usr/local/tomcat 7export PATH=$CATALINA_HOME/bin:$PATH 8[root@node1 ~]# source /etc/profile.d/tomcat.sh
提供脚本:
1[root@node1 ~]# cat /etc/rc.d/init.d/tomcat 2#!/bin/sh 3# Tomcat init script for Linux. 4# 5# chkconfig: 2345 96 14 6# description: The Apache Tomcat servlet/JSP container. 7# JAVA_OPTS='-Xms64m -Xmx128m' 8JAVA_HOME=/usr/lib/jvm/jre 9CATALINA_HOME=/usr/local/tomcat 10export JAVA_HOME CATALINA_HOME 11 12case $1 in 13start) 14 exec $CATALINA_HOME/bin/catalina.sh start ;; 15stop) 16 exec $CATALINA_HOME/bin/catalina.sh stop;; 17restart) 18 $CATALINA_HOME/bin/catalina.sh stop 19 sleep 2 20 exec $CATALINA_HOME/bin/catalina.sh start ;; 21*) 22 echo "Usage: `basename $0` {start|stop|restart}" 23 exit 1 24 ;; 25esac 26[root@node1 ~]# chmod +x /etc/rc.d/init.d/tomcat 27[root@node1 ~]# chkconfig tomcat --add
定义管理页面用户名及密码:
1[root@node1 ~]# cd /usr/local/tomcat/conf 2[root@node1 conf]# vim tomcat-users.xml 3<role rolename="manager-gui"/> 4 <role rolename="admin-gui"/> 5 <user username="tomcat" password="tomcat" roles="manager-gui,admin-gui"/> 6[root@node1 conf]# service tomcat start 7[root@node1 conf]# chkconfig tomcat on
访问测试:

部署站点文件:
1[root@node1 ~]# mkdir -p /tomcat/webapps 2[root@node1 ~]# unzip JspRun\!_6.0.0_GBK.zip 3[root@node1 ~]# mv upload /tomcat/webapps/jsprun 4[root@node1 ~]# cd /tomcat/webapps 5[root@node1 webapps]# chmod -R 777 jsprun 6[root@node1 webapps]# cd jsprun 7[root@node1 jsprun]# vim config.properties 8dbhost = 192.168.1.5 9dbport=3306 10dbuser = jruser 11dbpw = jrpass 12dbname = jrdb
定义虚拟主机,并重启tomcat:
1[root@node0 ~]# cd /usr/local/tomcat 2[root@node0 tomcat]# vim conf/server.xml 3 4<Engine name="Catalina" defaultHost="node1.chencer.org"> 5 6<Host name="node1.chencer.org" appBase="/tomcat/webapps" unpackWARs="true" autoDeploy="true"> 7<Context path="/bbs" docBase="jsprun" /> 8</Host> 9[root@node1 ~]# service tomcat restart
安装并启动mysql:
1[root@node0 mysql-5.5-rpm]# yum install MySQL-shared-compat-5.5.48-1.el6.x86_64.rpm MySQL-client-5.5.48-1.el6.x86_64.rpm MySQL-server-5.5.48-1.el6.x86_64.rpm 2[root@node0 ~]# service mysql start 3[root@node0 ~]# chkconfig mysql on
创建数据库,并赋予权限:
1[root@node0 ~]# mysql 2mysql> create database jrdb; 3Query OK, 1 row affected (0.00 sec) 4mysql> grant all on jrdb.* to 'jruser'@'192.168.1.5' identified by 'jrpass'; 5Query OK, 0 rows affected (0.00 sec) 6mysql> flush privileges; 7Query OK, 0 rows affected (0.00 sec)
安装站点,并访问测试:

Nginx:
安装并配置Nginx:
[root@node0 ~]# yum install nginx
动态页面重定向至tomcat:
1[root@node0 ~]# cd /etc/nginx/conf.d/ 2[root@node0 conf.d]# vim default.conf 3server { 4 listen 80; 5 server_name node0.chencer.org; 6 index index.jsp; 7 8 location ~* \.(jsp|do)$ { 9 proxy_pass http://192.168.1.5:8080; 10 } 11} 12[root@node0 conf.d]# service nginx start 13[root@node0 conf.d]# chkconfig nginx on
访问测试:

部署站点静态文件:
1[root@node0 ~]# mkdir -p /web/jsprun 2[root@node0 ~]# scp -r node1:/tomcat/webapps/jsprun/* /web/jsprun/
编辑配置文件:
1[root@node0 conf.d]# vim default.conf 2server { 3 listen 8080; 4 server_name 192.168.1.4; 5 index index.jsp; 6 location / { 7 root /web/jsprun; 8 index index.html; 9 } 10} 11 12server { 13 listen 80; 14 server_name node0.chencer.org; 15 index index.jsp; 16 location / { 17 proxy_pass http://192.168.1.5:8080; 18 } 19 location ~\.(html|htm|xml|gif|jpg|jpeg|ico|swf)$ { 20 proxy_pass http://192.168.1.4:8080; 21 } 22 location ~* \.(jsp|do)$ { 23 proxy_pass http://192.168.1.5:8080; 24 } 25} 26[root@node0 ~]# service nginx restart
访问测试:
