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. go micro 微服务框架温习

    go mod edit -require="github.com/chromedp/chromedp@v0.1.0" @后面加上你需要的版本号.就可以 已经修改go.mod 里的依 ...

  2. top显示命令详解+top命令使用

    http://blog.csdn.net/u014226549/article/details/22041289

  3. IOPS 测试工具 FIO

    FIO是测试IOPS的非常好的工具,用来对硬件进行压力测试和验证,支持13种不同的I/O引擎. fio-2.8下载: wget http://brick.kernel.dk/snaps/fio-2.8 ...

  4. laravel 为Eloquent 模型添加replace 和insert ignore 查询功能

    安装:composer require jdavidbakr/replaceable-model 在模型里引入: class model extends Model { ... use \jdavid ...

  5. Java网络编程探究|乐字节

    大家好,我是乐字节小乐,上次给大家讲述了Java中的IO流之输出流|乐字节,本文将会给大家讲述网络编程. 主要内容如下: 网络 网络分层 IP位置 端口port 网络编程 一. 网络 1.概念 网络即 ...

  6. 乐字节Java继承|方法重写、super和final关键字

    大家好,乐字节的小乐又来了,上一篇是:乐字节Java|JavaBean.继承与权限修饰,也是属于Java继承的,今天继续Java继承. 一. 方法的重写 父类不满足子类的要求,按需改写.注意 方法签名 ...

  7. php高级研发或架构师必了解---面试题系列

    近接连面试了几家公司,有些重要问题记录一下,督促自己学习提高,同时希望给朋友们一些帮助. 内容很多,一点点完善,一步步学习.. 有些是面试被问,有些是招聘要求,有些是自己整理加的. 一.mysql相关 ...

  8. AVR单片机教程——流水灯

    上次我们用 delay 函数与 while 循环实现了一个LED的闪烁.这一次我们把所有LED加入进来,让它们依次闪烁,形成流水灯的效果. 开发板上有4个LED,我们可以用不多的语句把循环体直接描述出 ...

  9. windows 下搭建go开发环境

    下载golang安装包: 步骤一: 先打开环境变量配置的界面 步骤二;配置我们的环境变量 对上图的一个说明: 1).path这个变量不需要再创建,因为系统本就有,在后面添加即可. 2).增加Go的bi ...

  10. Thread interrupted() 线程的中断

    问题: 1.线程的中断方式. 2.为什么中断阻塞中的线程,会抛出异常. 代码示例: package com.hdwl.netty; public class ThreadInterrupted { p ...