tomcat安装及使用详解
资料链接:https://pan.baidu.com/s/1XOUlneFqt-_1tOLSmc-E1g 网盘分享的文件在此
1. Tomcat简介
Tomcat是一个web服务器
web服务器:httpd,nginx
web 处理静态文件:html css、js、jpg,png
Tomcat 处理 html文件
php软件解析php文件
jdk处理jsp文件
tomcat+JDK
JDK java开发者工具包
java 写一次,处处使用
jdk java虚拟机
跨平台
2. tomcat软件版本选择
生产环境版本和开发协商
tomcat和jdk版本要并行 tomcat8 -- jdk 8
3. 安装JDK(以后所有涉及到java应用都需要安装)
环境 :hostname web03 ip 10.0.0.17/172.16.1.17
mkdir -p /application/tools/
tar xf jdk-8u60-linux-x64.tar.gz -C /application/
ln -s /application/jdk1..0_60 /application/jdk sed -i.ori '$a export JAVA_HOME=/application/jdk\nexport PATH=$JAVA_HOME/bin:$JAVA_HOME/jre/bin:$PATH\nexport CLASSPATH=.:$JAVA_HOME/lib:$JAVA_HOME/jre/lib:$JAVA_HOME/lib/tools.jar' /etc/profile /etc/profile
source /etc/profile
java -version
4. 安装tomcat
tar xf apache-tomcat-8.0..tar.gz -C /application/
ln -s /application/apache-tomcat-8.0. /application/tomcat
echo 'export TOMCAT_HOME=/application/tomcat'>>/etc/profile
source /etc/profile
chown -R root.root /application/jdk/ /application/tomcat/
/application/tomcat/bin/version.sh
5. tomcat的目录结构
[root@web03 tools]# cd /application/tomcat/
[root@web03 tomcat]# tree -L
.
├── bin startup.sh shutdown.sh catalina.sh(核心)
├── conf server.xml(主配置文件) tomcat-users.xml
├── lib
├── LICENSE
├── logs 日志目录 catalina.out tomcat实时日志
├── NOTICE
├── RELEASE-NOTES
├── RUNNING.txt
├── temp
├── webapps 站点目录
└── work
directories, files
. 启动关闭tomcat
/application/tomcat/bin/startup.sh
/application/tomcat/bin/shutdown.sh
netstat -tunlp|grep java
冒号中文无法显示
6、遇到tomcat启动慢的问题:
1.现象
在CentOS7启动Tomcat时,启动过程很慢,需要几分钟,经过查看日志,发现耗时在这里:是session引起的随机数问题导致的。Tocmat的Session ID是通过SHA1算法计算得到的,计算Session ID的时候必须有一个密钥。为了提高安全性Tomcat在启动的时候会通过随机生成一个密钥。
22-Apr-2017 19:33:07.623 INFO [localhost-startStop-1] org.apache.catalina.util.SessionIdGeneratorBase.createSecureRandom Creation of
SecureRandom instance for session ID generation using [SHA1PRNG] took [55,507] milliseconds.
22-Apr-2017 19:33:07.653 INFO [localhost-startStop-1] org.apache.catalina.startup.HostConfig.deployDirectory Deployment of web appli
cation directory /application/apache-tomcat-8.0.27/webapps/ROOT has finished in 55,935 ms
主要原因是生成随机数的时候卡住了,导致tomcat启动不了。
是否有足够的熵来用于产生随机数,可以通过如下命令来查看
[root@oldboy tools]# cat /proc/sys/kernel/random/entropy_avail
为了加速/dev/random提供随机数的速度,你可以通过操作设备的外设,让其产生大量的中断(如网络传输数据,按键,移动鼠标,在命令行敲几个不同的命令,俗称聚气。
cat /dev/random 会消耗能量
方法1:
vim $JAVA_HOME/jre/lib/security/java.security
securerandom.source=file:/dev/random
改为
securerandom.source=file:/dev/urandom
方法2:
vim $TOMCAT_HOME/bin/catalina.sh
if [[ "$JAVA_OPTS" != *-Djava.security.egd=* ]]; then
JAVA_OPTS="$JAVA_OPTS -Djava.security.egd=file:/dev/urandom"
fi
这个系统属性egd表示熵收集守护进程(entropy gathering daemon)
方法3:(推荐)
yum install rng-tools # 安装rngd服务(熵服务,增大熵池)
systemctl start rngd # 启动服务
7. tomcat 管理功能
vim /application/tomcat/conf/tomcat-users.xml
[root@web03 webapps]# tail - /application/tomcat/conf/tomcat-users.xml
<role rolename="manager-gui"/>
<role rolename="admin-gui"/>
<user username="tomcat" password="tomcat" roles="manager-gui,admin-gui"/>
</tomcat-users>
/application/tomcat/bin/shutdown.sh
/application/tomcat/bin/startup.sh
从管理网页可以上传war包,因为是root用户,别人可以上传木马病毒,所以不安全,不建议生产环境使用web界面,不建议公网访问web界面,不安全。测试环境可以给开发使用,省事
http://10.0.0.17:8080/memtest/meminfo.jsp
8.Tomcat主配置文件
vim /application/tomcat/conf/server.xml
#三个端口
<Server port="" shutdown="SHUTDOWN">
#将shutdown 传给8005会直接停掉tomcat,不安全,可以改掉SHUTDOWN这个默认口令
#echo shutdown|nc 10.0.0.17
<Connector port="" protocol="HTTP/1.1"
connectionTimeout=""
redirectPort="" /> <!--<Connector port="" protocol="AJP/1.3" redirectPort="" />-->
9. 自定义url规则(nginx location)
cp /application/tomcat/conf/server.xml{,.ori}
cp /application/tomcat/conf/server.xml{,.ori} vim /application/tomcat/conf/server.xml + <Context path="" docBase="/application/tomcat/webapps/memtest" debug="" reloadable="false" crossContext="true"/> <Context path="/40team" docBase="/application/tomcat/webapps/memtest" debug="" reloadable="false" crossContext="true"/> /application/tomcat/bin/shutdown.sh
/application/tomcat/bin/startup.sh
访问并测试:http://10.0.0.17:8080/meminfo.jsp
http://10.0.0.17:8080/
http://10.0.0.17:8080/40team/meminfo.jsp
# 相当于nginx server root html;
=============
nginx location
root html
location /
location /oldboy/
{
root /data/oldboy/
}
=====
<Host name="localhost" appBase="webapps" unpackWARs="true" autoDeploy="true">
<Context path="" docBase="/application/tomcat/webapps/memtest" debug="0" reloadable="false" crossContext="true"/>
<Context path="/40team" docBase="/application/tomcat/webapps/memtest" debug="0" reloadable="false" crossContext="true"/>
1应该是虚拟主机 ,2是默认站点目录,不建议直接修改站点目录,想让服务器访问指定目录可以用类似nginx的location的功能,即如下。3,4是war包在站点目录下自动解压的配置 5是相当于locationp匹配/,后面6是相当于 root html; 即是访问的目录。7是访问这个目录时自动定位到目录8去,由此可以知道,访问的目录并不一定是真实存在的,有可能是重定位的,这样一来,站点目录结构的安全性能够得到加强,
比较差别:
diff /application/tomcat/conf/server.xml{,.ori}
10. 搭建Jpress
类似wordpess博客站点
环境:Linux Tomcat JDK MySQL(Mariadb)
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 '';
上传jpress的war到站点目录/application/tomcat/webapps 下,由于tomcat主配置文件设置,他会自动解压war包,当然只要解压包目录还在,内容无论有没有,它就不会重新解压
访问目录 http://10.0.0.17:8080/jpress-web-newest/
/application/tomcat/bin/shutdown.sh
/application/tomcat/bin/startup.sh
首页: http://10.0.0.17:8080/jpress-web-newest/
管理页: http://10.0.0.17:8080/jpress-web-newest/admin
jpress 有bug,要先启数据库,不然tomcat的日志会在开机时一直报错,然后过一段时间磁盘空间全被填满
mv jpress-web-newest/* /tmp/jpress
11.参考资料
JAVA企业级应用TOMCAT实战 http://blog.oldboyedu.com/java-tomcat/
原文链接:http://www.zyops.com/java-tomcat
1. Tomcat多实例
多虚拟主机:nginx 多个Server标签(域名,ip,端口) 进程数量固定 master+worker
多实例(多进程):同一个程序启动多次,分为两种情况:第一种:一台机器跑多个站点;第二种:一个机器跑一个站点多个实例,配合负载均衡
cd /application/tools/
tar xf apache-tomcat-8.0..tar.gz
cp -a apache-tomcat-8.0. tomcat8_1
cp -a apache-tomcat-8.0. 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
cp -a tomcat8_1 tomcat8_2 /application/ /application/tomcat8_1/bin/startup.sh
/application/tomcat8_2/bin/startup.sh netstat -tunlp|grep java
# 将每个实例的网页差异化
echo >>/application/tomcat8_1/webapps/ROOT/index.jsp
echo >>/application/tomcat8_2/webapps/ROOT/index.jsp
2. Tomcat反向代理集群
nginx反向代理:LNMP机器 tomcat
Nginx + LNMP机器
upstream server_pools{
server 10.0.0.7:;
server 10.0.0.8:;
}
server {
……
location /{
……
proxy_pass http://server_pools;
}
}
Nginx + Tomcat
upstream server_pools{
server 10.0.0.17:8081;
server 10.0.0.17:8082;
server 10.0.0.18:8081;
server 10.0.0.18:8082;
}
server {
……
location /{
……
proxy_pass http://server_pools;
}
}
CentOS6 CentOS7 融合
# 在CentOS6的lb01操作
mv /application/nginx/conf/nginx.conf{,.ori}
egrep -v '#|^$' /application/nginx/conf/nginx.conf.default > /application/nginx/conf/nginx.conf
[root@lb01 ~]# cat /application/nginx/conf/nginx.conf
worker_processes ;
events {
worker_connections ;
}
http {
include mime.types;
default_type application/octet-stream;
sendfile on;
keepalive_timeout ; upstream web_pools {
server 10.0.0.17:;
server 10.0.0.17:;
}
server {
listen ;
server_name localhost;
location / {
root html;
index index.jsp index.html index.htm;
proxy_pass http://web_pools;
}
error_page /50x.html;
location = /50x.html {
root html;
}
}
}
3. Tomcat监控
jps -lvm
排除tomcat故障步骤:
a. 查看catalina.out
b. sh show-busy-java-threads.sh ============
远程监控tomcat
windows软件监控 先安装Java C:\Program Files\Java\jdk1.8.0_31\bin
zabbix 监控
3.1 让tomcat开启远程监控功能
vim /application/tomcat8_1/bin/catalina.sh + CATALINA_OPTS="$CATALINA_OPTS
-Dcom.sun.management.jmxremote
-Dcom.sun.management.jmxremote.port=
-Dcom.sun.management.jmxremote.authenticate=false
-Dcom.sun.management.jmxremote.ssl=false
-Djava.rmi.server.hostname=10.0.0.17" echo "10.0.0.17 web03" >>/etc/hosts /application/tomcat8_1/bin/shutdown.sh
/application/tomcat8_1/bin/startup.sh
netstat -tunlp|grep
右击
3.2 zabbix监控tomcat
3.2.1 zabbix Server 需要开启java监控功能(做1次)
sed -i -e '220a JavaGateway=127.0.0.1' -e '236a StartJavaPollers=5' /etc/zabbix/zabbix_server.conf systemctl restart zabbix-server.service
sed -e 可以执行多条命令,而a后面不能用;会被当成字符加进去的
zabbix c ,tomcat java ,javagateway 翻译官
3.2.2 安装zabbix_java_gateway(java程序),也需要jdk(openjdk) (做1次)
yum install zabbix-java-gateway
systemctl start zabbix-java-gateway.service
netstat -tunlp|grep java
需要有zabbix的安装源的
3.2.3 tomcat需要开启远程监控功能 (每一个实例都要做)
4. Tomcat优化
4.1 安全优化
关闭端口保护 8005 SHUTDOWN
ajp连接端口保护 8009 注释
禁用管理端 ###将webapps下的内容全移走,再建一个ROOT目录
降权启动 降低用户权限启动
[root@web03 ~]# pkill java
[root@web03 ~]# useradd tomcat
[root@web03 ~]# cp -a /application/tools/tomcat8_1 /home/tomcat/
[root@web03 ~]# chown -R tomcat.tomcat /home/tomcat/tomcat8_1/
[root@web03 ~]# su -c '/home/tomcat/tomcat8_1/bin/startup.sh' tomcat
Using CATALINA_BASE: /home/tomcat/tomcat8_1
Using CATALINA_HOME: /home/tomcat/tomcat8_1
Using CATALINA_TMPDIR: /home/tomcat/tomcat8_1/temp
Using JRE_HOME: /application/jdk
Using CLASSPATH: /home/tomcat/tomcat8_1/bin/bootstrap.jar:/home/tomcat/tomcat8_1/bin/tomcat-juli.jar
Tomcat started.
[root@web03 ~]# ps -ef|grep tomcat
4.2 性能优化 ###瓶颈主要不在cpu,而是内存
tomcat性能取决于你的内存大小
上策:优化代码
中策:jvm优化机制 垃圾回收机制 把不需要的内存回收
优化jvm--优化垃圾回收策略
优化catalina.sh配置文件。在catalina.sh配置文件中添加以下代码:
#tomcat分配1G内存模板
JAVA_OPTS="-Djava.awt.headless=true -Dfile.encoding=UTF-8 -server -Xms1024m -Xmx1024m -XX:NewSize=512m -XX:MaxNewSize=512m -XX:PermSize=512m -XX:MaxPermSize=512m"
JAVA_OPTS="-Djava.awt.headless=true -Dfile.encoding=UTF-8 -server -Xms800m -Xmx800m -XX:NewSize=400m -XX:MaxNewSize=400m -XX:PermSize=400m -XX:MaxPermSize=400m"
下策:加足够大的内存
下下策:每天0点定时重启tomcat
vim /home/tomcat/tomcat8_1/bin/catalina.sh +
JAVA_OPTS="-Djava.awt.headless=true -Dfile.encoding=UTF-8 -server -Xms800m -Xmx800m -XX:NewSize=400m -XX:MaxNewSize=400m -XX:PermSize=400m -XX:MaxPermSize=400m"
su -c '/home/tomcat/tomcat8_1/bin/shutdown.sh' tomcat
su -c '/home/tomcat/tomcat8_1/bin/startup.sh' tomcat
tomcat安装及使用详解的更多相关文章
- Tomcat安装及配置详解
Tomcat安装及配置详解 一,Tomcat简介 Tomcat 服务器是一个免费的开放源代码的Web 应用服务器,Tomcat是Apache 软件基金会(Apache Software Found ...
- tomcat安装配置常见问题详解
历经波折,终于把tomcat装好了.记录下过程供自己和后来的初学者参考吧! 本文先后介绍了tomcat的下载安装方法.安装和启动不成功的常见原因 以及启动tomcat后如何配置上下文. 一.下载安装 ...
- Apache + Tomcat集群配置详解 (1)
一.软件准备 Apache 2.2 : http://httpd.apache.org/download.cgi,下载msi安装程序,选择no ssl版本 Tomcat 6.0 : http://to ...
- Tomcat配置(二):tomcat配置文件server.xml详解和部署简介
*/ .hljs { display: block; overflow-x: auto; padding: 0.5em; color: #333; background: #f8f8f8; } .hl ...
- Tomcat(二):tomcat配置文件server.xml详解和部署简介
Tomcat系列文章:http://www.cnblogs.com/f-ck-need-u/p/7576137.html 1. 入门示例:虚拟主机提供web服务 该示例通过设置虚拟主机来提供web服务 ...
- Linux中Nginx安装与配置详解
转载自:http://www.linuxidc.com/Linux/2016-08/134110.htm Linux中Nginx安装与配置详解(CentOS-6.5:nginx-1.5.0). 1 N ...
- Nginx + Tomcat 负载均衡配置详解
Nginx常用操作指南一.Nginx 与 Tomcat 安装.配置及优化1. 检查和安装依赖项 yum -y install gcc pcre pcre-devel zlib zlib-devel o ...
- libCURL开源库在VS2010环境下编译安装,配置详解
libCURL开源库在VS2010环境下编译安装,配置详解 转自:http://my.oschina.net/u/1420791/blog/198247 http://blog.csdn.net/su ...
- zookeeper的安装(图文详解。。。来点击哦!)
zookeeper的安装(图文详解...来点击哦!) 一.服务器的配置 三台服务器: 192.168.83.133 sunshine 192.168.83.134 sunshineMin 19 ...
随机推荐
- leetcode 217. Contains Duplicate 287. Find the Duplicate Number 442. Find All Duplicates in an Array 448. Find All Numbers Disappeared in an Array
后面3个题都是限制在1-n的,所有可以不先排序,可以利用巧方法做.最后两个题几乎一模一样. 217. Contains Duplicate class Solution { public: bool ...
- 关于chrom56版本以后的form标签提交bug
最近遇到一个情况: 低版本的浏览器i运行如下代码: function query_mission(query_tag) { // 创建form表单 var ip_list = getIpList() ...
- JIRA使用方法,简易图解
我们公司要用版本控制(SVN)和过程管理(JIRA)相配合开发软件,所以两个都得用喽! JIRA是集项目计划.任务分配.需求管理.错误跟踪于一体的商业软件.JIRA创建的问题类型包 ...
- 基于VUE.JS的移动端框架Mint UI
Mint UI GitHub:github.com/ElemeFE/mint 项目主页:mint-ui.github.io/# Demo:elemefe.github.io/mint- 文档:mint ...
- 对ArrayList存放的对象,按照对象的某个属性进行排序。
使用Collections.sort()方法进行实现: import java.util.ArrayList; import java.util.Collections; import java.ut ...
- [原创]升级Gerrit的commit-msg,检查git commit时必须填写开发任务编号TaskID
公司使用git+gerrit+jenkins进行持续集成实践,其中gerrit用来进行Code Review.另外我们自己研发了一套敏捷项目管理系统TPM(TeamPlus Management),用 ...
- Oracle cursors 游标 for循环遍历
oracle提供了for循环语句,让我们可以遍历select搜索的结果.用法也很简单,代码如下: DECLARE ; BEGIN FOR C IN C1 LOOP -- 对select出的每一行进行操 ...
- MacOS(10.11.6)+Qt(5.5.1)+Xcode(8.2) C++开发环境配置
VMware虚拟机安装MacOS(这里安装的是MacOS X 10.11.6), 百度很多, 不再详述. 安装Xcode(这里安装的是Xcode8.2) 下载(https://developer.ap ...
- [shell]关闭超时的进程
应同事要求,写了个shell, 主要功能为查找超时的进程,并关闭! 调用方式: shell_sheep : 为进程名 30 : 为30分钟 从打印的日志能看出会多两个PID,不要惊慌,由于你执行时会 ...
- Spring第四天——SSH整合
(从整合开始,使用回归使用eclipse) 一.三大框架版本: struts2 hibernate5 spring4 二.SSH三大框架回顾: Hibernate: ORM思想 核心配置文件: 单独 ...