Tomcat部署
java容器、web容器,web中间件
-
Tomcat,Resin,JBOSS,WebSphere(IBM),Weblogic(Oracle )
-
Tomcat是Apache 软件基金会(Apache Software Foundation)的Jakarta 项目中的一个核心项目,由Apache、Sun 和其他一些公司及个人共同开发而成。由于有了Sun 的参与和支持,最新的Servlet 和JSP 规范总是能在Tomcat 中得到体现,Tomcat 5支持最新的Servlet 2.4 和JSP 2.0 规范。因为Tomcat 技术先进、性能稳定,而且免费,因而深受Java 爱好者的喜爱并得到了部分软件开发商的认可,成为目前比较流行的Web 应用服务器。
-
Resin是CAUCHO公司的产品,是一个非常流行的支持servlets和jsp的引擎,速度非常快。Resin本身包含了一个支持HTTP/1.1的WEB服务器。它不仅可以显示动态内容,而且它显示静态内容的能力也非常强,速度直逼APACHESERVER。许多站点都是使用该WEB服务器构建的
-
是一个基于J2EE的开放源代码的应用服务器。 JBoss代码遵循LGPL许可,可以在任何商业应用中免费使用。JBoss是一个管理EJB的容器和服务器,支持EJB 1.1、EJB 2.0和EJB3的规范。但JBoss核心服务不包括支持servlet/JSP的WEB容器,一般与Tomcat或Jetty绑定使用。
-
WebSphere 是 IBM 的软件平台。它包含了编写、运行和监视全天候的工业强度的随需应变 Web 应用程序和跨平台、跨产品解决方案所需要的整个中间件基础设施,如服务器、服务和工具。WebSphere 提供了可靠、灵活和健壮的软件。
-
WebLogic是美国Oracle公司出品的一个application server,确切的说是一个基于JAVAEE架构的中间件,WebLogic是用于开发、集成、部署和管理大型分布式Web应用、网络应用和数据库应用的Java应用服务器。将Java的动态功能和Java Enterprise标准的安全性引入大型网络应用的开发、集成、部署和管理之中。
- weblogic.docx
-
官网地址
-
tomcat下载地址
- http://tomcat.apache.org/
JDK下载地址
- http://tomcat.apache.org/
-
http://www.oracle.com/technetwork/java/javase/downloads/index.html
架构
-
方案一:
- Tomcat
-
方案二:
Nginx | +--------------------+ | | | Tomcat1 Tomcat2 Tomcat3
- 建议使用Nginx和Tomcat配合,Nginx处理静态,Tomcat处理动态程序
部署
一、Tomcat Http Server
-
环境
-
centos7.6
-
4、6到8G内存
-
配置yum扩展源
- # yum install epel-release -y
-
-
1、部署JAVA环境
-
提示
- 建议卸载默认安装openjdk软件
- yum remove -y openjdk
- 上传压缩包
1-1解压安装包
-
-
# tar xf jdk-8u151-linux-x64.tar.gz -C /usr/local
-
8u均可
-
查看解压后的文件
-
-
# ls /usr/local/
bin etc games include jdk1.8.0_151 lib lib64 libexec sbin share src -
-
1-2 多版本部署java
- # ln -s /usr/local/jdk1.8.0_151/ /usr/local/java
-
1-3配置环境变量
- # vim /etc/profile
- JAVA_HOME=/usr/local/java
- PATH=$JAVA_HOME/bin:$PATH
- export JAVA_HOME PATH
- # source /etc/profile
- # env |grep JAVA
- JAVA_HOME=/usr/local/java
- # vim /etc/profile
-
4测试java
-
# java -version
java version "1.8.0_151" Java(TM) SE Runtime Environment (build 1.8.0_151-b12) Java HotSpot(TM) 64-Bit Server VM (build 25.151-b12, mixed mode)
-
-
-
2、安装Tomcat
-
# tar xf apache-tomcat-7.0.42.tar.gz -C /usr/local/
-
# ln -s /usr/local/apache-tomcat-7.0.42/ /usr/local/tomcat
-
定义Tomcat所需环境变量:
-
# vim /etc/profile
- CATALINA_HOME=/usr/local/tomcat
- //Tomcat安装目录
- export CATALINA_HOME
- CATALINA_HOME=/usr/local/tomcat
-
# source /etc/profile
-
-
-
3、启动Tomcat
-
启动tomcat
-
#bash /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/java Using CLASSPATH: /usr/local/tomcat/bin/bootstrap.jar:/usr/local/tomcat/bin/tomcat-juli.jar
-
-
-
检查端口
-
# netstat -tnlp |grep java
tcp6 0 0 :::8009 :::* LISTEN 31346/java tcp6 0 0 :::8080 :::* LISTEN 31346/java tcp6 0 0 127.0.0.1:8005 :::* LISTEN 31346/java
- 关于tomcat端口:
- 8005
- 是tomcat本身的端口
- 8080
- tomcat负责建立HTTP连接。在通过浏览器访问Tomcat服务器的Web应用时,使用的就是这个连接器。
- 8009
- tomcat负责和其他的HTTP服务器建立连接。
- 如nginx和apache互通时使用
- tomcat负责和其他的HTTP服务器建立连接。
- 8005
- 关于tomcat端口:
-
-
访问
-
http://192.168.229.11:8080/
- 注意服务器地址,注意端口
-
浏览器访问tomcat主页。注意关闭防火墙
-
-
-
-
关闭tomcat(切记,否则你会遇见500)
- #bash /usr/local/tomcat/bin/shutdown.sh
-
-
4.关于tomcat
-
tomcat主目录介绍
[root@web ~]# ls /usr/local/tomcat/ [root@web tomcat]# tree -L 1 ├── bin #存放tomcat管理脚本 ├── conf # tomcat 配置文件存放目录 ├── lib # web应用调用的jar包存放路径 ├── LICENSE ├── logs # tomcat 日志存放目录,catalina.out 为主要输出日志 ├── NOTICE ├── RELEASE-NOTES ├── RUNNING.txt ├── temp # 存放临时文件 ├── webapps # web程序存放目录 相当于httpd的/www └──ROOT 相当于httpd的/www/html └── work # 存放编译产生的.java 与 .class文件
-
-
webapps目录介绍
-
# ls /usr/local/tomcat/webapps/ docs examples host-manager manager ROOT
[root@web03 tomcat]# cd webapps/ [root@web03 webapps]# tree -L 1 ├── docs # tomcat 帮助文档 ├── examples # web应用示例 ├── host-manager # 主机管理 ├── manager # 管理 └── ROOT # 默认站点根目录
-
-
默认网站的主目录(主页)
- # ls /usr/local/tomcat/webapps/ROOT
-
Tomcat配置文件目录介绍(conf)
-
[root@web03 conf]# tree -L 1 . ├── Catalina ├── catalina.policy ├── catalina.properties ├── context.xml ├── logging.properties ├── logs ├── server.xml # tomcat 主配置文件 ├── server.xml.bak ├── server.xml.bak2 ├── tomcat-users.xml # tomcat 管理用户配置文件 ├── tomcat-users.xsd └── web.xml
-
-
Tomcat日志说明
-
查看日志
[root@web03 ~]# tailf /usr/local/tomcat/logs/catalina.out 24-Nov-2023 15:09:51.654 INFO [main] org.apache.coyote.AbstractProtocol.start Starting ProtocolHandler ["http-nio-8080"] 24-Nov-2023 15:09:51.665 INFO [main] org.apache.coyote.AbstractProtocol.start Starting ProtocolHandler ["ajp-nio-8009"] 24-Nov-2023 15:09:51.670 INFO [main] org.apache.catalina.startup.Catalina.start Server startup in 60037 ms
-
发现启动时间较长,其中有一项的启动时间占据了绝大多数
24-Nov-2023 15:09:50.629 INFO [localhost-startStop-1] org.apache.catalina.startup.HostConfig.deployWAR Deployment of web application archive /application/apache-tomcat-8.0.27/webapps/memtest.war has finished in 58,892 ms
发现耗时在这里:是session引起的随机数问题导致的。Tocmat的Session ID是通过SHA1算法计算得到的,计算Session ID的时候必须有一个密钥。为了提高安全性Tomcat在启动的时候会通过随机生成一个密钥。
-
解决Tomcat启动慢的方法
- Tomcat启动慢主要原因是生成随机数的时候卡住了,导致tomcat启动不了。是否有足够的值来用于产生随机数,可以通过如下命令来查看
- [root@web03 ~]# cat /proc/sys/kernel/random/entropy_avail 6
- 方法
- vim $JAVA_HOME/jre/lib/security/java.security
- securerandom.source=file:/dev/random
- 改为
- securerandom.source=file:/dev/urandom
- 问题完美解决
- Tomcat启动慢主要原因是生成随机数的时候卡住了,导致tomcat启动不了。是否有足够的值来用于产生随机数,可以通过如下命令来查看
-
二、安装MySQL
- 2-1、创建数据库:
- 创建jspgou数据库,字符集为utf-8
- # yum install -y mariadb-server mariadb
- 该步骤出错。请您检查YUM源配置
- # mv /etc/yum.repos.d/* /tmp/
- wget -O /etc/yum.repos.d/CentOS-Base.repo http://mirrors.aliyun.com/repo/Centos-7.repo
- wget -O /etc/yum.repos.d/epel.repo http://mirrors.aliyun.com/repo/epel-7.repo
- 该步骤出错。请您检查YUM源配置
- # systemctl start mariadb
- [root@localhost ~]# mysqladmin -u root password 123
- 注意如果有密码
- mysqladmin -u root -p老密码 password 新密码
- [root@localhost ~]# mysql -u root -p123
- MariaDB [(none)]> create database jspgou character set = utf8;
三、部署jspgou(电子商城)
-
3-1、解压源码包
- # unzip jspgouV6-ROOT.zip
-
3-2、更改数据库链接:
- 提示:在解压缩后的文件中,修改连接数据库的信息
- [root@localhost ~]# vim ROOT/WEB-INF/config/jdbc.properties
- jdbc.url=jdbc:mysql://127.0.0.1:3306/jspgou?characterEncoding=UTF-8
- jdbc.username=root
- jdbc.password=123
-
3-3、导入数据:
- [root@localhost ~]# mysql -u root -p123 -D jspgou < DB/jspgou.sql
- 使用MYSQL数据库时,会发生的错误
- 使用mysql作为数据库时,如果导入数据失败
- 1.修改mysql配置文件
- my.cnf中max_allowed_packet参数为64m,默认为1m
- 2.DB/jspgou.sql里面的默认值改一下
- 把所有datetime类型的字段默认值改成CURRENT_TIMESTAMP
- 1.修改mysql配置文件
- 使用mysql作为数据库时,如果导入数据失败
- 将程序解压后的ROOT文件夹,拷贝到tomcat安装目录下的webapps文件夹下
- [root@localhost ~]# \cp -r ROOT /usr/local/tomcat/webapps/
- 不使用cp 的别名。 alias cp=‘cp -i’
- 相当于:cp -r ROOT /usr/local/tomcat/webapps/
- [root@localhost ~]# \cp -r ROOT /usr/local/tomcat/webapps/
-
3-4、部署网站:
- 启动tomcat
- #bash /usr/local/tomcat/bin/startup.sh
- 输入以下地址
- http://192.168.229.11:8080/
- http://192.168.229.11:8080/
- 启动tomcat
-
http://192.168.229.11:8080/jeeadmin/jspgou/index.do
-
注意服务器地址
-
用户名:admin
-
密 码:123456
-
图示
- 点击上图右上角浏览器图标访问网站首页
- 点击上图右上角浏览器图标访问网站首页
Tomcat多实例
关闭主站
- # bash /usr/local/tomcat/bin/shutdown.sh
准备多实例主目录
- mkdir /usr/local/tomcat/instance{1…3}
制作实例工作目录
-
# cp -r /usr/local/tomcat/{conf,logs,temp,work} /usr/local/tomcat/instance1/
-
# cp -r /usr/local/tomcat/{conf,logs,temp,work} /usr/local/tomcat/instance2/
-
# cp -r /usr/local/tomcat/{conf,logs,temp,work} /usr/local/tomcat/instance3/
-
查看目录结构
-
[root@www ~]# tree -d -L 2 /usr/local/tomcat/
/usr/local/tomcat/ ├── bin ├── instance1 │ ├── conf │ ├── logs │ ├── temp │ └── work ├── instance2 │ ├── conf │ ├── logs │ ├── temp │ └── work ├── instance3 │ ├── conf │ ├── logs │ ├── temp │ └── work └── lib
-
修改端口
-
将web配置文件拷贝三份。分别修改为不同端口
-
# vim /usr/local/tomcat/instance1/conf/server.xml
-
1、服务端口 8080 替换成 8081
-
修改前
<!-- <Connector port="8080" protocol="HTTP/1.1" connectionTimeout="20000" redirectPort="8443" /> -->
-
修改后
<Connector port="8081" protocol="HTTP/1.1" connectionTimeout="20000" redirectPort="8443" />
-
-
2、程序工作端口:8005替换成 8091
-
<!-- <Server port="8005" shutdown="SHUTDOWN"> -->
-
程序工作端口:8005替换成 8091
-
<Server port="8091" shutdown="SHUTDOWN">
-
-
3、网站目录:webapps 替换成 另一个目录
- appBase=“webapps”
- 网站目录:webapps 替换成 另一个目录
- appBase=“/webapps”
-
-
cp /usr/local/tomcat/instance1/conf/server.xml /usr/local/tomcat/instance2/conf/
-
# vim /usr/local/tomcat/instance2/conf/server.xml
-
1、服务端口 替换成 8082
-
<Connector port="8081" protocol="HTTP/1.1"
-
服务端口 替换成 8082
-
<Connector port="8082" protocol="HTTP/1.1"
-
-
2、程序工作端口8091 替换成 8092
-
<Server port="8091" shutdown="SHUTDOWN">
-
程序工作端口 替换成 8092
-
<Server port="8092" shutdown="SHUTDOWN">
-
-
-
cp /usr/local/tomcat/instance1/conf/server.xml /usr/local/tomcat/instance3/conf/
-
# vim /usr/local/tomcat/instance1/ins1.sh
-
functions系统自带脚本。功能函数
-
#!/bin/bash #instance1 . /etc/init.d/functions export CATALINA_BASE="/usr/local/tomcat/instance1" case "$1" in start) $CATALINA_HOME/bin/startup.sh ;; stop) $CATALINA_HOME/bin/shutdown.sh ;; restart) $CATALINA_HOME/bin/shutdown.sh sleep 5 $CATALINA_HOME/bin/startup.sh ;; esac export JAVA_OPTS='-Xms64m -Xmx128m'
-
-
# cp /usr/local/tomcat/instance1/ins1.sh /usr/local/tomcat/instance2/ins2.sh
-
#!/bin/bash #instance2 . /etc/init.d/functions export CATALINA_BASE="/usr/local/tomcat/instance2" case "$1" in start) $CATALINA_HOME/bin/startup.sh ;; stop) $CATALINA_HOME/bin/shutdown.sh ;; restart) $CATALINA_HOME/bin/shutdown.sh sleep 5 $CATALINA_HOME/bin/startup.sh ;; esac
-
-
# cp /usr/local/tomcat/instance1/ins1.sh /usr/local/tomcat/instance3/ins3.sh
-
#!/bin/bash #instance3 . /etc/init.d/functions export CATALINA_BASE="/usr/local/tomcat/instance3" case "$1" in start) $CATALINA_HOME/bin/startup.sh ;; stop) $CATALINA_HOME/bin/shutdown.sh ;; restart) $CATALINA_HOME/bin/shutdown.sh sleep 5 $CATALINA_HOME/bin/startup.sh ;; esac export JAVA_OPTS='-Xms64m -Xmx128m'
赋权
-
-
# chmod +x /usr/local/tomcat/instance1/ins1.sh
-
# chmod +x /usr/local/tomcat/instance2/ins2.sh
-
# chmod +x /usr/local/tomcat/instance3/ins3.sh
网站源码
- # mkdir /webapps
- cp -r /usr/local/tomcat/webapps/ROOT/ /webapps/
启动
- # /usr/local/tomcat/instance1/ins1.sh start
- # /usr/local/tomcat/instance2/ins2.sh start
- # /usr/local/tomcat/instance3/ins3.sh start
- 等5秒
测试
- # netstat -antp | grep 8081
- 8082
- 8083
- 8091
- 8092
- 8093
浏览
- http://192.168.229.11:8081
- http://192.168.229.11:8082
- http://192.168.229.11:8083