您的位置:首页 > 运维架构 > Tomcat

配置Tomcat,允许指定身份用户管理服务(Linux平台)

2014-05-15 17:18 417 查看

本文记录如何在linux平台上配置tomcat以指定的身份运行、配置为linux服务,并设置为开机启动运行。

前言
通常情况下我们要配置Tomcat是很容易的一件事情,但是如果您要架设多用户多服务的Java虚拟主机就不那么容易了。其中最大的一个问题就是Tomcat执行权限。普通方式配置的Tomcat是以root超级管理员的身份运行的,显然,这是非常危险的,可想而知,一但网站被挂马,您的整个服务器都可以被黑客控制了。而通过编译或在线(例如redhat系列的yum, debian系列的apt-get)的方式安装,一个服务器上又只能装一个tomcat的服务,如果将多个网站放到同一个tomcat服务中,一但某一个网站出问题导致tomcat服务被卡死,则服务器上所有的网站都打不开了,无法满足各网站程序独享tomcat的需求。为了解决这些问题,我们需要配置Tomcat以指定的身份运行,且一台服务器上可以安装任意多个tomcat服务。因此,JDiy在配置的过程中撰写此文,以供有此类似需求的java开发人员参考。

运行环境描述
操作系统: Debian7.0(Wheezy  32 bit system)
Tomcat版本号: Tomcat 7.0.33
JDK版本: 1.6以上.

以下内容为JDiy站长亲自配置并记录整个过程,确保此配置信息无误后发表。
本文为原创内容, 转载请注明出处:JDiy官网  -  http://www.jdiy.org/read.jsp?id=y0haaynq1w
以下涉及到命令操作的地方,如无特别说明,均表示以root管理员身份运行(或者以普通用户的sudo方式跨权运行)。

一、先在Debian Linux系统上配置好JDK环境

有关如何在Linux平台上配置JDK环境的过程略去,本文假设您已经在Debian系统上正确安装了JDK开发环境,且JDK安装的位置在: /opt/jdk/
如果您的JDK不是安装在这个路径下面,也可以创建一个软链,指向到这个路径。

二、下载并解压最新版本的Tomcat.

打开浏览器,在地址栏中输入如下网址进入tomcat官网:
http://tomcat.apache.org

如下图:



  点击tomcat页面左边的download进入下载页面,拖动滚动条并定位到如下位置:



根据您的硬件架构(32位还是64位),选择一种ZIP格式的下载。如果您不清楚您的服务器配置,那就下载32位的吧(它适用于大多数情况)。
注意:您必须选择ZIP格式的才行,这样才能在后面的操作中进行配置。
另外,虽然我们使用的是Linux平台,JDiy站长也建议您下载
32-bit Windows zip的这个版本,解释如下:
虽然它标记为windows-zip,可能大多数同学以为它只能运行在windows平台下,其实是错误的,这个windows zip的版本同样适用于Linux(而且它是一个比较全面的版本)。
例如本人将其下载下来(得到一个apache-tomcat-7.0.33-windows-x86.zip)放到我的Debian系统的/opt/目录下,
运行命令解压(并将解压出来的目录更名为tomcat):

三、编译安装tomcat daemon服务守候程序:

cd到tomcat的bin目录下,并解压commons-daemon-native.tar.gz:
解压后会生成一个commons-daemon-1.0.10-native-src目录,cd到这个目录的unix子目录:

(1). 执行编译配置:

在执行时可能会出现如下错误提示:

这是由于没有指定jdk目录所致的,那么按提示指定with-java参数(指向jdk目录)。如下:

运行完成后会提示如下信息说明操作成功:

执行make:

(2). 执行make后会生成一个jsvc的文件,将其复制到tomcat的bin目录

在tomcat/bin目录里面有一个daemon.sh 这个文件就是启动和关闭tomcat的服务守候程序。
注意:之前的一些tomcat版本,例如tomcat 6.0.x, 可能没有这个文件, 其实这个文件就是放在commons-daemon-x.x.x-native-src/unix/samples/Tomcat7.sh这儿的(此目录还有一个Tomcat5.sh),只不过新版本的tomcat把它移动到了bin目录下,并取名为daemon.sh了。所以,如果您使用的是tomcat
6,那就把这个Tomcat7.sh文件复制到bin目录下,并取名为daemon.sh即可。

(3). 修改daemon环境变量 :
用文本编辑器(vi或emacs等)编辑它,找到类似下面这样配置段:

修改TOMCAT_USER=tomcat为您要指定身份运行的linux账号用户名,此处指定用户名为tomcat。

并把JAVA_HOME=...前面的注释(即“#”号)去掉,并设置为jdk的安装目录路径,最后,修改好后的配置段变成如下:
现在修改/opt/tomcat目录的所有者为为tomcat(即您要指定身份运行的linux帐号):

为tomcat/bin/目录下的*.sh添加相应的x权限位:

现在,可以测试一下daemon是否可以启动运行,启动方式如下:

(如果出错,重点查验tomcat的bin目录下的*.sh是否有x可执行权限、linux帐号是否有tomcat目录的读写权限,是否有tomcat/logs日志目录的写权限等等。)如无错误,则tomcat的daemon守候程序已经设置成功了,可以访问http://localhost:8080/试一下服务是否启动。

停止tomcat, 对应的命令为:

四、添加tomcat为debian的服务

在上面的配置正确后,要将daemon.sh添加成为debian的服务就非常简单了,只需要创建一个软链到/etc/init.d/目录中即可:
这样就创建了一个名为tomcat7的服务。

现在就可以用它启动/关闭tomcat了:

启动tomcat7服务:

停止tomcat7服务:

最后,再查看一下进程, 已经可以看到,tomcat是以指定的用户身份运行了。

五、设置tomcat服务开机启动

如果您想让Tomcat的daemon守候程序在开机后自动运行,只需运行下面命令,将服务设置为自启动即可:

如果以后想想取消自动启动,则运行:

以上内容为《配置tomcat以指定的身份运行》的全文笔记,本人在Debian系统下成功配置。
上面的配置过程,本人未对tomcat的配置文件(conf/server.xml)进行任何修改。
如果大家想再创建一个tomcat服务,只需要将/opt/tomcat这个目录复制一份,例如:

再修改一下tomcat1的端口号(/opt/tomcat/opt/tomcat1/conf/server.xml中的端口号不能与其它的服务重复)
最后从上面所述第四步开始,创建另一个服务即可。
通过这种方式,您就可以为一台Linux服务器创建任意多个tomcat服务了。最后只需要安装一个前端服务器(例如Nginx或Apache),将不同域名的请求转发到不同的tomcat服务程序就可以了。
如果您使用的是其它发行版的Linux,配置方式大同小异。

如本文有所遗漏或错误,欢迎指正。

本文原创,如需转载请注明出处:JDiy官网  -  http://www.jdiy.org/read.jsp?id=y0haaynq1w
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息