1、服务自启动,就是在linux系统启动的时候,系统会启动自己需要的服务,linux系统启动默认启动/etc/rc.d/init.d 目录下的服务,所以在此目录下添加服务文件如:tomcatd,内容如下:
1 #!/bin/bash 2 # 3 # tomcat 4 # 5 # chkconfig: 6 # description: Start up the Tomcat servlet engine. 7 8 # Source function library. 9 . /etc/init.d/functions 10 11 12 RETVAL=$? 13 CATALINA_HOME="/ROOT/shell/tomcat" 14 15 case "$1" in 16 start) 17 if [ -f $CATALINA_HOME/xxxx/tomcat.sh ]; 18 then 19 echo $"Starting Tomcat" 20 $CATALINA_HOME/xxxx/tomcat.sh start 21 fi 22 ;; 23 stop) 24 if [ -f $CATALINA_HOME/xxxxx/tomcat.sh ]; 25 then 26 echo $"Stopping Tomcat" 27 sh $CATALINA_HOME/xxxx/tomcat.sh stop 28 fi 29 ;; 30 *) 31 echo $"Usage: $0 {start|stop}" 32 exit 1 33 ;; 34 esac 35 36 exit $RETVAL
2、添加软连接,/etc/rc.d下变有0~6七个rc* 目录,功能如下图:
1 sudo ln -s /etc/init.d/tomcatd /etc/rc3.d/S71tomcat
3、然后尝试启动 service tomcatd start,此时可能会遇到错误:
1 Neither the JAVA_HOME nor the JRE_HOME environment variable is defined 2 At least one of these environment variable is needed to run this program
4、重新编辑第一步添加的tomcatd文件,在14行处添加代码(自己服务器的jdk路径)
1 export JAVA_HOME=/ROOT/server/jdk
5、再次启动 service tomcatd start,如果遇到如下错误
1 nohup: cannot run command `java’: No such file or directory
解决方法:在tomcatd文件中加上 . /etc/profile
6、然后重新启动OK,然后你会发现服务的启动用户默认是root,继续解决问题:
1 修改这段代码,用tomcat这个用户启动 2 $CATALINA_HOME/xxxx/tomcat.sh start 3 TO 4 /bin/su tomcat $CATALINA_HOME/xxxx/tomcat.sh start
7、继续启动服务如果发现需要输入密码的话,有两种解决方案,
第一种:
1 添加如下代码到 /etc/pam.d/su 中 pam_rootok.so 行的下边添加如下代码: 3 auth sufficient pam_exec.so quiet /path/to/script
script的内容如下:
1 #!/bin/bash 2 if [ "$PAM_TYPE" == "auth" ] && \ 3 [ "$PAM_USER" == "tomcat" ] && \ 4 [ "$PAM_RUSER" == "root" ]; then 5 exit 0 6 else 7 exit 1 8 fi
第二种:
1 直接在 /etc/pam.d/su 文件中的 pam_rootok.so 行下边添加如下代码: 2 3 auth [success=ignore default=1] pam_succeed_if.so user = tomcat4 auth sufficient pam_succeed_if.so use_uid user = root
7、参考资料:
http://raibledesigns.com/tomcat/boot-howto.html
http://unix.stackexchange.com/questions/113754/allow-user1-to-su-user2-without-password