• tomcat使用jsvc启动tomcat,关闭shutdown


    tomcat禁用8005端口的时候报错 "SEVERE: No shutdown port configured. Shut down server through OS signal. Server not shut down.",报错原因是因为:

    禁用关闭命令端口在tomcat以windows服务或linux等系统的jsvc方式启动时可以生效,在标准shell脚本启动的方式下不会生效,这将阻止shutdown和catalina脚本停止tomcat

    所以这里介绍jsvc方式启动tomcat

    安装jsvc

    [root@iZzm446eh1ux98Z apache-tomcat-8.5.57]# cd bin/
    
    [root@iZzm446eh1ux98Z bin]# tar xfz commons-daemon-native.tar.gz 
    
    [root@iZzm446eh1ux98Z bin]# cd commons-daemon-1.2.2-native-src/unix
    
    [root@iZzm446eh1ux98Z unix]# pwd
    /opt/softwares/apache-tomcat-8.5.57/bin/commons-daemon-1.2.2-native-src/unix

    编译安装

    [root@iZzm446eh1ux98Z unix]#  ./configure --with-java=$JAVA_HOME
    *** Current host ***
    checking build system type... x86_64-pc-linux-gnu
    checking host system type... x86_64-pc-linux-gnu
    checking cached host system type... ok
    *** C-Language compilation tools ***
    checking for gcc... gcc
    checking whether the C compiler works... yes
    checking for C compiler default output file name... a.out
    checking for suffix of executables... 
    checking whether we are cross compiling... no
    checking for suffix of object files... o
    checking whether we are using the GNU C compiler... yes
    checking whether gcc accepts -g... yes
    checking for gcc option to accept ISO C89... none needed
    checking for ranlib... ranlib
    checking for strip... strip
    *** Host support ***
    checking C flags dependant on host system type... ok
    *** Java compilation tools ***
    checking JAVA_HOME... /opt/softwares/jdk1.8.0_201
    checking for JDK os include directory...  linux
    gcc flags added
    checking how to run the C preprocessor... gcc -E
    checking for grep that handles long lines and -e... /usr/bin/grep
    checking for egrep... /usr/bin/grep -E
    checking for ANSI C header files... yes
    checking for sys/types.h... yes
    checking for sys/stat.h... yes
    checking for stdlib.h... yes
    checking for string.h... yes
    checking for memory.h... yes
    checking for strings.h... yes
    checking for inttypes.h... yes
    checking for stdint.h... yes
    checking for unistd.h... yes
    checking sys/capability.h usability... no
    checking sys/capability.h presence... no
    checking for sys/capability.h... no
    configure: WARNING: cannot find headers for libcap
    *** Writing output files ***
    configure: creating ./config.status
    config.status: creating Makefile
    config.status: creating Makedefs
    config.status: creating native/Makefile
    *** All done ***
    Now you can issue "make"
    
    [root@iZzm446eh1ux98Z unix]# make (cd native; make all) make[
    1]: Entering directory '/opt/softwares/apache-tomcat-8.5.57/bin/commons-daemon-1.2.2-native-src/unix/native' gcc -g -O2 -DOS_LINUX -DDSO_DLFCN -DCPU="amd64" -Wall -Wstrict-prototypes -I/opt/softwares/jdk1.8.0_201/include -I/opt/softwares/jdk1.8.0_201/include/linux -c jsvc-unix.c -o jsvc-unix.o jsvc-unix.c: In function ‘run_controller’: jsvc-unix.c:1293:20: warning: assignment to ‘__sighandler_t’ {aka ‘void (*)(int)’} from incompatible pointer type ‘void (*)(int, siginfo_t *, void *)’ {aka ‘void (*)(int, struct <anonymous> *, void *)’} [-Wincompatible-pointer-types] act.sa_handler = controller; ^ gcc -g -O2 -DOS_LINUX -DDSO_DLFCN -DCPU="amd64" -Wall -Wstrict-prototypes -I/opt/softwares/jdk1.8.0_201/include -I/opt/softwares/jdk1.8.0_201/include/linux -c arguments.c -o arguments.o gcc -g -O2 -DOS_LINUX -DDSO_DLFCN -DCPU="amd64" -Wall -Wstrict-prototypes -I/opt/softwares/jdk1.8.0_201/include -I/opt/softwares/jdk1.8.0_201/include/linux -c debug.c -o debug.o gcc -g -O2 -DOS_LINUX -DDSO_DLFCN -DCPU="amd64" -Wall -Wstrict-prototypes -I/opt/softwares/jdk1.8.0_201/include -I/opt/softwares/jdk1.8.0_201/include/linux -c dso-dlfcn.c -o dso-dlfcn.o gcc -g -O2 -DOS_LINUX -DDSO_DLFCN -DCPU="amd64" -Wall -Wstrict-prototypes -I/opt/softwares/jdk1.8.0_201/include -I/opt/softwares/jdk1.8.0_201/include/linux -c dso-dyld.c -o dso-dyld.o gcc -g -O2 -DOS_LINUX -DDSO_DLFCN -DCPU="amd64" -Wall -Wstrict-prototypes -I/opt/softwares/jdk1.8.0_201/include -I/opt/softwares/jdk1.8.0_201/include/linux -c help.c -o help.o gcc -g -O2 -DOS_LINUX -DDSO_DLFCN -DCPU="amd64" -Wall -Wstrict-prototypes -I/opt/softwares/jdk1.8.0_201/include -I/opt/softwares/jdk1.8.0_201/include/linux -c home.c -o home.o gcc -g -O2 -DOS_LINUX -DDSO_DLFCN -DCPU="amd64" -Wall -Wstrict-prototypes -I/opt/softwares/jdk1.8.0_201/include -I/opt/softwares/jdk1.8.0_201/include/linux -c java.c -o java.o gcc -g -O2 -DOS_LINUX -DDSO_DLFCN -DCPU="amd64" -Wall -Wstrict-prototypes -I/opt/softwares/jdk1.8.0_201/include -I/opt/softwares/jdk1.8.0_201/include/linux -c location.c -o location.o gcc -g -O2 -DOS_LINUX -DDSO_DLFCN -DCPU="amd64" -Wall -Wstrict-prototypes -I/opt/softwares/jdk1.8.0_201/include -I/opt/softwares/jdk1.8.0_201/include/linux -c replace.c -o replace.o gcc -g -O2 -DOS_LINUX -DDSO_DLFCN -DCPU="amd64" -Wall -Wstrict-prototypes -I/opt/softwares/jdk1.8.0_201/include -I/opt/softwares/jdk1.8.0_201/include/linux -c locks.c -o locks.o gcc -g -O2 -DOS_LINUX -DDSO_DLFCN -DCPU="amd64" -Wall -Wstrict-prototypes -I/opt/softwares/jdk1.8.0_201/include -I/opt/softwares/jdk1.8.0_201/include/linux -c signals.c -o signals.o ar cr libservice.a arguments.o debug.o dso-dlfcn.o dso-dyld.o help.o home.o java.o location.o replace.o locks.o signals.o ranlib libservice.a gcc jsvc-unix.o libservice.a -ldl -lpthread -o ../jsvc make[1]: Leaving directory '/opt/softwares/apache-tomcat-8.5.57/bin/commons-daemon-1.2.2-native-src/unix/native'

    将编译生成的jsvc拷贝到$CATALINA_BASE/bin下

    [root@iZzm446eh1ux98Z unix]# ll
    total 412
    -rw-r--r-- 1 root root  15791 Sep  5 15:48 config.log
    -rwxr-xr-x 1 root root    102 Sep  5 15:47 config.nice
    -rwxr-xr-x 1 root root  24865 Sep  5 15:48 config.status
    -rwxrwxr-x 1 1000 1000 147290 Sep 30  2019 configure
    -rw-r--r-- 1 1000 1000   5055 Sep 30  2019 configure.in
    -rw-r--r-- 1 1000 1000   2594 Sep 30  2019 INSTALL.txt
    -rwxr-xr-x 1 root root 190560 Sep  5 15:48 jsvc
    -rw-r--r-- 1 root root   1195 Sep  5 15:48 Makedefs
    -rw-r--r-- 1 1000 1000   1081 Sep 30  2019 Makedefs.in
    -rw-r--r-- 1 root root   1110 Sep  5 15:48 Makefile
    -rw-r--r-- 1 1000 1000   1110 Sep 30  2019 Makefile.in
    drwxr-xr-x 2 1000 1000     58 Sep  5 15:43 man
    drwxr-xr-x 2 1000 1000   4096 Sep  5 15:48 native
    drwxr-xr-x 2 1000 1000    158 Sep  5 15:43 support
    
    
    [root@iZzm446eh1ux98Z unix]# cp jsvc /opt/softwares/apache-tomcat-8.5.57/bin/

    将$CATALINA_BASE/bin下的daemon.sh拷贝到/etc/init.d/下

    [root@iZzm446eh1ux98Z unix]# cd /opt/softwares/apache-tomcat-8.5.57/bin/
    [root@iZzm446eh1ux98Z bin]# ll
    total 1056
    -rw-r----- 1 root root  36149 Jul  1 05:50 bootstrap.jar
    -rw-r----- 1 root root  16608 Jul  1 05:50 catalina.bat
    -rwxr-x--- 1 root root  25245 Jul  1 05:50 catalina.sh
    -rw-r----- 1 root root   1664 Jul  1 05:53 catalina-tasks.xml
    -rw-r----- 1 root root   2123 Jul  1 05:50 ciphers.bat
    -rwxr-x--- 1 root root   1997 Jul  1 05:50 ciphers.sh
    drwxr-xr-x 4 root root     95 Sep  5 15:43 commons-daemon-1.2.2-native-src
    -rw-r----- 1 root root  25197 Jul  1 05:50 commons-daemon.jar
    -rw-r----- 1 root root 206895 Jul  1 05:50 commons-daemon-native.tar.gz
    -rw-r----- 1 root root   2040 Jul  1 05:50 configtest.bat
    -rwxr-x--- 1 root root   1922 Jul  1 05:50 configtest.sh
    -rwxr-x--- 1 root root   9100 Jul  1 05:50 daemon.sh
    -rw-r----- 1 root root   2091 Jul  1 05:50 digest.bat
    -rwxr-x--- 1 root root   1965 Jul  1 05:50 digest.sh
    -rwxr-xr-x 1 root root 190560 Sep  5 15:49 jsvc
    -rw-r----- 1 root root   3460 Jul  1 05:50 setclasspath.bat
    -rwxr-x--- 1 root root   3708 Jul  1 05:50 setclasspath.sh
    -rw-r----- 1 root root   2020 Jul  1 05:50 shutdown.bat
    -rwxr-x--- 1 root root   1902 Jul  1 05:50 shutdown.sh
    -rw-r----- 1 root root   2022 Jul  1 05:50 startup.bat
    -rwxr-x--- 1 root root   1904 Jul  1 05:50 startup.sh
    -rw-r----- 1 root root  51232 Jul  1 05:50 tomcat-juli.jar
    -rw-r----- 1 root root 419572 Jul  1 05:50 tomcat-native.tar.gz
    -rw-r----- 1 root root   4574 Jul  1 05:50 tool-wrapper.bat
    -rwxr-x--- 1 root root   5540 Jul  1 05:50 tool-wrapper.sh
    -rw-r----- 1 root root   2026 Jul  1 05:50 version.bat
    -rwxr-x--- 1 root root   1908 Jul  1 05:50 version.sh
    [root@iZzm446eh1ux98Z bin]# cp daemon.sh /etc/init.d/tomcat

    设置环境变量

    [root@iZzm446eh1ux98Z bin]# vim /etc/profile.d/catalina.sh
    export CATALINA_HOME=/opt/softwares/apache-tomcat-8.5.57
    export CATALINA_BASE=/opt/softwares/apache-tomcat-8.5.57
    [root@iZzm446eh1ux98Z bin]# vim /etc/profile
    export JAVA_HOME=/opt/softwares/jdk1.8.0_201
    export PATH=$JAVA_HOME/bin:$JAVA_HOME/jre/bin:$PATH
    export CLASSPATH=.$CLASSPATH:$JAVA_HOME/lib:$JAVA_HOME/jre/lib:$JAVA_HOME/lib/tools.jar

    修改/etc/init.d/tomcat

    [root@iZzm446eh1ux98Z bin]# vim /etc/init.d/tomcat
    #!/bin/sh
    
    # chkconfig: 2345 25 85                                              #添加到头部,这是服务配置信息
    # description: Tomcat daemon project
    ....
    # -----------------------------------------------------------------------------
    # Commons Daemon wrapper script.
    # -----------------------------------------------------------------------------
    
    JAVA_HOME=/opt/softwares/jdk1.8.0_201                                                 #配置环境变量
    CATALINA_HOME=/opt/softwares/apache-tomcat-8.5.57
    # resolve links - $0 may be a softlink
    
    test ".$TOMCAT_USER" = . && TOMCAT_USER=tomcat   # 这里的tomcat改成tomcat启动用户,如果启动报错Invalid user name 'tomcat' specified,那么添加一下就可以了useradd -s /sbin/nologin -M tomcat

    修改权限

    [root@iZzm446eh1ux98Z bin]# chown -R tomcat.tomcat /opt/softwares/apache-tomcat-8.5.57/

    添加开机自启动

    chkconfig --add tomcat
    chkconfig --list 

    启动

    [root@iZzm446eh1ux98Z bin]# service tomcat start
  • 相关阅读:
    Cordova Android源代码分析系列一(项目总览和CordovaActivity分析)
    codeforces A. Supercentral Point 题解
    Codeforces441A_Valera and Antique Items(水题)
    POJ 2407 Relatives 欧拉函数题解
    用Qt制作的Android独立游戏《吃药了》公布
    Webserver管理系列:12、开启关闭Ping命令
    高性能 Socket 组件 HP-Socket v3.2.1-RC3 公布
    00092_字符输出流Writer
    np.vstack()和np.hstack()
    用 Python 检验数据正态分布的几种方法
  • 原文地址:https://www.cnblogs.com/zh-dream/p/13605029.html
Copyright © 2020-2023  润新知