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. Jmeter性能测试实战教程系列-搭建分布式性能测试环境(五)

    Jmeter 是java 应用,对于CPU和内存的消耗比较大,因此,当需要模拟数以千计的并发用户时,使用单台机器模拟所有的并发用户就有些力不从心,甚至会引起JAVA内存溢出错误.为了让jmeter工具 ...

  2. HTML布局排版之制作个人网站的文章列表

    文章列表.博文列表,一般是有文章名字和时间构成的,文章名字后面是时间,点击文章的名字,可进入该文章.为了美观,一般文章名字都有一定的最大字数限制,长宽对齐,等长宽的统一格式比较美观,这种用表格来做比较 ...

  3. 【Leetcode_easy】1051. Height Checker

    problem 1051. Height Checker solution class Solution { public: int heightChecker(vector<int>&a ...

  4. spring boot如何打印mybatis的执行sql

    方案一 application.properties配置: logging.level.com,后面的路径指的是mybatis对应的方法接口所在的包.并不是mapper.xml所在的包. 1. log ...

  5. Xpath定位和CSS定位(***重)

    1.XPath是一种在XML文档中定位元素的语言.因为HTML可以看作XML的一种实现, 所以Selenium用户可以使用这种强大的语言在Web应用中定位元素. 1.1 绝对路径定位 参考baidu. ...

  6. 如何提高程序员的键盘使用效率(搬砖工人的自我修养(tucao))

    高软第一次作业 程序员使用键盘最常用的技能 搬运自:https://learnku.com/articles/22806    括号内为个人吐槽 1.尊重操作系统特性(如Mac OS的某些键位自定义设 ...

  7. 【CUDA开发】CUDA开发琐碎知识

    ## 一维矩阵的加 //实现一个一维1*16的小矩阵的加法. //矩阵大小:1*16  //分配一个block,共有16个线程并发.  #include <stdio.h> #includ ...

  8. python 爬虫实例(一)

    一个简单的爬虫工程 环境: OS:Window10 python:3.7 安装一些库文件 pip install requests pip install beautifulsoup4 pip ins ...

  9. LeetCode 792. 匹配子序列的单词数(Number of Matching Subsequences)

    792. 匹配子序列的单词数 792. Number of Matching Subsequences 相似题目 392. 判断子序列

  10. 012 Android 动画效果(补间动画) +去掉App默认自带的标题+更改应用的图标

    1.介绍 补间动画开发者只需指定动画开始,以及动画结束"关键帧", 而动画变化的"中间帧"则由系统计算并补齐! 2.去掉App的标题 (1)将AndroidMa ...