Tomcat服务器是一个开源的轻量级Web应用服务器,在中小型系统和并发量小的场合下被普遍使用,是开发和调试Servlet、JSP 程序的首选。
- nginx, web server, 能提供 http,80端口访问的,程序,用户访问 10.0.0.82 自动看到nginx
- tomcat 启动后,设置的80端口,用户页可以直接访问10.0.0.82,看到的是java程序运行后的内容
除此之外,Apache Tomcat还可以很容易与Apache Http Server.Nginx等知名的Web服务器集成,以实现负载均衡和集群化部署。现在已经被广泛用于开发、测试环境,甚至大规模、高并发的互联网产品部署。
Tomcat是Apache软件基金会(Apache Software Foundation)项目中的一个核心项目,由Apache、Sun和其他一些公司及个人共同开发而成。
Tomcat服务器是一个免费的开放源代码的Web应用服务器,属于轻量级应用服务器,在中小型系统和并发访问用户不是很多的场合下被普遍使用,是开发和调试JSP程序的首选。
Tomcat和Nginx、Apache(httpd)、lighttpd等Web服务器一样,具有处理HTML页面的功能,另外它还是一个Servlet和JSP容器,独立的Servlet容器是Tomcat的默认模式。
Tomcat处理静态HTML的能力不如Nginx/Apache服务器。
知识点:Nginx适合做前端负载均衡
而Tomcat适合做后端应用服务处理。
通常情况下,企业会使用 Nginx+tomcat 结合使用,由Nginx处理静态资源,Tomcat处理动态资源。
JAVA虚拟机
同一个JAVA程序(JAVA字节码的集合),通过JAVA虚拟机(VM)运行于各大主流操作系统平台比如Windows、CentOS、Ubuntu等。程序以虚拟机为中介,来实现跨平台。
php------yum install php*
java----yum install jdk* java开发编译环境
python-----yum install python3 -y
TOMCAT后端架构
Tomcat本身完全用Java语言开发,Tomcat目前可以和大部分Web服务器(IIS,Apache,Nginx)一起工作,且Tomcat是运行Java代码等容器。
常见用法是,nginx+tomcat,实现动静态请求分离。
Tomcat本身由一系列可配置等组件构成,核心组件是Servlet容器组件,Servlet就是一个用java语言开发,运行在服务器上的插件,用于解析动态的用户请求。
在使用java开发的公司,进行代码部署,常见做法是:
- 将Tomcat作为独立的Web服务器单独运行,Tomcat的运行必须依赖于Java虚拟机进程(Java Virtual Machine,JNM)进程。
- JVM虚拟机解决了JAVA程序,可以运行在任何平台上,解决了可移植性。
Tomcat下载地址:http:/ltomcat.apache.org/
JDK是什么
Tomcat运行必须得有java环境,这个JDK是:
Java Development Kit(JDK)sun公司对Java开发人员发布的免费软件开发工具包(SDK,Software development kit)
JDK是 Java 语言的软件开发工具包,主要用于移动设备、嵌入式设备上的java应用程序。
JDK是整个java开发的核心,它包含了JAVA的运行环境(JVM+Java系统类库)和JAVA工具。
JDK包含了一批用于Java开发的组件,其中包括:
javac:编译器,将后缀名为.java的源代码编译成后缀名为“.class”的字节码
java:运行工具,运行.class的字节码
jar:打包工具,将相关的类文件打包成一个文件
javadoc:文档生成器,从源码注释中提取文档,注释需匹配规范
jdb debugger:调试工具
jps:显示当前java程序运行的进程状态
javap:反编译程序
appletviewer:运行和调试applet程序的工具,不需要使用浏览器
javah:从Java类生成C头文件和C源文件。这些文件提供了连接胶合,使Java和C代码可进行交互。
javaws:运行JNLP程序
extcheck:一个检测jar包冲突的工具
apt:注释处理工具
jhat:java堆分析工具
jstack:栈跟踪程序
jstat:JVM检测统计工具
jstatd:jstat守护进程
jinfo:获取正在运行或崩溃的java程序配置信息
jmap:获取java进程内存映射信息
idlj:IDL-to-Java编译器。将IDL语言转化为java文件
policytool:一个GUI的策略文件创建和管理工具
jrunscript:命令行脚本运行
JDK下载页面
http://www.oracle.com/technetwork/java/javase/downloads/index.html
TOMCAT 部署(内存稍大点6~8G)
部署java环境
1.安装jdk、tomcat即可
[root@tomcat-10 ~/tomcat-all]#ls
apache-tomcat-8.0.27.tar.gz jdk-8u221-linux-x64.tar.gz
2.安装jdk
[root@tomcat-10 ~/tomcat-all]#
[root@tomcat-10 ~/tomcat-all]#tar -xf jdk-8u221-linux-x64.tar.gz -C /opt
[root@tomcat-10 ~/tomcat-all]#ls /opt
jdk1.8.0_221
配置软连接,修改PATH,方便版本替换
[root@tomcat-10 ~/tomcat-all]#ln -s /opt/jdk1.8.0_221/ /opt/jdk8
sed -i.ori '$a export JAVA_HOME=/opt/jdk8\nexport PATH=$JAVA_HOME/bin:$JAVA_HOME/jre/bin:$PATH\nexport CLASSPATH=.$CLASSPATH:$JAVA_HOME/lib:$JAVA_HOME/jre/lib:$JAVA_HOME/lib/tools.jar' /etc/profile
或者
vim /etc/profile
JAVA_HOME=/opt/jdk8
javaPATH=$JAVA_HOME/bin:$PATH
export JAVA_HOME PATH
检查PATH
[root@tomcat-10 ~/tomcat-all]#tail -5 /etc/profile
export PS1="[\[\e[34;1m\]\u@\[\e[0m\]\[\e[32;1m\]\H\[\e[0m\] \[\e[31;1m\]\w\[\e[0m\]]\\$"
unset mailcheck
export JAVA_HOME=/opt/jdk8
export PATH=$JAVA_HOME/bin:$JAVA_HOME/jre/bin:$PATH
export CLASSPATH=.$CLASSPATH:$JAVA_HOME/lib:$JAVA_HOME/jre/lib:$JAVA_HOME/lib/tools.jar
生效
[root@tomcat-10 ~/tomcat-all]#source /etc/profile
[root@tomcat-10 ~/tomcat-all]#java -version
java version "1.8.0_221"
Java(TM) SE Runtime Environment (build 1.8.0_221-b11)
Java HotSpot(TM) 64-Bit Server VM (build 25.221-b11, mixed mode)
部署Tomcat
[root@tomcat-10 ~/tomcat-all]#ls
apache-tomcat-8.0.27.tar.gz jdk-8u221-linux-x64.tar.gz
[root@tomcat-10 ~/tomcat-all]#tar -xf apache-tomcat-8.0.27.tar.gz -C /opt/
[root@tomcat-10 ~/tomcat-all]#ls /opt/
apache-tomcat-8.0.27 jdk1.8.0_221 jdk8
[root@tomcat-10 ~/tomcat-all]#ln -s /opt/apache-tomcat-8.0.27/ /opt/tomcat8
[root@tomcat-10 ~/tomcat-all]#
使用部署java环境配置的第二种需要配置tomcat环境:
CATALINA_HOME=/opt/tomcat8
export CATALINA_HOME
检查tomcat,是否识别了jdk
[root@tomcat-10 ~]#/opt/tomcat8/bin/version.sh
Using CATALINA_BASE: /opt/tomcat8
Using CATALINA_HOME: /opt/tomcat8
Using CATALINA_TMPDIR: /opt/tomcat8/temp
Using JRE_HOME: /opt/jdk8
Using CLASSPATH: /opt/tomcat8/bin/bootstrap.jar:/opt/tomcat8/bin/tomcat-juli.jar
Server version: Apache Tomcat/8.0.27
Server built: Sep 28 2015 08:17:25 UTC
Server number: 8.0.27.0
OS Name: Linux
OS Version: 3.10.0-862.el7.x86_64
Architecture: amd64
JVM Version: 1.8.0_221-b11
JVM Vendor: Oracle Corporation
tomcat目录介绍
程序根目录
[root@tomcat-10 ~]#ls /opt/tomcat8/
bin conf lib LICENSE logs NOTICE RELEASE-NOTES RUNNING.txt temp webapps work
drwxr-xr-x 2 root root 4096 Aug 3 03:05 bin #主要包含启动、关闭tomcat脚本和脚本依赖文件 非常重要
drwxr-xr-x 3 root root 198 Aug 3 03:05 conf #tomcat配置文件目录 非常重要
drwxr-xr-x 2 root root 4096 Aug 3 03:05 lib #tomcat运行需要加载的jar包 非常重要
-rw-r--r-- 1 root root 57011 Sep 28 2015 LICENSE #license文件,不重要
drwxr-xr-x 2 root root 197 Aug 3 03:15 logs #在运行过程中产生的日志文件 非常重要
-rw-r--r-- 1 root root 1444 Sep 28 2015 NOTICE #不重要
-rw-r--r-- 1 root root 6741 Sep 28 2015 RELEASE-NOTES #版本特性,不重要
-rw-r--r-- 1 root root 16204 Sep 28 2015 RUNNING.txt #帮助文件,不重要
drwxr-xr-x 2 root root 30 Aug 3 03:05 temp #存放临时文件
drwxr-xr-x 7 root root 81 Sep 28 2015 webapps #站点目录 非常重要
drwxr-xr-x 3 root root 22 Aug 3 03:05 work #tomcat运行时产生的
站点目录
[root@tomcat-10 ~]#ls /opt/tomcat8/webapps/
docs examples host-manager manager ROOT
├── docs # tomcat 帮助文档
├── examples # web应用实例
├── host-manager # 主机管理
├── manager # 管理
└── ROOT # 默认站点根目录
配置文件目录
[root@tomcat-10 ~]#ls /opt/tomcat8/conf/
catalina.policy catalina.properties context.xml logging.properties server.xml tomcat-users.xml tomcat-users.xsd web.xml
├── catalina.policy
├── catalina.properties
├── context.xml
├── logging.properties
├── server.xml # tomcat主配置,例如更改端口等
├── tomcat-users.xml # tomcat管理用户配置
├── tomcat-users.xsd
└── web.xml
管理脚本目录
[root@tomcat-10 ~]#ls /opt/tomcat8/bin/*.sh -l
-rwxr-xr-x 1 root root 21389 Sep 28 2015 /opt/tomcat8/bin/catalina.sh
-rwxr-xr-x 1 root root 1922 Sep 28 2015 /opt/tomcat8/bin/configtest.sh
-rwxr-xr-x 1 root root 7888 Sep 28 2015 /opt/tomcat8/bin/daemon.sh
-rwxr-xr-x 1 root root 1965 Sep 28 2015 /opt/tomcat8/bin/digest.sh
-rwxr-xr-x 1 root root 3547 Sep 28 2015 /opt/tomcat8/bin/setclasspath.sh
-rwxr-xr-x 1 root root 1902 Sep 28 2015 /opt/tomcat8/bin/shutdown.sh
-rwxr-xr-x 1 root root 1904 Sep 28 2015 /opt/tomcat8/bin/startup.sh
-rwxr-xr-x 1 root root 5061 Sep 28 2015 /opt/tomcat8/bin/tool-wrapper.sh
-rwxr-xr-x 1 root root 1908 Sep 28 2015 /opt/tomcat8/bin/version.sh
启动tomcat
优化jdk设置,加速tomcat启动
[root@tomcat-10 ~]#grep '^secure' /opt/jdk8/jre/lib/security/java.security
securerandom.source=file:/dev/urandom
securerandom.strongAlgorithms=NativePRNGBlocking:SUN
[root@tomcat-10 ~]#/opt/tomcat8/bin/startup.sh
Using CATALINA_BASE: /opt/tomcat8
Using CATALINA_HOME: /opt/tomcat8
Using CATALINA_TMPDIR: /opt/tomcat8/temp
Using JRE_HOME: /opt/jdk8
Using CLASSPATH: /opt/tomcat8/bin/bootstrap.jar:/opt/tomcat8/bin/tomcat-juli.jar
Tomcat started.
tomcat启动日志
[root@tomcat-10 ~]#tail -f /opt/tomcat8/logs/catalina.out
....
17-Jul-2022 00:51:55.768 INFO [localhost-startStop-1] org.apache.catalina.startup.HostConfig.deployDirectory Deployment of web application directory /opt/apache-tomcat-8.0.27/webapps/manager has finished in 9 ms
17-Jul-2022 00:51:55.770 INFO [main] org.apache.coyote.AbstractProtocol.start Starting ProtocolHandler ["http-nio-8080"]
17-Jul-2022 00:51:55.774 INFO [main] org.apache.coyote.AbstractProtocol.start Starting ProtocolHandler ["ajp-nio-8009"]
17-Jul-2022 00:51:55.775 INFO [main] org.apache.catalina.startup.Catalina.start Server startup in 376 ms
检查端口
[root@tomcat-10 ~]#netstat -tunlp|grep java
tcp6 0 0 127.0.0.1:8005 :::* LISTEN 2042/java
tcp6 0 0 :::8009 :::* LISTEN 2042/java
tcp6 0 0 :::8080
注意:tomcat认证账密
tomcat默认提供的功能都需要设置账密认证,否则无法访问,默认没有账密。
如果需要开启这个功能,就需要配置管理用户,即配置tomcat-users.xml 文件。然后重启
[root@tomcat-10 /opt/tomcat8]#tail -5 con/tomcat-users.xml
<role rolename ="manager-gui" />
<role rolenamem " admin-gui"/>
<user usernamem""tomcat" passwordm"ww. yuchaoit.cn" rolesm"manager-gui,admin-gui" />
</tomcat-users>
部署数据库
1.安装数据库
# yum install -y mariadb-server mariadbo
# systemctl start mariadb
2.配置数据库信息,创建库,存储数据
[root@localhost ~]# mysqladmin -u root password 123
[root@localhost -]# mysql-u root-p123
MariaDB [(none)> create database jspgou character set = utf8;
3.上传代码到tomcat的webappes目录,tomcat自动解压缩war包
还有一种部署方式就是,maven编译,基于jar包去运行。
准备好jpress.war包,开发给你的,或者你去github下载,或者拿到超哥的课件笔记。
[root@tomcat-10 /opt/tomcat8]#cd /opt/
[root@tomcat-10 /opt]#ls
apache-tomcat-8.0.27 jdk1.8.0_221 jdk8 jpress.war tomcat8
[root@tomcat-10 /opt]#
[root@tomcat-10 /opt]#
[root@tomcat-10 /opt]#ls /opt/tomcat8/webapps/
docs examples host-manager manager ROOT
[root@tomcat-10 /opt]#cp /opt/jpress.war /opt/tomcat8/webapps/
[root@tomcat-10 /opt]#
[root@tomcat-10 /opt]#ls /opt/tomcat8/webapps/
docs examples host-manager jpress jpress.war manager ROOT
[root@tomcat-10 /opt]#ls /opt/tomcat8/webapps/jpress
META-INF robots.txt static templates WEB-INF
发现已经解压缩出了jpress目录
4.访问即可
tomcat服务器地址,后面跟上应用的名字即可
http://10.0.0.81:8080/jpress
就和安装wordpress一个玩法,输入数据库信息,设置管理员账密
admin
www.yuchaoit.cn
MAVEN部署
1. 安装java、maven编译环境
[root@tomcat-10 ~]#java -version
java version "1.8.0_221"
Java(TM) SE Runtime Environment (build 1.8.0_221-b11)
Java HotSpot(TM) 64-Bit Server VM (build 25.221-b11, mixed mode)
wget https://mirrors.tuna.tsinghua.edu.cn/apache/maven/maven-3/3.3.9/binaries/apache-maven-3.3.9-bin.tar.gz --no-check-certificate
[root@tomcat-10 /opt]#tar -xf apache-maven-3.3.9-bin.tar.gz
[root@tomcat-10 /opt]#echo 'export PATH=$PATH:/opt/apache-maven-3.3.9/bin' >> /etc/profile
[root@tomcat-10 /opt]#
[root@tomcat-10 /opt]#source /etc/profile
[root@tomcat-10 /opt]#mvn -v
Apache Maven 3.3.9 (bb52d8502b132ec0a5a3f4c09453c07478323dc5; 2015-11-11T00:41:47+08:00)
Maven home: /opt/apache-maven-3.3.9
Java version: 1.8.0_221, vendor: Oracle Corporation
Java home: /opt/jdk1.8.0_221/jre
Default locale: en_US, platform encoding: UTF-8
OS name: "linux", version: "3.10.0-862.el7.x86_64", arch: "amd64", family: "unix"
2.下载源码
git clone https://gitee.com/JPressProjects/jpress.git
3.编译
修改mvn的源为阿里源
[root@tomcat-10 /opt/apache-maven-3.3.9]#vim conf/settings.xml
159
160 <mirror>
161 <id>aliyunmaven</id>
162 <mirrorOf>*</mirrorOf>
163 <name>阿里云公共仓库</name>
164 <url>https://maven.aliyun.com/repository/public</url>
165 </mirror>
166
167 </mirrors>
cd jpress
mvn clean package
4.查看jar包
[root@tomcat-10 /opt/jpress/starter/target/starter-4.0]#ls
config jpress.bat jpress.sh jpress-start.bat jpress-stop.bat lib webapp
5.启动
修改启动地址为0.0.0.0
改为后台运行,日志写入nohup.log
别忘记把tomcat停了,因为目前通过java去启动,内置了tomcat
[root@tomcat-10 /opt/jpress/starter/target/starter-4.0]#/opt/tomcat8/bin/shutdown.sh
[root@tomcat-10 /opt/jpress/starter/target/starter-4.0]#./jpress.sh start
[root@tomcat-10 /opt/jpress/starter/target/starter-4.0]#nohup: redirecting stderr to stdout
[root@tomcat-10 /opt/jpress/starter/target/starter-4.0]#
[root@tomcat-10 /opt/jpress/starter/target/starter-4.0]#tail -f output.log
JbootApplication { name='jboot', mode='dev', version='3.15.3', proxy='cglib', listener='*', listenerPackage='*' }
JbootApplication ClassPath: /opt/jpress/starter/target/starter-4.0/config/
Starting JFinal 5.0.0 -> http://0.0.0.0:80
Info: jfinal-undertow 3.0, undertow 2.2.17.Final, jvm 1.8.0_221
Jboot LoggerFactory: org.apache.logging.slf4j.Log4jLoggerFactory
Starting Complete in 1.1 seconds. Welcome To The JFinal World (^_^)
JbootResourceLoader started, Watched resource path name : webapp
Tomcat多实例
#关闭主站
bash/usr/local/tomcat/bin/shutdown.sh
#准备多实例主目录
mkdir /usr/local/tomcat/instance{1..3}
#制作实例工作目录
cp -r/usr/localtomcat/{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/
#修改端口
# vim/usr/local/tomcat/instance1/conf/server.xml
cp /usr/local/tomcat/instance1/conf/serverxml /usr/local/tomcat/instance2/confl
cp /usr/local/tomcat/instance1/conf/serverxml /usr/local/tomcat/instance3/conf/
8080->8081
<Connector port="8081" protocol="HTTP/1.1"
connectionTimeout="20000"
redirectPort="8443"/>
8085->8091
<Server port="8091" shutdown="SHUTDOWN">
appBase="/webapps“
#启动脚本
# vim /usr/local/tomcat/instance1/ins1.sh o
# cp /usr/local/tomcat/instance1/ins1.sh /usr/local/tomcat/instance2/ ins2.sh
# cp /usr/local/tomcat/instance1/ins1.sh /usr/locaVtomcat/instance3/ ins3.shc
#!/bin/ bash#instance1
. letc/init.d/functions
export CATALINA_BASE="/usr/local/tomcat/instance1/2/3"
case "$1" in
start
$CATALINA_HOME/bin/startup.sh;;
stop)
$CATALINA_HOME/bin/shutdown . sh;;
restart)
$CATALINA_HOME/bin/ shutdown .shsleep 5
$CATALINA_HOME/bin/startup.sh;;
esac
export JAVA_OPTS='-Xms64m -Xmx128m' I
#赋权网站
chmod +x /usr/localtomcat/instance1/ins1.sh
chmod +x /usr/local/tomcat/instance2/ins2.sh
chmod +x /usr/localtomcat/instance3/ins3.sh
# 网站源码
# mkdir /webapps
cp -r /usr/localtomcat/webapps/ROOT/ /webapps/
#源码启动
/usr/local/tomcat/instance1/ins1.sh start
/usr/local/tomcat/instance2/ins2.sh start
/usr/local/tomcat/instance3/ins3.sh start
#测试浏览