注:以下所有操作均在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. 用jquery实现抽奖小程序

    用jquery实现抽奖小程序 这些日子,到处都可以看到关于微信小程序的新闻或报到,在博客园中写关于微信小程序的也不少.但是今天我要说的不是微信小程序,而是用简单的jquery写的一个好玩的抽奖小程序. ...

  2. jQuery效率提升建议

    jQuery简洁通用的方法集把编码者从繁重的工作中解脱出来,也拉低了进入javascript的门槛,初学者对浏览器兼容性一无所知的情况下,几行代码就可以写出超炫的特效.网上有一篇文章转载比较泛滥,已经 ...

  3. 分享在winform下实现模块化插件编程

    其实很早之前我就已经了解了在winform下实现插件编程,原理很简单,主要实现思路就是:先定一个插件接口作为插件样式及功能的约定,然后具体的插件就去实现这个插件接口,最后宿主(应用程序本身)就利用反射 ...

  4. Python_Day_04 set方法总结

    set(集合) 直接创建一个空集合 set_empty = set() print(set_empty) # set() 根据参数创建 # 根据参数 set_argument = set(42,',' ...

  5. Web 分页

    以Car表为例分页 页面以table展示数据分页 页面代码 <asp:Repeater ID="Repeater1" runat="server"> ...

  6. C#~异步编程再续~大叔所理解的并行编程(Task&Parallel)

    返回目录 并行这个概念出自.net4.5,它被封装在System.Threading.Tasks命名空间里,主要提供一些线程,异步的方法,或者说它是对之前Thread进行的二次封装,为的是让开发人员更 ...

  7. MVC5中后台提供Json,前台处理Json,绑定给Dropdownlist的例子

    MVC5中后台提供Json,前台处理Json,绑定给Dropdownlist的例子: 前端: 我们以前在前端定义了两个控件: <div class="row"> < ...

  8. Java日期时间操作的一些方法

    1. 获得Calendar实例: Calendar c = Calendar.getInstance(); 2. 定义日期/时间的格式: SimpleDateFormat sdf =new Simpl ...

  9. 【JAVA并发编程实战】6、中断

    所谓的中断操作:它并不会真正地中断一个正在运行的线程,而只是发出中断请求,然后由线程在下一个合适的时刻中断自己. 调用一次interrupt中断请求,再次调用就是把中断状态恢复 1.响应中断 处理中断 ...

  10. ABP中使用Redis Cache(2)

    上一篇讲解了如何在ABP中使用Redis Cache,虽然能够正常的访问Redis,但是Redis里的信息无法同步更新.本文将讲解如何实现Redis Cache与实体同步更新.要实现数据的同步更新,我 ...