Centos下Tomcat以指定的用户,非root权限开机自启

来源:互联网 发布:php实现注册登录 编辑:程序博客网 时间:2024/05/01 09:43

环境:Centos6.6  Tomcat6.44  JDK1.7.072

在Cenots下使用yum install tomcat6 默认情况下开机自启是通过root高权限启动的,非常危险,如果要使用指定的低权限用户开机自启该怎么办?在tomcat6的官方资料中简单的提了一句,但是不详细,(http://tomcat.apache.org/tomcat-6.0-doc/setup.html)现在是我尝试一天后成功的过程。


如果用普通用户使用yum安装tomcat6的话

1)通过yum自动安装tomcat和dependences
root@Centos_AAA ~]$sudo yum install tomcat6
[root@Centos_AAA ~]$ sudo service tomcat6 start
[root@Centos_AAA ~]$sudo  chkconfig tomcat6 on
[root@Centos_AAA ~]#$ sudo yum install tomcat6-webapps
[root@Centos_AAA webapps]$sudo  yum install tomcat6-admin-webapps
 
如果访问http://192.168.0.120:8080/访问不了那大多是防火墙经用了8080端口,解决方法如下:
iptables -A INPUT -p tcp --dport 8080 -j ACCEPT
iptables -A OUTPUT -p tcp --sport 8080 -j ACCEPT
 
如果安装正确的话,可以在browser中看到tomcat的默认的page。
 
2) 配置tomcat
配置文件:/etc/tomcat6/tomcat6.conf + /etc/sysconfig/tomcat6
tomcat home目录: /usr/share/tomcat6
 
配置tomcat为admin和manager用户:
修改文件/usr/share/tomcat6/conf/tomcat-users.xml
<!-- The host manager webapp is restricted to users with role "admin" -->
<!--<user name="tomcat" password="password" roles="admin" />-->
<!-- The manager webapp is restricted to users with role "manager" -->
<user name="tomcat" password="password" roles="manager,admin" />
</tomcat-users>

安装成功后开机自启确实是以tomcat用户权限启动的,但是想要关闭重启tomcat服务还是需要用root或者sudo命令,无法用普通用户权限操作tomcat


下面是手动安装tomcat

一,手动安装自己的JDK环境

这个不多讲,可以看我的其他博客有详细的介绍:http://blog.csdn.net/dj1174232716/article/details/46609995

简单说就是下载JDK源码,然后设置环境变量,我实在/etc/profile中设置全局环境变量的。这里我安装在/usr/java/jdk1.7


二,新建普通权限用户

#useradd test

#passwd test

新建用户时会默认生成一个一样名称的用户组,后面我们以test用户启动tomcat,所以test用户时什么权限,tomcat就是什么权限


三,安装Tomcat6

尽量不要用yum install tomcat6安装tomcat6,缺少很多东西的,这里手动安装tomcat6,先下载apache-tomcat-6.0.44.tar.gz然后解压到安装目录,这里我解压到/usr/local/tomcat6,tomcat自带的jsvc源码需要自己编译安装的,

编译jsvc源码需要gcc,autoconf和JDK,首先进入tomcat的bin目录:

#cd /usr/local/tomcat6/bin

#tar zxvf  commons-daemon-native.tar.gz

#cd commons-daemon-native/unix

#autoconf

#./configure --with-java=/usr/java/jdk1.7    (注意,编译时一定要指定自己的java home)

#make

#cp jsvc ../..  (将jsvc复制到bin目录下,可能还会要将jsvc复制到/etc/bin目录下,自己新建一个/etc/bin目录)

#cd ../..

更改tomcat6的用户和用户组及其权限

#chown  -R  test:test  /usr/local/tomcat6

#chmod -R 711 /usr/local/tomcat6

然后就可以通过命令运行tomcat的守护进程

#/usr/local/bin/jsvc -usr test -classpath $CATALINA_HOME/bin/bootstrap.jar -outfile $CATALINA_BASE/logs/catalina.out -errfile $CATALINA_BASE/logs/catalina.err  -Dcatalina.home=$CATALINA_HOME  -Dcatalina.base=$CATALINA_BASE   -Djava.util.logging.manager=org.apache.juli.ClassLoaderLogManager  -Djava.util.logging.config.file=$CATALINA_BASE/conf/logging.properties  org.apache.catalina.startup.Bootstrap

前提是上面命令中的环境变量都存在,$CATALINA_HOME=$CATALINA_BASE=/usr/local/tomcat6,也可以将决定路径写进去,避免出错。-user就是指定以什么用户启动的,默认是那个用户执行这条命令就是以那个用户启动


四,开机自启

上面的命令开机后执行没问题,但是放在/etc/rc.local甚至是crontab中执行就起不来,很奇怪,后来发现是环境变量的问题,就是在crontab中是有自己的环境变量,不会加载/etc/profile中的环境变量,导致执行时找不到JAVA_HOMAE,放在/etc/rc.local中也不执行是因为/etc/rc.local执行是在加载环境变量之前的,/etc/profile是在登录时在加载的,所以可以在/etc/rc.local中添加source /etc/profile提前加载环境变量就可以了。但是需要注意的是,这种方式启动的tomcat是守护进程,普通用户无法关闭,还是要有root用户才能关闭。


至于jsvc不同的tomcat版本所在的位置不一样,具体看tomcat的官方文档。

0 0
原创粉丝点击