Tomcat部署最佳实践

标签: linux

笔者Q:972581034 交流群:605799367。有任何疑问可与笔者或加群交流


tomcat是玩web软件必会技能之一,今天我给大家介绍一下tomcat的部署,监控以及调优。


一、运行环境

[root@tomcat ~]# cat /etc/redhat-release
CentOS Linux release 7.2.1511 (Core)
[root@tomcat ~]# uname -r
3.10.0-327.el7.x86_64
[root@tomcat ~]# getenforce
Disabled
[root@tomcat ~]# systemctl status firewalld.service
● firewalld.service - firewalld - dynamic firewall daemon
Loaded: loaded (/usr/lib/systemd/system/firewalld.service; enabled; vendor preset: enabled)
Active: inactive (dead) since Mon 2017-04-24 06:49:46 CST; 1s ago
[root@tomcat ~]# free -h
total used free shared buff/cache available
Mem: 3.7G 128M 3.4G 8.5M 143M 3.4G
Swap: 1.0G 0B 1.0G
[root@tomcat ~]# lscpu |egrep -w "(CPU\(s\):|Model name|cache)"
CPU(s): 2 #因为小猫比较吃资源,这里用的双核4G
Model name: Intel(R) Core(TM) i7-6700HQ CPU @ 2.60GHz
L1d cache: 32K
L1i cache: 32K
L2 cache: 256K
L3 cache: 6144K

二、准备

软件包目录:/application/tools
安装目录:/application/
tomcat,jdk版本如下,大家可以去我的云盘下载。链接:http://pan.baidu.com/s/1qYS8uGc 密码:97hp
[root@tomcat tools]# ls /application/tools/
apache-tomcat-8.0.27.tar.gz jdk-8u60-linux-x64.tar.gz

三、部署

1.部署java环境

[root@tomcat ~]# cd /application/tools/
[root@tomcat tools]# tar xf jdk-8u60-linux-x64.tar.gz -C /application/
[root@tomcat tools]# ln -s /application/jdk1.8.0_60 /application/jdk
source /etc/profile
java -version
[root@tomcat tools]# sed -i.ori '$a export JAVA_HOME=/application/jdk\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
[root@tomcat tools]# source /etc/profile
[root@tomcat tools]# java -version

2.安装tomcat

[root@tomcat tools]# tar xf apache-tomcat-8.0.27.tar.gz -C /application/
[root@tomcat tools]# ln -s /application/apache-tomcat-8.0.27 /application/tomcat
[root@tomcat tools]# echo 'export TOMCAT_HOME=/application/tomcat'>>/etc/profile
[root@tomcat tools]# source /etc/profile
[root@tomcat tools]# chown -R root.root /application/jdk/ /application/tomcat/

3.启动服务

[root@tomcat tomcat]# /application/tomcat/bin/startup.sh

4.查看日志

[root@tomcat logs]# tailf catalina.out
#如果有start Server startup in 592 ms表示启动成功
24-Apr-2017 19:46:29.229 INFO [main] org.apache.catalina.startup.Catalina.start Server startup in 592 ms

5.启动慢问题

在CentOS启动Tomcat时,启动过程很慢,需要几分钟,经过查看日志,发现耗时在这里:是session引起的随机数问题导致的。Tocmat的Session ID是通过SHA1算法计算得到的,计算Session ID的时候必须有一个密钥。为了提高安全性Tomcat在启动的时候回通过随机生成一个密钥,解决方法如下:
yum install rng-tools # 安装rngd服务(熵服务,增大熵池)
systemctl start rngd # 启动服务

6.web界面说明

登录


管理界面

需要在配置文件添加如下内容

注意,这里只做测试用,如果在生产环境中会大大增加被入侵的风险,下面优化会讲到


7.虚拟目录


8.web管理界面

通常为了安全,会被这个功能关掉,或者使用VPN链接


Tomcat多实例

1.复制Tomcat目录

#注意之前的软链接
[root@tomcat ~]# cd /application/
[root@tomcat application]# cp -a apache-tomcat-8.0.32 tomcat8_1
[root@tomcat application]# cp -a apache-tomcat-8.0.32 tomcat8_2

2.修改配置文件

#创建多实例站点目录
[root@tomcat application]# mkdir -p /data/www/www/ROOT
#修改默认端口,管理端口,站点根目录
[root@tomcat tools]# sed -i '22s#8005#8011#;69s#8080#8081#;123s#appBase=".*"# appBase="/data/www/www"#' /application/tomcat8_1/conf/server.xml
[root@tomcat conf]# sed -i '22s#8005#8012#;69s#8080#8082#;123s#appBase=".*"# appBase="/data/www/www"#' /application/tomcat8_2/conf/server.xml

3.启动服务

[root@tomcat conf]# /application/tomcat8_1/bin/startup.sh
[root@tomcat conf]# /application/tomcat8_2/bin/startup.sh
[root@tomcat ~]# ss -lntp|grep java
LISTEN 0 100 :::8009 :::* users:(("java",pid=2819,fd=51))
LISTEN 0 1 ::ffff:127.0.0.1:8010 :::* users:(("java",pid=2819,fd=72))
LISTEN 0 1 ::ffff:127.0.0.1:8011 :::* users:(("java",pid=2855,fd=60))
LISTEN 0 1 ::ffff:127.0.0.1:8012 :::* users:(("java",pid=2886,fd=60))
LISTEN 0 100 :::8080 :::* users:(("java",pid=2819,fd=46))
LISTEN 0 100 :::8081 :::* users:(("java",pid=2855,fd=46))
LISTEN 0 100 :::8082 :::* users:(("java",pid=2886,fd=46))

说明:由于tomcat支持大并发能力有限,所有生产中不般不配虚拟主机,而使用多实例。一台机放四台,前面可使用nginx反向代理。


jpress部署实践

JPress,一个wordpress的java代替版本,使用JFinal开发。 需要maven支持。这里我也给大家提供了。下载后上传到/application/tools下执行下面的命令。链接:http://pan.baidu.com/s/1boMCXrD 密码:3wg4

cd /application/tools
tar xf apache-maven-3.3.9-bin.tar.gz -C /application/
ln -s /application/apache-maven-3.3.9 /application/maven
sed -i.ori2 '$a export MAVEN_HOME=/application/maven\nexport PATH="$MAVEN_HOME/bin:$PATH"' /etc/profile
source /etc/profile

把下载好的jpress-web-newest.war解压到/data/www/www/ROOT下

cd /data/www/www/ROOT
jar xf /application/tools/jpress-web-newest.war

创建数据库表

create database jpress;
grant all on jpress.* to jpress@'10.0.0.%' identified by '123456';

重启tomcat

for i in {1..2};do /application/tomcat8_$i/bin/shutdown.sh;done
for i in {1..2};do /application/tomcat8_$i/bin/startup.sh;done

现在浏览器就可以访问了,下面是我上传的两张图片

张耀的博客: http://www.zyops.com/java-tomcat

Tomcat监控:http://www.cnblogs.com/Csir/p/6758106.html

Tomcat调优:http://www.cnblogs.com/Csir/p/6758432.html

tomcat部署(一)的更多相关文章

  1. Tomcat部署web项目,如何直接通过域名访问,不加项目名称

    问题:下面的问题是互联网上问得比较多的,但是显然都是同一个问题. JavaWeb项目部署到tomcat服务之后设置不需要输入项目名称即可访问? Tomcat部署web项目,如何直接通过域名访问,不加项 ...

  2. Tomcat部署web应用程序

    对Tomcat部署web应用的方式总结,常见的有以下四种: 1.[替换ROOT目录] 最简单的一种方法,webapps目录下面ROOT文件夹的文件为你的文件,然后输入localhost:8080/首页 ...

  3. 如何制定tomcat部署时自己定义的docBase路径

    装了tomcat后发现tomcat安装在系统跟路径地下,每次部署的时候挺麻烦的,于是想指定一个自己定义的应用部署的路径: 以下是如何指定,相关文档请查看https://tomcat.apache.or ...

  4. Tomcat部署方式

    tomcat中三种部署项目的方法 第一种方法:在tomcat中的conf目录中,在server.xml中的,<host/>节点中添加: <Context path="/he ...

  5. Tomcat 部署

    <CATALINA_HOME>/webapps: Tomcat的主要Web发布目录,默认情况下把Web应用文件放于此目录. 1.war包部署:  将需要发布的web应用打成war文件, ( ...

  6. tomcat部署方法总结

    可以参考之前的:http://www.cnblogs.com/youxin/archive/2013/01/18/2865814.html 在Tomcat中部署Java Web应用程序有两种方式:静态 ...

  7. 解决tomcat部署多个虚拟机时报IllegalStateException: Web app root system property already set to 的问题

    解决tomcat部署多个虚拟机时报IllegalStateException: Web app root system property already set to 的问题 在web.xml中添加如 ...

  8. (转) Tomcat部署Web应用方法总结

    原文:http://blog.csdn.net/yangxueyong/article/details/6130065 Tomcat部署Web应用方法总结 分类: Java web2011-01-11 ...

  9. Tomcat部署web应用的方式

    对Tomcat部署web应用的方式总结,常见的有以下四种: 1.[使用控制台部署] 访问Http://localhost:8080,并通过Tomcat Manager登录,进入部署界面即可. 2.[利 ...

  10. Tomcat部署Web应用方法总结

    转载:http://m.blog.csdn.net/blog/u012516903/15741727 Tomcat部署Web应用方法总结 在Tomcat中部署Java Web应用程序有两种方式:静态部 ...

随机推荐

  1. Bmp格式图片与16进制的互相转换简解 Python

    BMP TO HEX 首先介绍Github上一个简单的Bmp转成16进制的py: https://github.com/robertgallup/bmp2hex 网上这种例子很多.思路也简单:将bmp ...

  2. 如何关闭phpstrom的更新提醒?

    在file-----setting-------搜索updates 把检测版本更新的对勾点掉就可以了, 自己破解后的版本就别更新了,更新后就不能再用了,目前用代理服务器激活可以用版本3.3,升级到3. ...

  3. Fiddler抓取Android手机网络数据包

    也许你也有疑问,如果开发没有完备的接口文档,我如何知道他API的信息? 这时我们就得通过一些抓包工具抓取这些API信息. 常见抓包工具 HTTP抓包工具:Fiddler.Charles.Firebug ...

  4. 支持“ReportDbContext”上下文的模型已在数据库创建后发生更改

    支持“ReportDbContext”上下文的模型已在数据库创建后发生更改.请考虑使用 Code First 迁移更新数据库(http://go.microsoft.com/fwlink/?LinkI ...

  5. ipad 如何 Airplay 到 Windows 上?

    最近刚好有用到这个,觉得还不错,就推荐给大家.虽然个人并不喜欢苹果这一套,但是工作里难免掺杂一些会用到的ipad , mac . 纯粹技术分享. 1. 5KPlayer : https://www.5 ...

  6. 常见问题:MySQL/B+树

    平衡二叉树 此前讲红黑树时也提到了平衡二叉树,红黑树和AVL树都是能保证树不退化的平衡二叉树,平衡二叉树采用二分思想组织数据,能大大提高单点查找数据的效率,其组装过程略. 作为对比,此处也列出平衡二叉 ...

  7. 【GStreamer开发】GStreamer基础教程04——时间管理

    目标 本教程主要讲述一些和时间相关的内容.主要包括: 1. 如何问pipeline查询到流的总时间和当前播放的时间 2. 如何在流内部实现跳转功能 介绍 GstQuery是向一个element或者pa ...

  8. idea安装svn

    idea不像eclipse那样是用插件,idea是直接指向已经安装好的svn.exe.

  9. 原生xgboost中如何输出feature_importance

    网上教程基本都是清一色的使用sklearn版本,此时的XGBClassifier有自带属性feature_importances_,而特征名称可以通过model._Booster.feature_na ...

  10. Android--圆角背景style

    <?xml version="1.0" encoding="utf-8"?> <shape xmlns:android="http: ...