tomcat服务介绍
LNMP Linux nginx --> php --> mysql 处理PC端 — server端 处理PC端
LNMT nginx代理 tomcat --> JVM --> mysql 处理移动端 — server端 tomcat 处理移动端
官方资料:http://tomcat.apache.org/
tomcat
官方下载链接:https://tomcat.apache.org/download-80.cgi
tomcat服务名词解释
JVM – Java Virtual Machine(Java虚拟机)
jre – Java Runtime Environment (JVM)
jdk – Java Development kit jre(JVN) + java 组件或工具包
tomcat部署
JVM部署(jdk)
官方下载链接:https://www.oracle.com/java/technologies/javase/javase-jdk8-downloads.html
第一个历程JDK安装
创建存放数据包的目录和上传数据包
[root@test ~]# mkdir /server/tools -p
[root@test ~]# cd /server/tools/
[root@test tools]# rz -E
rz waiting to receive.
[root@test tools]# rz -E
rz waiting to receive.
[root@test tools]# ll
total 185908
-rw-r--r-- 1 root root 9128610 Mar 24 22:55 apache-tomcat-8.0.27.tar.gz
-rw-r--r-- 1 root root 181238643 Mar 24 23:03 jdk-8u60-linux-x64.tar.gz
[root@test tools]#
第二个历程:解压软件包并移动压缩后的数据并给解压后的数据包创建软连接
[root@test tools]#
[root@test tools]# mkdir /application -p
[root@test tools]# tar xf apache-tomcat-8.0.27.tar.gz -C /application/
[root@test tools]# tar xf jdk-8u60-linux-x64.tar.gz -C /application/
[root@test tools]# cd /application/
[root@test application]# ll
total 0
drwxr-xr-x 9 root root 160 Mar 25 08:07 apache-tomcat-8.0.27
drwxr-xr-x 8 10 143 255 Aug 4 2015 jdk1.8.0_60
[root@test application]# ln -s /application/jdk1.8.0_60/ /application/jdk
[root@test application]# ln -s /application/apache-tomcat-8.0.27/ /application/tomcat
[root@test application]# ll
total 0
drwxr-xr-x 9 root root 160 Mar 25 08:07 apache-tomcat-8.0.27
lrwxrwxrwx 1 root root 25 Mar 25 08:08 jdk -> /application/jdk1.8.0_60/
drwxr-xr-x 8 10 143 255 Aug 4 2015 jdk1.8.0_60
lrwxrwxrwx 1 root root 34 Mar 25 08:08 tomcat -> /application/apache-tomcat-8.0.27/
[root@test application]#
第三个历程:编写环境变量并重新读取环境变量
[root@test application]# vim /etc/profile
[root@test application]# tail -n 5 /etc/profile
export JAVA_HOME=/application/jdk
export TOMCAT_HOME=/application/tomcat
export PATH=$JAVA_HOME/bin:$JAVA_HOME/jre/bin:$TOMCAT_HOME/bin:$PATH
export CLASSPATH=.:$JAVA_HOME/lib:$JAVA_HOME/jre/lib:$JAVA_HOME/lib/tools.jar
[root@test application]# secure /etc/profile
bash: secure: command not found
[root@test application]# source /etc/profile
[root@test application]#
这是配置环境变量的简单方法,’'可以使$符号不被识别。
cat >>/etc/profile<<'EOF'
export JAVA_HOME=/application/jdk
export PATH=$JAVA_HOME/bin:$JAVA_HOME/jre/bin:$PATH
export CLASSPATH=.:$JAVA_HOME/lib:$JAVA_HOME/jre/lib:$JAVA_HOME/lib/tools.jar
EOF
source /etc/profile
配置环境变量解释说明:
export JAVA_HOME=/application/jdk
<-- 定义jdk软件程序目录
export PATH=$JAVA_HOME/bin:$JAVA_HOME/jre/bin:$PATH
<-- 定义jdk命令存在于环境变量中,可以直接使用
export CLASSPATH=.:$JAVA_HOME/lib:$JAVA_HOME/jre/lib:$JAVA_HOME/lib/tools.jar
<-- 定义java程序运行所需的库文件环境变量(classpath)
第四个历程:查看Java版本号确认tomcat是否安装成功
[root@test application]# java -version
java version "1.8.0_60"
Java(TM) SE Runtime Environment (build 1.8.0_60-b27)
Java HotSpot(TM) 64-Bit Server VM (build 25.60-b23, mixed mode)
[root@test application]#
第五个历程:修改tomcat文件的属主属组为root用户并启动服务
[root@test application]# chown -R root.root /application/
[root@test application]# cd /application/
[root@test application]# ll
total 0
drwxr-xr-x 9 root root 160 Mar 25 08:07 apache-tomcat-8.0.27
lrwxrwxrwx 1 root root 25 Mar 25 08:08 jdk -> /application/jdk1.8.0_60/
drwxr-xr-x 8 root root 255 Aug 4 2015 jdk1.8.0_60
lrwxrwxrwx 1 root root 34 Mar 25 08:08 tomcat -> /application/apache-tomcat-8.0.27/
[root@test application]#
[root@test bin]# pwd
/application/tomcat/bin
[root@test bin]# startup.sh
[root@test bin]# netstat -ntpl|grep 8080
tcp6 0 0 :::8080 :::* LISTEN 7303/java
第六个历程:查看tomcat日志文件(这个日志文件是最全的)
[root@test bin]# tail -f /application/tomcat/logs/catalina.out
25-Mar-2020 08:13:46.297 INFO [localhost-startStop-1] org.apache.catalina.startup.HostConfig.deployDirectory Deployment of web application directory /application/apache-tomcat-8.0.27/webapps/docs has finished in 30 ms
25-Mar-2020 08:13:46.297 INFO [localhost-startStop-1] org.apache.catalina.startup.HostConfig.deployDirectory Deploying web application directory /application/apache-tomcat-8.0.27/webapps/examples
25-Mar-2020 08:13:46.984 INFO [localhost-startStop-1] org.apache.catalina.startup.HostConfig.deployDirectory Deployment of web application directory /application/apache-tomcat-8.0.27/webapps/examples has finished in 687 ms
25-Mar-2020 08:13:46.984 INFO [localhost-startStop-1] org.apache.catalina.startup.HostConfig.deployDirectory Deploying web application directory /application/apache-tomcat-8.0.27/webapps/host-manager
25-Mar-2020 08:13:47.039 INFO [localhost-startStop-1] org.apache.catalina.startup.HostConfig.deployDirectory Deployment of web application directory /application/apache-tomcat-8.0.27/webapps/host-manager has finished in 55 ms
25-Mar-2020 08:13:47.040 INFO [localhost-startStop-1] org.apache.catalina.startup.HostConfig.deployDirectory Deploying web application directory /application/apache-tomcat-8.0.27/webapps/manager
25-Mar-2020 08:13:47.069 INFO [localhost-startStop-1] org.apache.catalina.startup.HostConfig.deployDirectory Deployment of web application directory /application/apache-tomcat-8.0.27/webapps/manager has finished in 29 ms
25-Mar-2020 08:13:47.089 INFO [main] org.apache.coyote.AbstractProtocol.start Starting ProtocolHandler ["http-nio-8080"]
25-Mar-2020 08:13:47.117 INFO [main] org.apache.coyote.AbstractProtocol.start Starting ProtocolHandler ["ajp-nio-8009"]
25-Mar-2020 08:13:47.139 INFO [main] org.apache.catalina.startup.Catalina.start Server startup in 1605 ms
确认8080端口
[root@test bin]# netstat -ntpl|grep 8080
tcp6 0 0 :::8080 :::* LISTEN 7303/java
查看进程名
[root@test bin]# ps -ef |grep java
root 7303 1 2 08:13 pts/0 00:00:04 /application/jdk/bin/java -Djava.util.logging.config.file=/application/tomcat/conf/logging.properties -Djava.util.logging.manager=org.apache.juli.ClassLoaderLogManager -Djava.endorsed.dirs=/application/tomcat/endorsed -classpath /application/tomcat/bin/bootstrap.jar:/application/tomcat/bin/tomcat-juli.jar -Dcatalina.base=/application/tomcat -Dcatalina.home=/application/tomcat -Djava.io.tmpdir=/application/tomcat/temp org.apache.catalina.startup.Bootstrap start
root 7332 7191 0 08:16 pts/0 00:00:00 grep --color=auto java
[root@test bin]#
如果不过滤的话现象是这样的
[root@test bin]# netstat -ntpl
Active Internet connections (only servers)
Proto Recv-Q Send-Q Local Address Foreign Address State PID/Program name
tcp 0 0 0.0.0.0:22 0.0.0.0:* LISTEN 6867/sshd
tcp 0 0 127.0.0.1:25 0.0.0.0:* LISTEN 6952/master
tcp6 0 0 :::8009 :::* LISTEN 7303/java
tcp6 0 0 :::8080 :::* LISTEN 7303/java
tcp6 0 0 :::22 :::* LISTEN 6867/sshd
tcp6 0 0 ::1:25 :::* LISTEN 6952/master
tcp6 0 0 127.0.0.1:8005 :::* LISTEN 7303/java
[root@test bin]#
会有三个有关Java的进程
此时页面登录试一下
http://10.0.0.41:8080/
第七个历程:修改后台管理用户名和密码
[root@test conf]# pwd
/application/apache-tomcat-8.0.27/conf
[root@test conf]# vim tomcat-users.xml
32 <!--
33 <role rolename="tomcat"/>
34 <role rolename="role1"/>
35 <user username="tomcat" password="tomcat" roles="tomcat"/>
36 <user username="both" password="tomcat" roles="tomcat,role1"/>
37 <user username="role1" password="tomcat" roles="role1"/>
38 -->
从这里开始就是自己手动添加的
39 <role rolename="manager-gui"/>
40 <role rolename="admin-gui"/>
41 <user username="tomcat" password="tomcat" roles="manager-gui,admin-gui"/>
从这里开始就是自己手动添加的
42 </tomcat-users>
配置完成后重启服务(其实tomcat服务没有重启功能,只能是手动关闭和打开)
密码和用户都时tomcat
补充:8005端口的作用
shutdown.sh ---->catalina.sh----->向8005端口发送了SHUTDOWN信号------>结束tomcat服务进程
[root@test yum.repos.d]# netstat -ntpl |grep 8080
tcp6 0 0 :::8080 :::* LISTEN 7592/java
[root@test yum.repos.d]# echo "SHUTDOWN"|nc 127.0.0.1 8005
[root@test yum.repos.d]# netstat -ntpl |grep 8080
[root@test yum.repos.d]#
nc命令的作用:
nc 127.0.0.1 8005 #192.168.1.11连接端口
具体见linux命令手册
http://linux.51yip.com/search/nc
tomcat配置文件解析:
22 <Server port="8005" shutdown="SHUTDOWN"> 接收关闭服务信号端口
69 <Connector port="8080" protocol="HTTP/1.1" 接收用户访问HTTP请求端口信息
70 connectionTimeout="20000" 连接超时时间(默认毫秒)
71 redirectPort="8443" /> 接收用户访问HTTPS请求端口信息
91 <Connector port="8009" protocol="AJP/1.3" redirectPort="8443" />
用于与其他http服务建立连接通讯端口信息
123 <Host name="localhost" appBase="webapps" 用于定义网站域名信息 站点目录信息
124 unpackWARs="true" autoDeploy="true"> 是否自动部署解压上传代码信息 war包(java代码)
135 <Valve className="org.apache.catalina.valves.AccessLogValve" directory="logs" 生成响应tomcat日志
136 prefix="localhost_access_log" suffix=".txt" 生成日志文件信息
137 pattern="%h %l %u %t "%r" %s %b"
部署jpress网站
第一个历程:获取代码包
将代码包放入到站点目录下,不要放到ROOT目录下。
[root@test yum.repos.d]# mkdir /html/blog -p
[root@test yum.repos.d]# cd /html/blog/
[root@test blog]# ll
total 0
[root@test blog]# rz -E
rz waiting to receive.
[root@test blog]# ll
total 20312
-rw-r--r-- 1 root root 20797013 Mar 25 03:13 jpress-web-newest.war
[root@test blog]#
不需要自己手动解压,只需要将配置文件中的站点目录改为/html/blog目录即可
[root@test conf]# pwd
/application/tomcat/conf
[root@test conf]# vim server.xml
123 <Host name="localhost" appBase="/html/blog/"
修改完配置文件后需要重启服务才能识别新的配置
重启tomcat服务
(这里重启服务时会报一些其他的信息,可以不必理会)
第二个历程:将数据库信息部署一下
MariaDB [(none)]> create database lsy;
Query OK, 1 row affected (0.00 sec)
MariaDB [(none)]> use lsy
Database changed
MariaDB [lsy]> show tables;
Empty set (0.00 sec)
MariaDB [lsy]> grant all on lsy.* to 'lsy'@'172.16.1.%' identified by '000000';
Query OK, 0 rows affected (0.00 sec)
MariaDB [lsy]>
MariaDB [lsy]>
MariaDB [lsy]> exit
Bye
第三个历程:这个网站的初始化界面有点特殊,不能直接跳转,需要自己输入
注意:出现这个页面后不会自己跳转,
需要你重启tomcat服务后再手动输入信息进行跳转
[root@test 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@test bin]# 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.
[root@test bin]#
部署完成
tomcat服务JVM优化(内存)
vim /application/tomcat/bin/catalina.sh
99行: JAVA_OPTS="-Xms256m -Xmx512m -Xss1024k -XX:PermSize=128m -XX:MaxPermSize=256m"
-Xms 为jvm启动时分配的初始内存
-Xmx 为jvm运行分配的最大内存
-Xss 每个线程退栈的大小,一般情况下256k足够。影响此进程中并发线程数量
-XX:PermSize JVN初始分配非堆栈内存
-XX:MaxPermSize JVM最大允许分配的非退栈内存
查看修改的内存有没有变化
(需要将站点目录修改回来,不能再是咱们刚才修改的自定的目录)
默认站点目录
[root@test tomcat]# pwd
/application/tomcat/webapps
[root@test conf]# pwd
/application/tomcat/conf
[root@test conf]# vim server.xml
123 <Host name="localhost" appBase="webapps"
重启服务
[root@test 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
Java HotSpot(TM) 64-Bit Server VM warning: ignoring option PermSize=128m; support was removed in 8.0
Java HotSpot(TM) 64-Bit Server VM warning: ignoring option MaxPermSize=256m; support was removed in 8.0
[root@test bin]# 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.
[root@test bin]#
这里也会报一些其他的信息,不必理会
补充tomcat基础知识
tomcat程序服务端口作用:
8080:用户浏览器客户端进行访问页面端口信息
8005:接收关闭服务信号信息
shutdown.sh --> catalina.sh --> 向8005端口发送了SHUTDOWN信号 ---> 结束tomcat服务进程
8009:用于和其他HTTP服务建立通讯
tomcat服务目录结构
bin --- tomcat程序命令信息
. startup.sh --- 启动程序脚本文件
· shutdown.sh --- 关闭程序脚本文件
· catalina.sh --- 被启动和关闭脚本所调用 优化JVM信息
conf --- tomcat程序配置文件
· server.xml --- tomcat程序主配置文件
· tomcat-users.xml --- 用于在后台管理查看tomcat信息
===========================================================================
补充后台用户文件如何编写:
vim tomcat_users.xml
<role rolename="manager-gui"/>
<role rolename="admin-gui"/>
<user username="tomcat" password="tomcat" roles="manager-gui,admin-gui"/>
===========================================================================
lib --- tomcat程序所需库文件信息
logs --- tomcat程序日志文件信息
catalina.2020-03-25.log
说明:tomcat程序运行情况日志信息,此文件中的信息也会输出到catalina.out,应用向console输出日志不会出现在此文件
简单来说就是tomcat启动或停止运行日志文件
catalina.out
说明:程序标准输出和错误输出的信息都会记录到此文件中,并且包含向console输出的日志信息
简单来说就是tomcat程序运行过程中最相信日志文件,默认此文件不会自动切割
===========================================================
此文件日志切割方式:
01. logroate进行日志切割
02. crond进行日志切割
03. log4j进行日志切割
===========================================================
localhost.2020-03-25.log
说明:程序应用初始化未处理的异常信息会记录到此文件中,包含tomcat运行状态信息
localhost_access_log.2020-03-25.txt
说明:访问tomca程序日志文件 类似 nginx access日志文件
manager.2020-03-25.log
说明:管理tomcat服务日志信息
webapps --- tomcat程序默认站点目录
编写配置文件信息
# vim server.xml
22 <Server port="8005" shutdown="SHUTDOWN"> 接收关闭服务信号端口
69 <Connector port="8080" protocol="HTTP/1.1" 接收用户访问HTTP请求端口信息
70 connectionTimeout="20000" 连接超时时间(默认毫秒)
71 redirectPort="8443" /> 接收用户访问HTTPS请求端口信息
91 <Connector port="8009" protocol="AJP/1.3" redirectPort="8443" />
用于与其他http服务建立连接通讯端口信息
123 <Host name="localhost" appBase="/html/blog" 用于定义网站域名信息 站点目录信息
124 unpackWARs="true" autoDeploy="true"> 是否自动部署解压上传代码信息 war包(java代码)
135 <Valve className="org.apache.catalina.valves.AccessLogValve" directory="logs" 生成响应tomcat日志
136 prefix="localhost_access_log" suffix=".txt" 生成日志文件信息
137 pattern="%h %l %u %t "%r" %s %b" />
如果网站搭建完毕无法连接数据库,需要修改代码文件
jpress-web-newest/WEB-INF/classes/db.properties == wordpress wp-config.php
#Auto create by JPress
#Wed Mar 25 15:26:48 CST 2020
db_name=blog
db_host_port=3306
db_tablePrefix=jpress_
db_host=172.16.1.51
db_password=oldboy123
db_user=blog
tomcat服务JVM优化 (内存)
vim /application/tomcat/bin/catalina.sh
JAVA_OPTS="-Xms256m -Xmx512m -Xss1024k -XX:PermSize=128m -XX:MaxPermSize=256m"
-Xms 为jvm启动时分配的初始内存
-Xmx 为jvm运行分配的最大内存
-Xss 每个线程退栈的大小,一般情况下256k足够。影响此进程中并发线程数量
-XX:PermSize JVN初始分配非堆栈内存
-XX:MaxPermSize JVM最大允许分配的非退栈内存