常用软件安装及使用目录

资料链接: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.8.0_60 /application/jdksed -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.27.tar.gz -C /application/
ln -s /application/apache-tomcat-8.0.27 /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 1
.
├── 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
7 directories, 4 files
6. 启动关闭tomcat
/application/tomcat/bin/startup.sh
/application/tomcat/bin/shutdown.sh
netstat -tunlp|grep java

访问http://10.0.0.17:8080/

冒号中文无法显示

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 -4 /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="8005" shutdown="SHUTDOWN">
#将shutdown 传给8005会直接停掉tomcat,不安全,可以改掉SHUTDOWN这个默认口令
#echo shutdown|nc 10.0.0.17 8805<Connector port="8080" protocol="HTTP/1.1"connectionTimeout="20000"redirectPort="8443" /><!--<Connector port="8009" protocol="AJP/1.3" redirectPort="8443" />-->

9. 自定义url规则(nginx location)

cp /application/tomcat/conf/server.xml{,.ori}

cp /application/tomcat/conf/server.xml{,.ori}vim /application/tomcat/conf/server.xml +125<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"/>/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 '123456';

上传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.27.tar.gz
cp -a apache-tomcat-8.0.27 tomcat8_1
cp -a apache-tomcat-8.0.27 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.shnetstat -tunlp|grep java

# 将每个实例的网页差异化

echo 8081 >>/application/tomcat8_1/webapps/ROOT/index.jsp
echo 8082 >>/application/tomcat8_2/webapps/ROOT/index.jsp 

2. Tomcat反向代理集群

nginx反向代理:LNMP机器  tomcat

Nginx + LNMP机器

upstream server_pools{server 10.0.0.7:80;server 10.0.0.8:80;
}

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  1;
events {worker_connections  1024;
}
http {include       mime.types;default_type  application/octet-stream;sendfile        on;keepalive_timeout  65;upstream web_pools {server 10.0.0.17:8081;server 10.0.0.17:8082;}server {listen       80;server_name  localhost;location / {root   html;index  index.jsp index.html index.htm;proxy_pass http://web_pools;
        }error_page   500 502 503 504  /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 +97CATALINA_OPTS="$CATALINA_OPTS
-Dcom.sun.management.jmxremote
-Dcom.sun.management.jmxremote.port=12345
-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 12345

右击

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.confsystemctl 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 +97
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

转载于:https://www.cnblogs.com/machangwei-8/p/10421422.html

tomcat安装及使用详解相关推荐

  1. Tomcat安装及配置详解

    转载:http://www.ttlsa.com/tomcat/tomcat-install-and-configure/ 一,Tomcat简介 Tomcat 服务器是一个免费的开放源代码的Web 应用 ...

  2. Tomcat(二):tomcat配置文件server.xml详解和部署简介

    1. 入门示例:虚拟主机提供web服务 该示例通过设置虚拟主机来提供web服务,因为是入门示例,所以设置极其简单,只需修改$CATALINA_HOME/conf/server.xml文件为如下内容即可 ...

  3. Apache + Tomcat集群配置详解(1)

    Apache + Tomcat集群配置详解(1) 一.软件准备 Apache 2.2 : http://httpd.apache.org/download.cgi,下载msi安装程序,选择no ssl ...

  4. centos 安装mysql5.7_Zabbix 4.2.5 安装部署实践详解

    [导读]云计算背景下,无论是大数据.物联网还是边缘计算,规模化后大量的设备需要保证正常运行,在人员一定的情况下,就需要提高运行维护效率.同时随着智能化被应用在人们生活的方方面面,关联性也越来越紧密,即 ...

  5. mysql-win安装教程,WINDOWS下安装MYSQL教程详解

    1.下载安装包 2.配置环境变量 2.1 解压所下载的压缩包 2.2 环境变量 win 10 电脑 这么进去 3.生成data文件 在你解压的目录下,eg:F:\Program Files\mysql ...

  6. python离线包安装_python 通过pip freeze、dowload打离线包及自动安装的过程详解(适用于保密的离线环境...

    python的pip是其包管理工具,相当方便好用.本文只介绍pip 如何通过其freeze命令打离线包,及其离线包的安装脚本.这个知识点,特别适用于不适合连通互联网,设备需要物理隔绝,保密要求严格的客 ...

  7. linux全自动安装光盘,CentOS7全自动安装光盘制做详解

    CentOS7全自动安装光盘制做详解node 1 复制光盘文件linux 1)挂载iso镜像ios 建立目录用于挂载光盘:redis mkdir /root/centos7 挂载iso镜像vim mo ...

  8. mysql安装教程8.0.21安装_mysql8.0.21安装教程图文详解

    1.下载 下载链接 点击download,这里可能需要登录甲骨文的账号,登录一下即可 2.解压 下载好会得到一个安装包 把它解压到一个能找到的目录下即可,我的是这样(my.ini文件你们应该没有) 3 ...

  9. python flask安装_python flask安装和命令详解

    Flask Web开发实战学习笔记 Flask简介 Flask是使用Python编写的Web微框架.Web框架可以让我们不用关 心底层的请求响应处理,更方便高效地编写Web程序.因为Flask核心简 ...

最新文章

  1. PHP如何通过Http Post请求发送Json对象数据?
  2. 调用微信高级群发接口--视频群发接口出问题(微信官方文档错误纠正)
  3. qstring 字符相同 不相等_我的编程手册 -- Java 基础篇·字符串 String
  4. java –cp ./:_成为Java流专家–第2部分:中级操作
  5. [css] 请问background-attachmentn属性有什么用途?
  6. vue 接口节流_vue输入节流,避免实时请求接口的实例代码
  7. logging.getLogger(logger)
  8. 阿里云联合顶级卫星影像公司发布数字地球引擎
  9. 计算机科学讲座的策划书,计算机科学与工学院女生新生讲座策划书.doc
  10. sockets php,PHP: Sockets - Manual
  11. OpenGL基础49:高度贴图(下)
  12. zabbix 3.0快速安装简介(centos 6)
  13. uni-app 条形码(一维码)/二维码生成实现
  14. SylixOS 缺页异常
  15. Sequelize 大于_间接效应值大于1是正常的吗?Q群答疑20200405
  16. nodejs 服务端 音频拼接 合成 实现
  17. IIS上发布网站遇到的问题总结
  18. 微信支付接入-弹出支付框输入密码后一直在转圈,20s后提示:支付失败,请稍后再试
  19. 62个程序员崩溃的瞬间,你经历过了吗?哈哈哈哈哈嗝~
  20. POS标记——HMM模型

热门文章

  1. 2017年重要数据安全事件解读
  2. jquery 半透明遮罩效果 小结
  3. Debian Security Advisory(Debian安全报告) DSA-4410-1 openjdk-8 security update
  4. 第十四章:springboot 定时任务
  5. weex开发安卓原生应用
  6. 关系型数据库之Mysql备份(五)
  7. POJ2253 Frogger(最短路径)
  8. HDU 1824 Let's go home
  9. 易宝典文章——玩转Office 365中的Exchange Online服务 之五 怎样利用PSl连接Exchange Online实现管理...
  10. android开发 BaseAdapter中getView()里的3个参数是什么意思