Tomcat 8을 설치하고 시작 시 실행하고 싶습니다.
나는 다음 튜토리얼을 따르고 있습니다 :
내가 만들었다수코양이사용자:
# useradd -U -r -M -d /usr/local/ServerWeb/tomcat -s /sbin/nologin tomcat
파일은 다음 위치에 있습니다./etc/init.d/tomcat
옵션 1에서:
#!/bin/bash
# description: Tomcat Start Stop Restart
# processname: tomcat
# chkconfig: 234 20 80
JAVA_HOME=/opt/jdk
export JAVA_HOME
PATH=$JAVA_HOME/bin:$PATH
export PATH
TOMCAT_HOME=/usr/local/tomcat
TOMCAT_USER=tomcat
case $1 in
start)
/bin/su $TOMCAT_USER $TOMCAT_HOME/bin/startup.sh
;;
stop)
/bin/su $TOMCAT_USER $TOMCAT_HOME/bin/shutdown.sh
;;
restart)
/bin/su $TOMCAT_USER $TOMCAT_HOME/bin/shutdown.sh
/bin/su $TOMCAT_USER $TOMCAT_HOME/bin/startup.sh
;;
esac
exit 0
옵션 2에서:
#!/bin/bash
#
# tomcat
#
# chkconfig: - 80 20
#
### BEGIN INIT INFO
# Provides: tomcat
# Required-Start: $network $syslog
# Required-Stop: $network $syslog
# Default-Start:
# Default-Stop:
# Description: Tomcat
# Short-Description: start and stop tomcat
### END INIT INFO
## Source function library.
#. /etc/rc.d/init.d/functions
export JAVA_HOME=/opt/jdk
export JAVA_OPTS="-Dfile.encoding=UTF-8 \
-Dnet.sf.ehcache.skipUpdateCheck=true \
-XX:+UseConcMarkSweepGC \
-XX:+CMSClassUnloadingEnabled \
-XX:+UseParNewGC \
-XX:MaxPermSize=128m \
-Xms512m -Xmx512m"
export PATH=$JAVA_HOME/bin:$PATH
TOMCAT_HOME=/usr/local/tomcat
TOMCAT_USER=tomcat
SHUTDOWN_WAIT=20
tomcat_pid() {
echo `ps aux | grep org.apache.catalina.startup.Bootstrap | grep -v grep | awk '{ print $2 }'`
}
start() {
pid=$(tomcat_pid)
if [ -n "$pid" ]
then
echo "Tomcat is already running (pid: $pid)"
else
# Start tomcat
echo "Starting tomcat"
ulimit -n 100000
umask 007
/bin/su -p -s /bin/sh $TOMCAT_USER $TOMCAT_HOME/bin/startup.sh
fi
return 0
}
stop() {
pid=$(tomcat_pid)
if [ -n "$pid" ]
then
echo "Stoping Tomcat"
/bin/su -p -s /bin/sh $TOMCAT_USER $TOMCAT_HOME/bin/shutdown.sh
let kwait=$SHUTDOWN_WAIT
count=0;
until [ `ps -p $pid | grep -c $pid` = '0' ] || [ $count -gt $kwait ]
do
echo -n -e "\nwaiting for processes to exit";
sleep 1
let count=$count+1;
done
if [ $count -gt $kwait ]; then
echo -n -e "\nkilling processes which didn't stop after $SHUTDOWN_WAIT seconds"
kill -9 $pid
fi
else
echo "Tomcat is not running"
fi
return 0
}
case $1 in
start)
start
;;
stop)
stop
;;
restart)
stop
start
;;
status)
pid=$(tomcat_pid)
if [ -n "$pid" ]
then
echo "Tomcat is running with pid: $pid"
else
echo "Tomcat is not running"
fi
;;
esac
exit 0
이게 왜 필요한지 이해가 안가네요시작옵션 2:
ulimit -n 100000
umask 007
소유권을 변경했습니다.chown -Rvh tomcat: /usr/local/tomcat/
~ 후에
# chmod +x /etc/init.d/tomcat
# chkconfig --add tomcat`
하지만 다시 시작한 후센트OS 6.6, 서비스가 실행되고 있지 않습니다.
시험:
$ echo $JAVA_HOME
$
$ echo $PATH
/usr/lib/qt-3.3/bin:/usr/local/bin:/usr/bin:/bin:/usr/local/sbin:/usr/sbin:/sbin:/home/IntUser/bin
$
즉, $JAVA_HOME 및 $PATH할당되지 않음! ! !
수동으로 시작해 보십시오(Tomcat 사용자에게 비밀번호를 할당하지 않았습니다. 어떤 비밀번호를 사용해야 합니까?).
$ service tomcat start
Password:
/bin/su: incorrect password
$
다음으로 실행root
, 알아보고 있습니다:
# service tomcat start
This account is currently not available.
#
계좌 확인:
# finger tomcat
Login: tomcat Name: Tomcat User
Directory: /usr/local/tomcat Shell: /sbin/nologin
Never logged in.
No mail.
No Plan.
#
# more /etc/passwd | grep tomcat
tomcat:x:493:490:Tomcat User:/usr/local/tomcat:/sbin/nologin
#
소유권 확인:
# ls -al /usr/local/tomcat/
total 120
drwxr-xr-x. 9 tomcat tomcat 4096 Jun 27 09:29 .
drwxr-xr-x. 20 root root 4096 Jun 27 09:29 ..
drwxr-xr-x. 2 tomcat tomcat 4096 Jun 27 09:29 bin
drwxr-xr-x. 3 tomcat tomcat 4096 Jun 27 11:04 conf
drwxr-xr-x. 2 tomcat tomcat 4096 Jun 27 09:29 lib
-rw-r--r--. 1 tomcat tomcat 56977 May 19 15:03 LICENSE
drwxr-xr-x. 2 tomcat tomcat 4096 Jun 27 11:04 logs
-rw-r--r--. 1 tomcat tomcat 1397 May 19 15:03 NOTICE
-rw-r--r--. 1 tomcat tomcat 6741 May 19 15:03 RELEASE-NOTES
-rw-r--r--. 1 tomcat tomcat 16204 May 19 15:03 RUNNING.txt
drwxr-xr-x. 2 tomcat tomcat 4096 Jun 27 09:29 temp
drwxr-xr-x. 7 tomcat tomcat 4096 May 19 15:00 webapps
drwxr-xr-x. 3 tomcat tomcat 4096 Jun 27 11:04 work
#
도와주세요.
질문 1:
이 스크립트는 다음 위치에 생성되었습니다 /etc/init.d/tomcat
. 왜 할당 $JAVA_HOME
하지만 $PATH
할당하지 않습니까?
질문 2 루트 권한 없이 서비스를 설치하는 방법이 있나요?시작 시개입이 필요하지 않습니다(예: sudo, su 등)?
답변1
언급한 튜토리얼 중 어느 것도 useradd
이러한 옵션을 모두 사용하는 것을 권장하지 않습니다. 설정을 통해 다음과 같은 내용을 접하게 login shell
됩니다 /sbin/nologin
.
incorrect password
그리고
This account is currently not available
다음 명령을 실행하면 tomcat
디렉터리 없이 시스템 계정이 됩니다 /home/tomcat
.
useradd -r tomcat --shell /bin/false
이 명령은 다음 디렉터리를 사용하여 비시스템 tomcat
계정을 생성합니다 /home/tomcat
.
useradd tomcat --shell /bin/false
편집하다:
/sbin/nologin
와 의 유사점에 대해서는 당신 말이 맞습니다 /bin/false
. OP의 설치 지침이 Option #2
약간 불완전한 것 같습니다. tomcat
작동할 때까지 한 세트의 지침만 사용하는 것이 좋습니다 .
이것귀하가 제공한 Tomcat 8 버전입니다 Option #1
. 설치가 제대로 작동하도록 하기 위해서만 이 지침을 사용하는 것이 좋습니다. (혼합 및 매칭으로 인해 약간의 문제가 발생할 수 있는 것 같습니다.) 이렇게 하면 합계가 내보내지지 $JAVA_HOME
않는 등의 다른 문제를 피할 수 있으며 $PATH
(질문 1), 질문 2에도 답변이 제공됩니다.
스크립트 에는 Option #1
다음과 같은 줄이 있습니다.
/bin/su $TOMCAT_USER $TOMCAT_HOME/bin/startup.sh
/bin/su $TOMCAT_USER $TOMCAT_HOME/bin/shutdown.sh
/bin/su $TOMCAT_USER $TOMCAT_HOME/bin/shutdown.sh
/bin/su $TOMCAT_USER $TOMCAT_HOME/bin/startup.sh
그러나 Option #1
제공한 링크에는 다음 줄이 있습니다.
sh $CATALINA_HOME/bin/startup.sh
sh $CATALINA_HOME/bin/shutdown.sh
sh $CATALINA_HOME/bin/shutdown.sh
sh $CATALINA_HOME/bin/startup.sh