阿里云-云小站(无限量代金券发放中)
【腾讯云】云服务器、云数据库、COS、CDN、短信等热卖云产品特惠抢购

CentOS安装Tomcat-7.0.57+启动配置+安全配置+性能配置

188次阅读
没有评论

共计 7258 个字符,预计需要花费 19 分钟才能阅读完成。

注:以下所有操作均在 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.57.zip /usr/local/
# cd /usr/local
# unzip apache-tomcat-7.0.57.zip
# rm -f apache-tomcat-7.0.57.zip
# mv apache-tomcat-7.0.57/ tomcat-7.0.57
# ln -s /usr/local/tomcat-7.0.57/ /user/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/ 应该可以看到:

CentOS 安装 Tomcat-7.0.57+ 启动配置 + 安全配置 + 性能配置

关闭 Tomcat 则是:

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

#Tomcat7 的启动配置 #

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

# ps aux | grep tomcat
root     14829 56.4 12.9 958580 64872 pts/0    Sl   10:22   0:05 /usr/java/jdk1.7.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=503(tomcat) gid=503(tomcat) 组 =503(tomcat)

2)修改 Tomcat 目录的权限:

# chown -R tomcat:tomcat /usr/local/tomcat-7.0.57
# chown -R tomcat:tomcat /user/local/tomcat
# chmod -R 770 /usr/local/tomcat

3)生成 jsvc:

# cd /usr/local/tomcat/bin
# tar zxf commons-daemon-native.tar.gz
# ls
commons-daemon-1.0.15-native-src
# cd commons-daemon-1.0.15-native-src/unix
# ./configure --with-java=/usr/java/jdk1.7.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     16770  0.0  0.0  10432   408 ?        Ss   11:09   0:00 jsvc.exec -java-home /usr/java/jdk1.7.0_72 -user tomcat -pidfile /usr/local/tomcat/logs/catalina-daemon.pid -wait 10 -outfile /usr/local/tomcat/logs/catalina-daemon.out -errfile &1 -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   16771  2.2 14.2 959544 71428 ?        Sl   11:09   0:05 jsvc.exec -java-home /usr/java/jdk1.7.0_72 -user tomcat -pidfile /usr/local/tomcat/logs/catalina-daemon.pid -wait 10 -outfile /usr/local/tomcat/logs/catalina-daemon.out -errfile &1 -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.57
# chown -R tomcat:tomcat /user/local/tomcat
# chmod -R 777 /usr/local/tomcat-7.0.57/conf/Catalina
# chmod -R 777 /usr/local/tomcat-7.0.57/conf/Catalina/localhost

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

#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>1</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>404</error-code>
    <location>/404.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="8080" URIEncoding="UTF-8" protocol="HTTP/1.1" connectionTimeout="20000" redirectPort="8443" />

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 允许是因为某些验证码组件需要开启该功能。

更多 Tomcat 相关教程见以下内容

CentOS 6.6 下安装配置 Tomcat 环境  http://www.linuxidc.com/Linux/2015-08/122234.htm

RedHat Linux 5.5 安装 JDK+Tomcat 并部署 Java 项目  http://www.linuxidc.com/Linux/2015-02/113528.htm 

Tomcat 权威指南(第二版)(中英高清 PDF 版 + 带书签)  http://www.linuxidc.com/Linux/2015-02/113062.htm 

Tomcat 安全配置与性能优化 http://www.linuxidc.com/Linux/2015-02/113060.htm 

Linux 下使用 Xshell 查看 Tomcat 实时日志中文乱码解决方案 http://www.linuxidc.com/Linux/2015-01/112395.htm 

CentOS 64-bit 下安装 JDK 和 Tomcat 并设置 Tomcat 开机启动操作步骤 http://www.linuxidc.com/Linux/2015-01/111485.htm 

CentOS 6.5 下安装 Tomcat  http://www.linuxidc.com/Linux/2015-01/111415.htm 

Tomcat 中 session 的管理机制  http://www.linuxidc.com/Linux/2016-09/135072.htm

Tomcat 的详细介绍:请点这里
Tomcat 的下载地址:请点这里

本文永久更新链接地址:http://www.linuxidc.com/Linux/2016-12/138042.htm

正文完
星哥玩云-微信公众号
post-qrcode
 0
星锅
版权声明:本站原创文章,由 星锅 于2022-01-21发表,共计7258字。
转载说明:除特殊说明外本站文章皆由CC-4.0协议发布,转载请注明出处。
【腾讯云】推广者专属福利,新客户无门槛领取总价值高达2860元代金券,每种代金券限量500张,先到先得。
阿里云-最新活动爆款每日限量供应
评论(没有评论)
验证码
【腾讯云】云服务器、云数据库、COS、CDN、短信等云产品特惠热卖中