注:以下所有操作均在CentOS 6.5 x86_64位系统下完成。

#准备工作#

在安装Tomcat之前,请确保已经安装了JDK-1.7环境,具体见《CentOS安装JDK-1.7》

#Tomcat7的安装#

开始下载Tomcat7并安装:

# cd /usr/local/src
# wget http://mirrors.hust.edu.cn/apache/tomcat/tomcat-7/v7.0.57/bin/apache-tomcat-7.0.57.zip
# cp apache-tomcat-7.0..zip /usr/local/
# cd /usr/local
# unzip apache-tomcat-7.0..zip
# rm -f apache-tomcat-7.0..zip
# mv apache-tomcat-7.0./ tomcat-7.0.
# ln -s /usr/local/tomcat-7.0./ /usr/local/tomcat

给系统设置Tomcat的路径:

# vim /etc/profile

export CATALINA_HOME=/usr/local/tomcat

# source /etc/profile

可以先尝试启动Tomcat看能否正常访问:

# sh /usr/local/tomcat/bin/startup.sh
Cannot find /usr/local/tomcat/bin/catalina.sh
The file is absent or does not have execute permission
This file is needed to run this program # chmod +x /usr/local/tomcat/bin/*.sh
# sh /usr/local/tomcat/bin/startup.sh
Using CATALINA_BASE: /usr/local/tomcat
Using CATALINA_HOME: /usr/local/tomcat
Using CATALINA_TMPDIR: /usr/local/tomcat/temp
Using JRE_HOME: /usr/java/jdk1.7.0_72
Using CLASSPATH: /usr/local/tomcat/bin/bootstrap.jar:/usr/local/tomcat/bin/tomcat-juli.jar
Tomcat started.

注:如果提示没有执行权限则可以先chmod一下sh文件。

这个时候显示服务器已经启动Tomcat成功了,打开浏览器访问地址http://youripaddress:8080/应该可以看到:

关闭Tomcat则是:

# sh /usr/local/tomcat/bin/shutdown.sh

#Tomcat7的启动配置#

上面的步骤虽然已经可以正常启动Tomcat服务器,但是是以系统root账户来启动的,这是一种很不安全的行为。使用ps命令查看即可得知:

# ps aux | grep tomcat
root 56.4 12.9 pts/ Sl : : /usr/java/jdk1..0_72/bin/java -Djava.util.logging.config.file=/usr/local/tomcat/conf/logging.properties -Djava.util.logging.manager=org.apache.juli.ClassLoaderLogManager -Djava.endorsed.dirs=/usr/local/tomcat/endorsed -classpath /usr/local/tomcat/bin/bootstrap.jar:/usr/local/tomcat/bin/tomcat-juli.jar -Dcatalina.base=/usr/local/tomcat -Dcatalina.home=/usr/local/tomcat -Djava.io.tmpdir=/usr/local/tomcat/temp org.apache.catalina.startup.Bootstrap start

这里介绍一种方案(也是官方推荐的),使用root权限执行Tomcat自带的脚本daemon.sh,该脚本使用jsvc以普通用户权限去启动Tomcat,原理是root用户fork非root用户,同时可以监听80端口。

1)新建一个tomcat用户和用户组:

# id tomcat
id: tomcat:无此用户
# groupadd tomcat
# useradd -g tomcat -s /sbin/nologin tomcat
# id tomcat
uid=(tomcat) gid=(tomcat) 组=(tomcat)

2)修改Tomcat目录的权限:

# chown -R tomcat:tomcat /usr/local/tomcat-7.0.
# chown -R tomcat:tomcat /usr/local/tomcat
# chmod -R /usr/local/tomcat

3)生成jsvc:

# cd /usr/local/tomcat/bin
# tar zxf commons-daemon-native.tar.gz
# ls
commons-daemon-1.0.-native-src
# cd commons-daemon-1.0.-native-src/unix
# ./configure --with-java=/usr/java/jdk1..0_72/
...
*** All done ***
Now you can issue "make"
# make
# cp jsvc /usr/local/tomcat/bin

注:上面configure时请指定当前系统的JDK路径。 

4)最后可以使用daemon.sh来启动Tomcat了:

# cd /usr/local/tomcat/bin
# ./daemon.sh
Unknown command: `'
Usage: daemon.sh ( commands ... )
commands:
run Start Tomcat without detaching from console
start Start Tomcat
stop Stop Tomcat
version What version of commons daemon and Tomcat
are you running?
# ./daemon.sh start

这时可以查看下当前Tomcat进程的用户:

# ps aux | grep tomcat
root 0.0 0.0 ? Ss : : jsvc.exec -java-home /usr/java/jdk1..0_72 -user tomcat -pidfile /usr/local/tomcat/logs/catalina-daemon.pid -wait -outfile /usr/local/tomcat/logs/catalina-daemon.out -errfile & -classpath /usr/local/tomcat/bin/bootstrap.jar:/usr/local/tomcat/bin/commons-daemon.jar:/usr/local/tomcat/bin/tomcat-juli.jar -Djava.util.logging.config.file=/usr/local/tomcat/conf/logging.properties -Djava.util.logging.manager=org.apache.juli.ClassLoaderLogManager -Djava.endorsed.dirs= -Dcatalina.base=/usr/local/tomcat -Dcatalina.home=/usr/local/tomcat -Djava.io.tmpdir=/usr/local/tomcat/temp org.apache.catalina.startup.Bootstrap
tomcat 2.2 14.2 ? Sl : : jsvc.exec -java-home /usr/java/jdk1..0_72 -user tomcat -pidfile /usr/local/tomcat/logs/catalina-daemon.pid -wait -outfile /usr/local/tomcat/logs/catalina-daemon.out -errfile & -classpath /usr/local/tomcat/bin/bootstrap.jar:/usr/local/tomcat/bin/commons-daemon.jar:/usr/local/tomcat/bin/tomcat-juli.jar -Djava.util.logging.config.file=/usr/local/tomcat/conf/logging.properties -Djava.util.logging.manager=org.apache.juli.ClassLoaderLogManager -Djava.endorsed.dirs= -Dcatalina.base=/usr/local/tomcat -Dcatalina.home=/usr/local/tomcat -Djava.io.tmpdir=/usr/local/tomcat/temp org.apache.catalina.startup.Bootstrap

注:正常情况下就是有两个进程,参数都是一样,但属主不一样,一个是root,一个是tomcat。

可以看到现在Tomcat使用的是tomcat用户权限在运行了。

如果要关闭Tomcat,则可以使用命令:

# cd /usr/local/tomcat/bin
# ./daemon.sh stop

另外,使用Daemon后台启动有个要注意的地方就是必须保证权限,必须保证以下几个命令:

# chown -R tomcat:tomcat /usr/local/tomcat-7.0.
# chown -R tomcat:tomcat /usr/local/tomcat
# chmod -R /usr/local/tomcat-7.0./conf/Catalina
# chmod -R /usr/local/tomcat-7.0./conf/Catalina/localhost

当然,我们还有一种方案是直接以普通用户tomcat去执行startup.sh来启动Tomcat,但是这个弊端是非root用户只能监听大于1024的端口,这种情况就无法使得Tomcat去监听80/443端口,并不是一种比较完美的方案。

还有,当使用daemon.sh来启动Tomcat的时候,其日志会默认写入到CATALINA_HOME/logs/catalina-dameon.out这个文件里,这个文件日后会变得很大,需要清理。另外如果要查看启动时的日志,可以使用tail -f来跟踪。

#Tomcat7的安全配置#

1、删除/usr/local/tomcat/webapps下的所有目录。

2、禁止Tomcat服务器进行目录遍历,以防止泄漏系统信息及服务器信息:

# vim /usr/local/tomcat/conf/web.xml

<servlet>
<servlet-name>default</servlet-name>
<servlet-class>org.apache.catalina.servlets.DefaultServlet</servlet-class>
<init-param>
<param-name>listings</param-name>
<param-value>false</param-value>
</init-param>
<load-on-startup></load-on-startup>
</servlet>

3、开启Tomcat的日志记录功能:

# vim /usr/local/tomcat/conf/server.xml

<Host name="localhost"  appBase="webapps" unpackWARs="true" autoDeploy="true">
<Valve className="org.apache.catalina.valves.AccessLogValve" directory="logs" prefix="localhost_access_log." suffix=".txt" pattern="%h %l %u %t &quot;%r&quot; %s %b" />
</Host>

4、禁止显示错误信息:

# vim /usr/local/tomcat/conf/web.xml

<error-page>
<error-code></error-code>
<location>/.jsp</location>
</error-page>

5、最好删除jspx文件的解析,默认的Tomcat是可以解析jspx文件的,这个可能会带来安全风险,如果项目中不需要支持jspx文件,可以删除对jspx文件的解析功能,比如:

# vim /usr/local/tomcat/conf/web.xml

<servlet-mapping>
<servlet-name>jsp</servlet-name>
<url-pattern>*.jsp</url-pattern>
<!--<url-pattern>*.jspx</url-pattern>-->
</servlet-mapping>

6、分配好文件目录权限,Web目录和文件属主不能与Tomcat启动用户属主相同,比如Tomcat如果是以tomcat用户权限启动的,则Web文件和目录的属主必须是非tomcat账户(比如可以是root账户)。另外,Web目录权限统一设置为755,web文件权限统一设置为644,只有上传目录这类可读写目录的权限才设置为777。

#Tomcat7的性能配置#

为了提高系统的可用性,根据业务需求,还可以对Tomcat进行一些配置,比如修改webapps目录到/data/www、修改线程数、配置合适的启动内存、设置UTF8编码等。

1、修改webapp默认目录:

# vim /usr/local/tomcat/conf/server.xml

<Host name="localhost"  appBase="/data/vsftpd/www" unpackWARs="true" autoDeploy="true">

2、 在处理GET请求时,Tomcat默认使用ISO-8859-1编码作为默认编码,这里一般根据业务需求最好设置为UTF-8编码:

# vim /usr/local/tomcat/conf/server.xml

<Connector port="" URIEncoding="UTF-8" protocol="HTTP/1.1" connectionTimeout="" redirectPort="" />

3、 有时会提示内存泄漏(尤其是MySQL的驱动模块),这是因为在高版本的Tomcat中增加了检测内存泄漏的模块,其实一般可以将其禁止:

# vim /usr/local/tomcat/conf/server.xml

<Listener className="org.apache.catalina.core.JreMemoryLeakPreventionListener" />

4、还可以根据系统配置和项目需求设置分配更多的内存给Tomcat:

# vim /usr/local/tomcat/bin/catalina.sh

JAVA_OPTS="$JAVA_OPTS -Xms128m -Xmx256m -XX:PermSize=128m -XX:MaxNewSize=256m -XX:MaxPermSize=256m -Djava.awt.headless=true"

注:分配多少内存根据当前服务器情况而定,上面将java.awt.headless允许是因为某些验证码组件需要开启该功能。

5、配置maxThreads(最大线程数)、acceptCount(当线程数处理达到最大时接受排队的请求个数)、connectionTimeout(连接超时时间)等。

<Connection maxThreads="" minSpareThreads="" acceptCount="" connectionTimeout="" disableUploadTimeout="true" enableLookups="false" />

【推荐】CentOS安装Tomcat-7.0.57+启动配置+安全配置+性能配置的更多相关文章

  1. 解决CentOS 7安装zabbix 3.0 无法启动zabbix-server的问题[segfault at 18 ip 00007f78842b4bd0 sp 00007fff1995a818 error 4 in libpthread-2.17.so[7f78842ab000+16000]]

    解决CentOS 7安装zabbix 3.0 无法启动zabbix-server的问题 [root@localhost sbin]# service zabbix-server start Redir ...

  2. CentOS安装tomcat并且部署Java Web项目具有一定的参考价值

    本篇文章主要介绍了CentOS安装tomcat并且部署Java Web项目,具有一定的参考价值,有需要的可以了解一下.(http://m.8682222.com) 1.准备工作 b.因为tomcat的 ...

  3. CentOS 安装Nginx1.14.0

    原文地址:http://www.cnblogs.com/ascd-eg/p/9275441.html 一.安装所需环境   1.gcc 安装         yum install gcc-c++   ...

  4. Linux(Centos)安装tomcat并且部署Java Web项目

    步骤一.下载安装包 a.   下载tomcat linux安装包,地址:http://tomcat.apache.org/download-80.cgi , 我们下载的版本是8.0,下载方式如图: b ...

  5. CentOS 安装tomcat 7

    安装环境:CentOS-6.3 安装方式:源码安装 软件:apache-tomcat-7.0.29.tar.gz 下载地址:http://tomcat.apache.org/download-70.c ...

  6. CentOS安装tomcat

    一.下载Tomcat 1..进入Tomcat官网:http://tomcat.apache.org/ 左侧选择相应的版本 点击Tomcat 6.0后 点击tar.gz下载apache-tomcat-6 ...

  7. centos7中使用yum安装tomcat以及它的启动、停止、重启

    centos7中使用yum安装tomcat 介绍 Apache Tomcat是用于提供Java应用程序的Web服务器和servlet容器. Tomcat是Apache Software Foundat ...

  8. centos 安装tomcat 7为服务

    3:安装Tomcat 下载apache-tomcat-7.0.33.tar.gz.解压缩: tar -xzvf apache-tomcat-7.0.33.tar.gz 将解压缩后的文件夹拷贝到/usr ...

  9. centos 安装hue 4.0

    Hue是Cloudera开源的一个Hadoop UI,由Cloudera Desktop演化而来.面向用户提供方便的UI用于平时的Hadoop操作中.Apache Ambari面向的是管理员,用于安装 ...

随机推荐

  1. 基于Hadoop生态技术构建阿里搜索离线系统

    一.计算平台架构 平台架构 集群规模 集群特点 二.支撑的搜索业务 搜索业务 处理流程 三.YARN计算平台 iStream计算模型 Schedule改进 AppHistoryServer改进 HSt ...

  2. 关于JavaScript定时机制的总结

    要理解JavaScript的定时机制,就要知道JavaScript的运行机制. 首先声明,JavaScript是单线程运行(JavaScript引擎线程)事件驱动. 一.浏览器中有多个线程 一款浏览器 ...

  3. js构建ui的统一异常处理方案(一)

    从早期从事基于java的服务器端开发,再到之后从事基于web和js的ui开发,总体感觉基于web页面的ui开发远不如服务器端健壮.主要是早期ie浏览器功能太弱小,很多业务被迫放到服务器端去实现,浏览器 ...

  4. git log命令全解析,打log还能这么随心所欲!

    git log命令非常强大而好用,在复杂系统的版本管理中扮演着重要的角色,但默认的git log命令显示出的东西实在太丑,不好好打扮一下根本没法见人,打扮好了用alias命令拍个照片,就正式出道了! ...

  5. 创建ASP.NET Core MVC应用程序(5)-添加查询功能 & 新字段

    创建ASP.NET Core MVC应用程序(5)-添加查询功能 & 新字段 添加查询功能 本文将实现通过Name查询用户信息. 首先更新GetAll方法以启用查询: public async ...

  6. 4.DB Initialization(数据库初始化)[EF Code-First系列]

    前面的例子中,我们已经看到了Code-First自动为我们创建数据库的例子. 这里我们将要学习的是,当初始化的时候,Code-First是怎么决定数据库的名字和服务的呢??? 下面的图,解释了这一切! ...

  7. Devexpress WPF Theme Editor 01

    在Devexpress中,已经有内置了很多主题样式.一般我们开发就已经够用了.但是随着客户的需求提高..我们要自己手动写一些样式这些的, 那么Devexpress 已经提供一个专门这样的工具. 下载地 ...

  8. Levenshtein Distance算法(编辑距离算法)

    编辑距离 编辑距离(Edit Distance),又称Levenshtein距离,是指两个字串之间,由一个转成另一个所需的最少编辑操作次数.许可的编辑操作包括将一个字符替换成另一个字符,插入一个字符, ...

  9. 浅谈web网站架构演变过程

    前言 我们以javaweb为例,来搭建一个简单的电商系统,看看这个系统可以如何一步步演变.   该系统具备的功能:   用户模块:用户注册和管理 商品模块:商品展示和管理 交易模块:创建交易和管理 阶 ...

  10. 缓存技术Redis在C#中的使用及Redis的封装

    Redis是一款开源的.高性能的键-值存储(key-value store).它常被称作是一款数据结构服务器(data structure server).Redis的键值可以包括字符串(string ...