centos下部署tomcat详解

这篇文章将介绍安装和基本配置Tomcat 8在CentOS6X

Tomcat8实现jsp2.2和Servlet 3.0规范和大量的新功能。访问管理器应用程序比起6x也有一个新的外观和细粒度的角色

在这篇文章中,我们将安装Tomcat8,新JDK8配置Tomcat作为服务,创建一个启动/停止脚本,以及(可选)配置Tomcat运行在非ROOT用户。

我们还将配置基本访问Tomcat Manager和快速使用JAVA_OPTS看看内存管理

最后,我们将看看在80端口上运行Tomcat以及一些策略。

首先,我们需要安装Java开发工具包(JDK)8 Tomcat8要求JDK版本最低为1.6。

第一步:安装JDK 1.8

你可以在这里下载最新的JDK:http://www.oracle.com/technetwork/java/javase/downloads/index.html

我们将安装较新的jdk,jdk-8u25

我的操作系统是CentOS6.5_x64,这里选择是的:jdk-8u25-linux-x64.tar.gz 如果你是32位系统,请选择jdk-8u25-linux-i586.tar.gz

首先创建一个目录/usr/java:

[root@srv6 ~]# mkdir /usr/java

进入到/usr/java

[root@srv6 ~]# cd /usr/java    
[root@srv6 java ]#

下载合适的JDK并将其保存到/usr/java目录。 解压jdk-8u25-linux-x64.tar.gz/usr/java目录,使用命令tar -xzf:

[root@srv6 java]# tar -xzf jdk-8u25-linux-x64.tar.gz

这里会创建/usr/java/jdk1.8.0_25,这个是JAVA_HOME

我们现在可以设置JAVA_HOME并将它加入环境变量

[root@srv6 java]# JAVA_HOME=/usr/java/jdk1.8.0_25
[root@srv6 java]# export JAVA_HOME  
[root@srv6 java]# PATH=$JAVA_HOME/bin:$PATH  [root@srv6 java]# export PATH

将JAVA_HOME设置为永久,我们需要在~/.bash_profile添加,也可以配置/etc/profile给所有用户

JAVA_HOME=/usr/java/jdk1.8.0_25export JAVA_HOME  
PATH=$JAVA_HOME/bin:$PATH  export PATH

设置了~/.bash_profile后退出重新登录测试是否正确的设置了JAVA_HOME

[root@srv6 ~]#  echo $JAVA_HOME  /usr/java/jdk1.7.0_05

第二部:下载并解压Tomcat8

将tomcat8安装在/usr/share

切换到/usr/share目录:

[root@srv6 ~]# cd /usr/share  
[root@srv6 share ]#

下载tomcat8:http://mirror.tcpdiag.net/apache/tomcat/tomcat-8/v8.0.23/bin/apache-tomcat-8.0.23.tar.gz 并解压到/usr/share

使用tar -xzf解压:

[root@srv6 share ]# tar -xzf apache-tomcat-8.0.23.tar.gz

这将创建一个目录/usr/share/apache-tomcat-8.0.23.tar.gz

第三步:配置Tomcat作为服务运行

现在,我们将看到如何运行Tomcat作为服务和创建一个简单的启动/停止/启动脚本,以及在引导启动Tomcat。

切换到/etc/init.d目录创建一个tomcat的脚本:

[root@srv6 share]# cd /etc/init.d  
[root@srv6 init.d]# vi tomcat

下面是我们使用的脚本:

#!/bin/bash  # description: Tomcat Start Stop Restart  # processname: tomcat  # chkconfig: 234 20 80  JAVA_HOME=/usr/java/jdk1.8.0_25 
export JAVA_HOME  
PATH=$JAVA_HOME/bin:$PATH  export PATH  
CATALINA_HOME=/usr/share/apache-tomcat-8.0.23case $1 in  
start)  
sh $CATALINA_HOME/bin/startup.sh  
;;   
stop)     
sh $CATALINA_HOME/bin/shutdown.sh  
;;   
restart)  
sh $CATALINA_HOME/bin/shutdown.sh  
sh $CATALINA_HOME/bin/startup.sh  
;;   
esac      exit 0

上面的脚本非常简单,包含你需要的基本元素

正如你看到的,我们只需要调用startup.shshutdown.sh,sh脚本位于tomcat的bin目录

你可以根据需要调整脚本

CATALINA_HOME是Tomcat的家目录(/usr/share/apache-tomcat-8.0.23)

现在给脚本授权

[root@srv6 init.d]# chmod 755 tomcat

我们使用chkconfig启动tomcat

[root@srv6 init.d]# chkconfig --add tomcat  
[root@srv6 init.d]# chkconfig --level 234 tomcat on

验证:

[root@srv6 init.d]# chkconfig --list tomcat  
tomcat          0:off   1:off   2:on    3:on    4:on    5:off   6:off

现在我们来测试脚本!

启动Tomcat:

[root@srv6 ~]# service tomcat start  
Using CATALINA_BASE:   /usr/share/apache-tomcat-8.0.23
Using CATALINA_HOME:   /usr/share/apache-tomcat-8.0.23
Using CATALINA_TMPDIR: /usr/share/apache-tomcat-8.0.23/temp  
Using JRE_HOME:        /usr/java/jdk1.8.0_25
Using CLASSPATH:       /usr/share/apache-tomcat-8.0.23/bin/bootstrap.jar:/usr/share/apache-tomcat-8.0.23/bin/tomcat-juli.jar
Tomcat started.

停止Tomcat:

[root@srv6 ~]# service tomcat stop  
Using CATALINA_BASE:   /usr/share/apache-tomcat-8.0.23
Using CATALINA_HOME:   /usr/share/apache-tomcat-8.0.23
Using CATALINA_TMPDIR: /usr/share/apache-tomcat-8.0.23/temp  
Using JRE_HOME:        /usr/java/jdk1.8.0_25
Using CLASSPATH:       /usr/share/apache-tomcat-8.0.23/bin/bootstrap.jar:/usr/share/apache-tomcat-8.0.23/bin/tomcat-juli.jar

重启Tomcat(必须先启动):

[root@srv6 ~]# service tomcat restart  
Using CATALINA_BASE:   /usr/share/apache-tomcat-8.0.23
Using CATALINA_HOME:   /usr/share/apache-tomcat-8.0.23
Using CATALINA_TMPDIR: /usr/share/apache-tomcat-8.0.23/temp  
Using JRE_HOME:        /usr/java/jdk1.8.0_25
Using CLASSPATH:       /usr/share/apache-tomcat-8.0.23/bin/bootstrap.jar:/usr/share/apache-tomcat-8.0.23/bin/tomcat-juli.jar  
Using CATALINA_BASE:   /usr/share/apache-tomcat-8.0.23
Using CATALINA_HOME:   /usr/share/apache-tomcat-8.0.23
Using CATALINA_TMPDIR: /usr/share/apache-tomcat-8.0.23/temp  
Using JRE_HOME:        /usr/java/jdk1.8.0_25
Using CLASSPATH:       /usr/share/apache-tomcat-8.0.23/bin/bootstrap.jar:/usr/share/apache-tomcat-8.0.23/bin/tomcat-juli.jar
Tomcat started.

我们应该检日志查看是否有错误

[root@srv6 init.d]# tail -f /usr/share/apache-tomcat-8.0.23/logs/catalina.out

我们现在可以访问Tomcat Manager页面:

http://yourdomain.com:8080 或者 http://yourIPaddress:8080 可以看到tomcat主页 

第四步:配置Tomcat Manager访问

出于安全原因,Tomcat manager没有用户或密码,默认为创建角色。在生产环境,最好是删除管理器应用程序。

设置角色,用户名和密码,我们需要配置tomcat/conf下面的tomcat-user.xml文件

默认情况下将tomcat-users.xml中的元素是被注释的

创建一个角色拥有如下权限:

  • manager-gui
  • manager-status
  • manager-jmx
  • manager-script
  • admin-gu
  • admin-script.

我们可以设置manager gui的角色,例如如下

<tomcat-users>  
  <role rolename="manager-gui"/>  
  <user username="tomcat" password="secret" roles="manager-gui"/>  
</tomcat-users>

应该注意赋予多个角色,以免不安全。

第五步(可选):使用JAVA_OPTS管理内存配置

正确配置堆内存取决于很多因素,为简单起见,我们将堆大小设置为相同的值128MB 添加JAVA_OPTS内存参数在我们的Catalina.sh文件。 下面编辑Catalina.sh文件设置堆大小

JAVA_OPTS="-Xms128m -Xmx128m"

我通常只是添加这个文件第二行:

#!/bin/sh  JAVA_OPTS="-Xms128m -Xmx128m"   
# Licensed to the Apache Software Foundation (ASF) under one or more  
# contributor license agreements.  See the NOTICE file distributed with  
# this work for additional information regarding copyright ownership.  
# The ASF licenses this file to You under the Apache License, Version 2.0  
# (the "License"); you may not use this file except in compliance with  
# the License.  You may obtain a copy of the License at

第六步(可选):如何给指定的用户使用Tomcat

在上面的配置中我们使用ROOT用户运行Tomcat,处于安全原因,ROOT最好运行那些有必要的服务 当然没有规定必须这么做,但你最好谨慎点~

非ROOT用户运行Tomcat,需要做到以下几点:

  1. 创建tomcat组:
[root@srv6 ~]# groupadd tomcat

创建tomcat用户并将他加入到组

[root@srv6 ~]# useradd -s /bin/bash -g tomcat tomcat

上面的写法将tomcat用户的家目录创建在/home/tomcat 如果你想让主目录放在其他位置,可以使用-d参数

[root@srv6 ~]# useradd -g tomcat -d /usr/share/apache-tomcat-8.0.23/tomcat tomcat

这样可以将tomcat用户的家目录设置为/usr/share/apache-tomcat-8.0.23/tomcat

将tomcat目录的所有权给tomcat用户

[root@srv6 ~]# chown -Rf tomcat.tomcat /usr/share/apache-tomcat-8.0.23/

调整tomcat的启动脚本,在新脚本中添加tomcat用户:

#!/bin/bash  
# description: Tomcat Start Stop Restart  
# processname: tomcat  # chkconfig: 234 20 80  JAVA_HOME=/usr/java/jdk1.8.0_25  
export JAVA_HOME  
PATH=$JAVA_HOME/bin:$PATH  export PATH  
CATALINA_HOME=/usr/share/apache-tomcat-8.0.23/bin  

case $1 in  
start)  
/bin/su tomcat $CATALINA_HOME/startup.sh  
;;   
stop)     
/bin/su tomcat $CATALINA_HOME/shutdown.sh  
;;   
restart)  
/bin/su tomcat $CATALINA_HOME/shutdown.sh  
/bin/su tomcat $CATALINA_HOME/startup.sh  
;;   
esac      exit 0

第七部(可选):如何将tomcat运行在80端口

运行下面的服务端口1024是给root以外的用户,你可以添加到你的ipables:

[root@srv6 ~]# iptables -t nat -A PREROUTING -p tcp -m tcp --dport 80 -j REDIRECT --to-ports 8080    
[root@srv6 ~]# iptables -t nat -A PREROUTING -p udp -m udp --dport 80 -j REDIRECT --to-ports 8080

重启iptables

service iptables restart

第八部(可选):运行Apache+Tomcat

在80端口上运行Tomcat,如果你有前面的Apache Tomcat,您可以使用使用Apache Tomcat的mod_proxy以及apj connector映射到vhost

当Tomcat是独立性能的改善,我仍然喜欢它前面的空间的原因。

在您的Apache配置,确保KeepAlive设置是on。 Apache调优,当然,本身是一个很大的话题……

实例1: VHOST with mod_proxy:

<VirtualHost *:80>  
    ServerAdmin admin@yourdomain.com  
    ServerName yourdomain.com  
    ServerAlias www.yourdomain.com  

    ProxyRequests Off  
    ProxyPreserveHost On  
    <Proxy *>  
       Order allow,deny  
       Allow from all  
    </Proxy>  

    ProxyPass / http://localhost:8080/  
    ProxyPassReverse / http://localhost:8080/  

    ErrorLog logs/yourdomain.com-error_log  
    CustomLog logs/yourdomain.com-access_log common  

</VirtualHost>

实例 2: VHOST with ajp connector and mod_proxy:

<VirtualHost *:80>  
    ServerAdmin admin@yourdomain.com  
    ServerName yourdomain.com  
    ServerAlias www.yourdomain.com  

    ProxyRequests Off  
    ProxyPreserveHost On  
    <Proxy *>  
    Order allow,deny  
    Allow from all  
    </Proxy>  

    ProxyPass / ajp://localhost:8009/  
    ProxyPassReverse / ajp://localhost:8009/  

    ErrorLog logs/yourdomain.com-error_log  
    CustomLog logs/yourdomain.com-access_log common  
</VirtualHost>

vhost在这两个例子,我们"映射"到Tomcat的根目录。

如果我们希望映射到应用程序如yourdomain.com/myapp,我们可以添加一些改写如下所示。

这将重写所有请求yourdomain.com yourdomain.com/myapp

实例 3: VHOST with rewrite:

<VirtualHost *:80>  
    ServerAdmin admin@yourdomain.com  
    ServerName yourdomain.com  
    ServerAlias www.yourdomain.com  

    RewriteEngine On  
    RewriteRule ^/$ myapp/ [R=301]  

    ProxyRequests Off  
    ProxyPreserveHost On  
    <Proxy *>  
    Order allow,deny  
    Allow from all  
    </Proxy>  

    ProxyPass / ajp://localhost:8009/  
    ProxyPassReverse / ajp://localhost:8009/  

    ErrorLog logs/yourdomain.com-error_log  
    CustomLog logs/yourdomain.com-access_log common  
</VirtualHost>

英文原文:http://davidghedini.blogspot.com/2011/02/install-tomcat-7-on-centos-rhel.html

时间: 2025-01-26 16:22:18

centos下部署tomcat详解的相关文章

centOS下安装tomcat详解

本人是用的vmware上安装的centOS系统. 先去apache的tomcat官网上下载下来所需要的文件,网址为http://tomcat.apache.org/download-70.cgi 点击tar.gz下载就可以. 接着把下载下来的tomcat拖到虚拟机中的centOS的目录下,我拖到的是/home/449261417/下载 这个目录中. 接着打开终端开始敲命令 tar -zxvf apache-tomcat-7.0.54.tar.gz(解压下载下来的tar包) mv tomcat-7

Docker 自动部署tomcat详解_docker

Docker 自动部署tomcat 1. 下载镜像 # Docker pull centos:latest  #获取最新的centos镜像 2. 启动容器 #docker run -i -t -v /home/user/software/:/home/software/ imageId /bin/bash 其实包含以下三个部分: docker run <相关参数> <镜像ID> <初始命令> 其中,相关参数包括: -i:表示以"交互模式"运行容器 -

CentOS下nethogs命令详解

  Nethogs 是一个终端下的网络流量监控工具,它的特别之处在于可以显示每个进程的带宽占用情况,这样可以更直观获取网络使用情况.它支持 IPv4 和 IPv6 协议.支持本地网卡及 PPP 链接. 安装过程 ##下载## [root@ipython ~]# wget http://softlayer-dal.dl.sourceforge.net/project/nethogs/nethogs/0.8/nethogs-0.8.0.tar.gz ##依赖安装## [root@ipython ~]

CentOS下dstat监控详解

  dstat 如果系统没有些工具 yum -y install dstat安装下即妥,此软件小巧玲珑,软件包大小只有144k,安装大小660k. 此工具默认情况下会动态显示CPU,disk,net,page,system负载情况,如下所示,当然会有颜色不同标示的,还是比较直观的,暂且直接复制凑合一看,还望各位看官海涵,千万莫拍砖. [root@aaa]# dstat ----total-cpu-usage---- -dsk/total- -net/total- ---paging-- ---s

CentOS下dstat监控详解 dstat监控工具介绍

dstat 如果系统没有些工具 yum -y install dstat安装下即妥,此软件小巧玲珑,软件包大小只有144k,安装大小660k. 此工具默认情况下会动态显示CPU,disk,net,page,system负载情况,如下所示,当然会有颜色不同标示的,还是比较直观的,暂且直接复制凑合一看,还望各位看官海涵,千万莫拍砖. [root@aaa]# dstat ----total-cpu-usage---- -dsk/total- -net/total- ---paging-- ---sys

Linux下ps命令详解

  Linux下ps命令详解 Linux上进程有5种状态: 1. 运行(正在运行或在运行队列中等待) 2. 中断(休眠中, 受阻, 在等待某个条件的形成或接受到信号) 3. 不可中断(收到信号不唤醒和不可运行, 进程必须等待直到有中断发生) 4. 僵死(进程已终止, 但进程描述符存在, 直到父进程调用wait4()系统调用后释放) 5. 停止(进程收到SIGSTOP, SIGSTP, SIGTIN, SIGTOU信号后停止运行运行) ps工具标识进程的5种状态码: D 不可中断 uninterr

Windows下搭建Mantis详解

Windows下搭建Mantis详解 下边是在Windows下搭建Mantis的详细过程,太长了,只能分开发上来,不过我会附一个pdf的文件上来,需要的可以下载. 搭建环境:        apache_2.2.13-win32-x86-no_ssl.msi        php-5.3.0-Win32-VC6-x86.zip        mysql-5.0.22-win32.zip        mantisbt-1.1.7.zip        辅助工具:        EMS(myman

Linux下chkconfig命令详解(转)

Linux下chkconfig命令详解 chkconfig命令主要用来更新(启动或停止)和查询系统服务的运行级信息.谨记chkconfig不是立即自动禁止或激活一个服务,它只是简单的改变了符号连接. 使用语法:chkconfig [--add][--del][--list][系统服务] 或 chkconfig [--level <等级代号>][系统服务][on/off/reset] chkconfig在没有参数运行时,显示用法.如果加上服务名,那么就检查这个服务是否在当前运行级启动.如果是,返

CentOS网络接口配置文件ifcfg-eth0详解

==CentOS网络接口配置文件ifcfg-eth0详解== 文件 /etc/sysconfig/network-scripts/ifcfg-eth0在/etc/sysconfig/network-script在这个目录下面,存放的是网络接口(网卡)的脚本文件(控制文件),ifcfg-eth0是默认的第一个网络接口,如果机器中有多网络接口,那么名字就将依此类推ifcfg-eth1,ifcfg-eth2,ifcfg-eth3......(这个文件重要,涉及到网络能否正常工作).   ==设定形式: