通常情况下我们要配置Tomcat是很容易的一件事情,但是如果您要架设多用户多服务的Java虚拟主机就不那么容易了。其中最大的一个问题就是Tomcat执行权限。普通方式配置的Tomcat是以root超级管理员的身份运行的,显然,这是非常危险的,可想而知,一但网站被挂马,您的整个服务器都可以被黑客控制了。而通过编译或在线(例如RedHat系列的yum, debian系列的apt-get)的方式安装,一个服务器上又只能装一个tomcat的服务,如果将多个网站放到同一个tomcat服务中,一但某一个网站出问题导致tomcat服务被卡死,则服务器上所有的网站都打不开了,无法满足各网站程序独享tomcat的需求。为了解决这些问题,我们需要配置Tomcat以指定的身份运行,且一台服务器上可以安装任意多个tomcat服务。
测试机器环境:
VMware Workstation 10 虚拟机
内存:1G
Linux版本:CentOS MinimalCD 6.5
JAVA:JAVA_HOME=/opt/jdk
一、先在 Linux系统上配置好JDK环境( CentOS下安装JDK笔记 )
假设您已经在Linux系统上正确安装了JDK开发环境,且JDK安装的位置在: /opt/jdk/
二、下载并解压最新版本的Tomcat,,将其下载下来(我下到的是apache-tomcat-6.0.41.tar.gz)放到Linux系统的/opt/目录下,运行命令解压(并将解压出来的目录更名为tomcat):
tar xzvf apache-tomcat-6.0.41.tar.gz mv apache-tomcat-6.0.41/ tomcat
三、编译安装tomcat daemon服务守候程序:
cd /opt/tomcat/bin/ tar xvzf commons-daemon-native.tar.gz
1、解压后会生成一个commons-daemon-1.0.15-native-src目录,cd到这个目录的Linux子目录:cd commons-daemon-1.0.10-native-src/unix
2、注释:安装gcc(默认Mini版本没有安装gcc)yum -y install gcc
3、执行编译配置./configure #(注意:需要先安装好make,gcc等编译工具) ./configure --with-java=/opt/jdk 如果提示没有jdk,使用这个命令。主要是java目录未写入系统目录
4、运行完成后会提示如下信息说明操作成功:... *** All done *** Now you can issue "make"
5、执行make:make
6、执行make后会生成一个jsvc的文件,将其复制到tomcat的bin目录。cp jsvc /opt/tomcat/bin/
7、在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即可。
8、修改daemon环境变量 :
用文本编辑器(vi或emacs等)编辑它,找到类似下面这样配置段:
test ".$TOMCAT_USER" = . && TOMCAT_USER=tomcat # Set JAVA_HOME to working JDK or JRE # JAVA_HOME=/opt/jdk-1.6.0.22
9、修改TOMCAT_USER=tomcat为您要指定身份运行的linux账号用户名,此处指定用户名为tomcat。
并把JAVA_HOME=...前面的注释(即“#”号)去掉,并设置为jdk的安装目录路径,最后,修改好后的配置段变成如下:
test ".$TOMCAT_USER" = . && TOMCAT_USER=tomcat # Set JAVA_HOME to working JDK or JRE JAVA_HOME=/opt/jdk
10、现在修改/opt/tomcat目录的所有者为tomcat(即您要指定身份运行的linux帐号):
useradd -M tomcat #创建没有主目录的tomcat用户 chsh tomcat -s /sbin/nologin #禁止tomcat登陆操作,类似于windows的系统账户 chown -R tomcat /opt/tomcat #将/opt/tomcat下的所有档案与子目录进行相同的拥有者变更为tomcat用户
11、为tomcat/bin/目录下的*.sh添加相应的x权限位:
chmod +x /opt/tomcat/bin/*.sh
12、现在,可以测试一下daemon是否可以启动运行,启动方式如下:
/opt/tomcat/bin/daemon.sh start curl http://localhost:8080 #测试一下是否启动