Contents
2.12. Tomcat服务搭建配置¶
2.12.1. 安装tomcat¶
Tomcat的安装分为两个步骤:安装JDK和安装Tomcat.
安装JDK¶
JDK(Java Development Kit)是Sun Microsystems针对Java开发员的产品。自从Java推出以来,JDK已经成为使用最广泛的Java SDK. JDK是整个Java的核心,包括了Java运行环境,Java工具和Java基础的类库。所以要想运行jsp的程序必须要有JDK的支持,理所当然安装Tomcat的前提是安装好JDK.
JDK下载面页:
http://www.oracle.com/technetwork/java/javase/downloads/index.html
#Linux中使用wget下载的方法如下:
wget --no-cookies --no-check-certificate --header "Cookie: gpw_e24=http%3A%2F%2Fwww.oracle.com%2F; oraclelicense=accept-securebackup-cookie" "http://download.oracle.com/otn-pub/java/jdk/8u141-b15/336fa29ff2bb4ef291e347e091f7f4a7/jdk-8u141-linux-x64.tar.gz"
或
wget ftp://biguser:www.jb51.net@gw.086o2i.cn:8021/201704/tools/jdk-linux-x64.tar.gz
tar zxvf jdk-linux-x64.tar.gz
mv jdk1.8.0_131/ /usr/local/jdk1.8
设置环境变量
vim /etc/profile
在末尾输入以下内容:
export JAVA_HOME=/usr/local/jdk1.8
export CLASSPATH=$CLASSPATH:$JAVA_HOME/lib:$JAVA_HOME/jre/lib
export PATH=$JAVA_HOME/bin:$JAVA_HOME/jre/bin:$PATH:$HOMR/bin
保存文件后,使其生效:
source /etc/profile
检测是否设置正确:
java -version
2.12.2. 安装Tomcat¶
上面介绍了那么多内容,仅仅是在为安装tomcat做准备工作而已,现在才是安装tomcat.
wget http://mirrors.hust.edu.cn/apache/tomcat/tomcat-8/v8.5.37/bin/apache-tomcat-8.5.37.tar.gz
tar zxvf apache-tomcat-8.5.37.tar.gz
mv apache-tomcat-8.5.37 /usr/local/tomcat
#启动程序
/usr/local/tomcat/bin/startup.sh
检查tomcat是否启动正常
[root@web03 ~]# netstat -lntup |grep java
tcp6 0 0 :::8080 :::* LISTEN 30560/java
tcp6 0 0 127.0.0.1:8005 :::* LISTEN 30560/java
tcp6 0 0 :::8009 :::* LISTEN 30560/java
[root@iZ2zedrhfe7pfaztjqpsw6Z bin]# ps aux | grep tomcat //是否有JAVA相关的进程,也可以查看监听端口
tomcat安装完毕
Tomcat目录介绍¶
tomcat主目录介绍
[root@web03 ~]# cd /usr/local/tomcat
[root@web03 tomcat]# tree -L 1
.
├── bin #存放tomcat管理脚本
├── conf # tomcat 配置文件存放目录
├── lib # web应用调用的jar包存放路径
├── LICENSE
├── logs # tomcat 日志存放目录,catalina.out 为主要输出日志
├── NOTICE
├── RELEASE-NOTES
├── RUNNING.txt
├── temp # 存放临时文件
├── webapps # web程序存放目录
└── work # 存放编译产生的.java 与 .class文件
其中:
catalina.sh类似于SysV服务管理脚本,支持stop、start和configtest,但不支持restart和reload,如catalina.sh
start。 startup.sh等价于catalina.sh start。
shudown.sh等价于catalina.sh stop。 configtest.sh等价于catalina.sh
configtest。
daemon.sh是通过指定各种PATH参数将tomcat以daemon的方式运行,要指定的参数path较多。catalina.sh执行start也是在后台运行tomcat的,所以没有必要使用此脚本来实现daemon模式的tomcat。
### webapps目录介绍 [root@web03 tomcat]# cd webapps/ [root@web03
webapps]# tree -L 1 . ├── docs # tomcat 帮助文档 ├── examples #
web应用实例 ├── host-manager # 主机管理 ├── manager # 管理 └── ROOT #
默认站点根目录
[root@iZ2zedrhfe7pfaztjqpsw6Z bin]# ./version.sh //查看tomcat版本
Using CATALINA_BASE: /usr/local/tomcat
Using CATALINA_HOME: /usr/local/tomcat
Using CATALINA_TMPDIR: /usr/local/tomcat/temp
Using JRE_HOME: /usr/local/jdk1.8/jre
Using CLASSPATH: /usr/local/tomcat/bin/bootstrap.jar:/usr/local/tomcat/bin/tomcat-juli.jar
Server version: Apache Tomcat/7.0.93
Server built: Feb 16 2019 17:13:17 UTC
Server number: 7.0.93.0
OS Name: Linux
OS Version: 3.10.0-957.5.1.el7.x86_64
Architecture: amd64
JVM Version: 1.8.0_131-b11
JVM Vendor: Oracle Corporation
### Tomcat的管理 # 启动程序/usr/local/tomcat/bin/startup.sh #
关闭程序/usr/local/tomcat/bin/shutdown.sh 启动停止
[root@web03 ~]# /usr/local/tomcat/bin/shutdown.sh
Using CATALINA_BASE: /application/tomcat
Using CATALINA_HOME: /application/tomcat
Using CATALINA_TMPDIR: /application/tomcat/temp
Using JRE_HOME: /application/jdk
Using CLASSPATH: /application/tomcat/bin/bootstrap.jar:/application/tomcat/bin/tomcat-juli.jar
[root@web03 ~]# /usr/local/tomcat/startup.sh
Using CATALINA_BASE: /application/tomcat
Using CATALINA_HOME: /application/tomcat
Using CATALINA_TMPDIR: /application/tomcat/temp
Using JRE_HOME: /application/jdk
Using CLASSPATH: /application/tomcat/bin/bootstrap.jar:/application/tomcat/bin/tomcat-juli.jar
Tomcat started.
注意:tomcat未启动的情况下使用shutdown脚本,会有大量的输出信息。
Tomcat管理功能使用¶
cat /usr/local/tomcat/conf/tomcat-users.xml
39 <role rolename="manager-gui"/>
40 <role rolename="admin-gui"/>
41 <user username="tomcat" password="tomcat" roles="manager-gui,admin-gui"/>
42 </tomcat-users> # 在此行前加入上面三行

2.12.3. 配置tomcat¶
tomcat默认启动的是8080,如果你想修改为80,则需要修改server.xml文件:
vim /usr/local/tomcat/conf/server.xml
找到:
<Connector port="8080" protocol="HTTP/1.1"
修改为:
<Connector port="80" protocol="HTTP/1.1"
tomcat的虚拟主机
<Host name="www.123.cn" appBase="/data/tomcatweb/"
unpackWARs="false" autoDeploy="true"
xmlValidation="false" xmlNamespaceAware="false">
<Context path="" docBase="/data/tomcatweb/" debug="0" reloadable="true" crossContext="true"/>
<Valve className="org.apache.catalina.valves.AccessLogValve" directory="logs"
prefix="123.cn_access_log" suffix=".txt"
pattern="%h %l %u %t "%r" %s %b" />
其中<Host>和</Host>之间的配置为虚拟主机配置部分,name定义域名,appBase定义应用目录。
Java的应用通常是一个jar的压缩包,将jar的压缩包放到appBase目录下面即可。
Tomcat的默认页就是在appBase目录下面的ROOT里。
创建目录和测试文件并测试
mkdir -p /data/tomcatweb
cd /data/tomcatweb/
echo "Tomcat test page." > /data/tomcatweb/1.html
#重启tomcat服务
./shutdown.sh
./startup.sh
#我们用curl访问刚创建的1.html
[root@iZ2zedrhfe7pfaztjqpsw6Z local]# curl -x 127.0.0.1:8080 www.123.cn/1.html
Tomcat test page.
## 部署开源站点(jpress) jpress官网:http://jpress.io
下载地址:https://github.com/JpressProjects/jpress
第一个里程碑:安装配置数据库¶
yum -y install mariadb-server
systemctl start mariadb.service
配置数据库
mysql
create database jpress DEFAULT CHARACTER SET utf8;
grant all on jpress.* to jpress@'localhost' identified by '123456';
exit
第二个里程碑:jpress站点上线¶
yum -y install git
cd /usr/local/tomcat/webapps/
进入 Gitee 的 JPress 发行页面进行下载
链接地址: https://gitee.com/fuhai/jpress/releases
在每个版本的发行下方,会有对应版本的下载链接,点击即可下载
mv starter-tomcat-1.0.war /usr/local/tomcat/webapps/
[root@iZ2zedrhfe7pfaztjqpsw6Z webapps]# /usr/local/tomcat/bin/shutdown.sh
Using CATALINA_BASE: /usr/local/tomcat
Using CATALINA_HOME: /usr/local/tomcat
Using CATALINA_TMPDIR: /usr/local/tomcat/temp
Using JRE_HOME: /usr/local/jdk1.8/jre
Using CLASSPATH: /usr/local/tomcat/bin/bootstrap.jar:/usr/local/tomcat/bin/tomcat-juli.jar
[root@iZ2zedrhfe7pfaztjqpsw6Z webapps]# /usr/local/tomcat/bin/startup.sh
Using CATALINA_BASE: /usr/local/tomcat
Using CATALINA_HOME: /usr/local/tomcat
Using CATALINA_TMPDIR: /usr/local/tomcat/temp
Using JRE_HOME: /usr/local/jdk1.8/jre
Using CLASSPATH: /usr/local/tomcat/bin/bootstrap.jar:/usr/local/tomcat/bin/tomcat-juli.jar
2.12.4. Tomcat多实例配置¶
多虚拟主机:nginx 多个Server标签(域名,ip,端口) 进程数量固定 master+worker 多实例(多进程):同一个程序启动多次,分为两种情况:
第一种:一台机器跑多个站点;
第二种:一个机器跑一个站点多个实例,配合负载均衡
复制程序文件
cd /usr/local/src/
tar zxvf apache-tomcat-8.5.37.tar.gz
cp -a apache-tomcat-8.5.37 tomcat8_1
cp -a apache-tomcat-8.5.37 tomcat8_2
修改端口,以启动多实例。多实例之间端口不能一致
sed -i 's#8005#8011#;s#8080#8081#' tomcat8_1/conf/server.xml
sed -i 's#8005#8012#;s#8080#8082#' tomcat8_2/conf/server.xml
diff tomcat8_1/conf/server.xml tomcat8_2/conf/server.xml
将配置好的tomcat程序打包,以备之后使用
tar zcf muti_tomcat8.tar.gz ./tomcat8_1 ./tomcat8_2
启动tomcat多实例
/usr/local/tomcat8_1/bin/startup.sh
/usr/local/tomcat8_2/bin/startup.sh
netstat -tunpl| grep java
tcp 0 0 0.0.0.0:8009 0.0.0.0:* LISTEN 3726/java
tcp 0 0 127.0.0.1:8011 0.0.0.0:* LISTEN 4121/java
tcp 0 0 127.0.0.1:8012 0.0.0.0:* LISTEN 4163/java
tcp 0 0 0.0.0.0:8080 0.0.0.0:* LISTEN 3726/java
tcp 0 0 0.0.0.0:8081 0.0.0.0:* LISTEN 4121/java
tcp 0 0 0.0.0.0:8082 0.0.0.0:* LISTEN 4163/java
tcp 0 0 127.0.0.1:8005 0.0.0.0:* LISTEN 3726/java
将每个实例的网页进行区分
echo 8081 >>/application/tomcat8_1/webapps/ROOT/index.jsp
echo 8082 >>/application/tomcat8_2/webapps/ROOT/index.jsp
在浏览器访问,进行测试 检查多实例的启动

2.12.5. Tomcat反向代理集群¶
负载均衡器说明¶
[root@iZ2ze2a95z0hmrb6l98sifZ ~]# cat /etc/redhat-release
CentOS Linux release 7.6.1810 (Core)
[root@iZ2ze2a95z0hmrb6l98sifZ ~]# uname -a
Linux iZ2ze2a95z0hmrb6l98sifZ 3.10.0-957.5.1.el7.x86_64 #1 SMP Fri Feb 1 14:54:57 UTC 2019 x86_64 x86_64 x86_64 GNU/Linux
[root@iZ2ze2a95z0hmrb6l98sifZ ~]# getenforce
Disabled
[root@iZ2ze2a95z0hmrb6l98sifZ ~]# service iptables stop
安装nginx
安装nginx的依赖包(pcre-devel openssl-devel)
yum install -y pcre-devel openssl-devel
#解压软件
tar xf nginx-1.10.2.tar.gz
#创建管理用户 www
useradd -M -s /sbin/nologin www
cd nginx-1.10.2
./configure --prefix=/application/nginx-1.10.2 --user=www --group=www --with-http_stub_status_module --with-http_ssl_module
编译参数说明:
--prefix //表示指定软件安装到哪个目录中,指定目录不存在会自动创建
--user/--group //nginx工作进程由哪个用户运行管理
--with-http_stub_status_module //启动nginx状态模块功能(用户访问nginx的网络信息)
--with-http_ssl_module //启动https功能模块
#通过软件编译过程中的返回值是否正确,确认配置是否正确
echo $?
0
make && make install
#创建软连接
[root@iZ2ze2a95z0hmrb6l98sifZ ~]# ln -s /application/nginx-1.10.2/ /application/nginx
#精简化nginx.conf 主配置文件内容
[root@iZ2ze2a95z0hmrb6l98sifZ ~]# egrep -v "#|^$" nginx.conf.default >nginx.conf
启动程序
[root@iZ2ze2a95z0hmrb6l98sifZ ~]#/application/nginx/sbin/nginx
#检查是否启动
[root@iZ2ze2a95z0hmrb6l98sifZ sbin]# ps aux | grep nginx
root 19390 0.0 0.0 45896 1116 ? Ss 21:09 0:00 nginx: master process ./nginx
www 19391 0.0 0.0 46336 1884 ? S 21:09 0:00 nginx: worker process
root 19399 0.0 0.0 112708 980 pts/0 S+ 21:10 0:00 grep --color=auto nginx
[root@iZ2ze2a95z0hmrb6l98sifZ sbin]# netstat -ltunp| grep 80
tcp 0 0 0.0.0.0:80 0.0.0.0:* LISTEN 19390/nginx: master
#nginx命令简化方法
which nginx
echo 'export PATH=/application/nginx/sbin:$PATH'>>/etc/profile
source /etc/profile
nginx安装完毕!
nginx 目录结构
[root@web01 nginx]# ll
total 36
drwxr-xr-x 2 root root 4096 Oct 21 19:34 conf #配置文件保存目录
drwxr-xr-x 2 root root 4096 Oct 21 19:34 html #站点目录
drwxr-xr-x 2 root root 4096 Oct 21 20:26 logs #nginx 服务相关日志文件保存目录(错误日志访问日志)
drwxr-xr-x 2 root root 4096 Oct 21 19:34 sbin # 服务命令目录(只有一个nginx文件)
配置负载均衡器¶
#备份原配置文件
cp /application/nginx/conf/nginx.conf{,_bak_2019}
cd /application/nginx
#配置文件内容
[root@iZ2ze2a95z0hmrb6l98sifZ conf]# cat /application/nginx/conf/nginx.conf
worker_processes 1;
events {
worker_connections 1024;
}
http {
include mime.types;
default_type application/octet-stream;
sendfile on;
keepalive_timeout 65;
upstream tomcat_onlineAPI {
ip_hash;
server 47.95.237.58:8081;
server 47.95.237.58:8082;
}
}
server {
listen 80;
server_name localhost;
location / {
root html;
index index.jsp index.htm;
proxy_pass http://tomcat_onlineAPI;
}
error_page 500 502 503 504 /50x.html;
location = /50x.html {
root html;
}
}
}
#配置完成后重启nginx服务
[root@iZ2ze2a95z0hmrb6l98sifZ conf]# /application/nginx/sbin/nginx -s stop
[root@iZ2ze2a95z0hmrb6l98sifZ conf]# /application/nginx/sbin/nginx
使用命令进行访问测试
使用curl 命令进行测试,tail进行关键字提取
[root@lb01 ~]# curl -s 47.95.237.58|tail -1
8081
[root@lb01 ~]# curl -s 47.95.237.58|tail -1
8082
使用curl 命令进行测试,awk进行关键字提取
[root@lb01 ~]# curl -s 47.95.237.58|awk 'END{print}'
8082
[root@lb01 ~]# curl -s 47.95.237.58|awk 'END{print}'
8081
访问地址如图: