最近在做Tomcat的实验,顺便研究了一下tomcat的启动脚本发现一个问题,然后经过多方查阅其他大神的资料,终于解决,现在跟大家分享。

tomcat的启动脚本跟别的脚本有稍微区别的原因是他需要识别JAVA_HOME环境,你仅仅是写到/etc/profile文件中是不行的。

在启动的时候会报错,我们通过查询错误信息,显示如下信息内容

  1. startup.sh[14716]: Neither the JAVA_HOME nor the JRE_HOME environment variable is defined

  明明定义了JAVA_HOME为什么显示没有JAVA_HOME呢?

因为tomcat自带的startup.sh脚本。调用的是catalina.sh脚本,然后catalina.sh脚本识别的是catalina.bat中的JAVA_HOME环境

所以我们可以直接在catalina.bat中添加JAVA_HOME,但是我觉得都已经写了启动脚本,还需要去别的地方改,这样的话,反而没有service的脚本方便,

然后查了资料发现。可以在systemctl脚奔模块中添加一个Environment来导入JAVA_HOME,下面将我写的tomcat的启动脚本分享给大家。

  1. vim /usr/lib/systemd/system/tomcat.service
      [Unit]
  2.   Description=Tomcat
  3.   After=network.target
  4.  
  5.   [Service]
  6.   Type=forking
  7.  
  8.   Environment="JAVA_HOME=/usr/local/java" //tomcat启用时需要识别JAVA_HOME
  9.  
  10.   ExecStart=/usr/local/tomcat/bin/startup.sh
  11.   ExecStop=/usr/local/tomcat/bin/shutdown.sh
  12.  
  13.   [Install]
  14.   WantedBy=multi-user.target
  15.  
  16. chmod 600 /usr/lib/systemd/system/tomcat.service

  

  1. systemctl daemon-reload
  2. systemctl start tomcat

  此时tomcat即可正常启动

附加说明一点

  因为shutdown.sh脚本通过tomcat的8005号端口关闭tomcat,如果你的熵池比较小的话,那么你在启动tomcat的时候,可能需要一段时间才可以

完全启用到,可以通过查询端口,来查看tomcat有没有完全启动

  1. ss -antp | grep java

  增加熵池大小的话,可以参考我的另外一篇文章,tomcat启用是为什么8005端口没有被占用

最后,在赠送一个tomcat的service的启用脚本

  1. vim /etc/init.d/tomcat
  2. #!/bin/bash
  3. #chkconfig: 2345 96 14
  4. export JAVA_HOME=/usr/local/java
  5. export CATALINA_HOME=/usr/local/tomcat
  6. exec $CATALINA_HOME/bin/catalina.sh $*

  

  1. [root@tomcat ~]# chmod +x /etc/init.d/tomcat
  2. [root@tomcat ~]# chkconfig --add tomcat
  3. [root@tomcat ~]# chkconfig tomcat on

  

如果有什么错误,或者问题,欢迎评论讨论

tomcat的systemctl启动脚本的更多相关文章

  1. 短网址资料-nginx非root用户启动-systemctl启动脚本-分割root权限

    https://www.cnblogs.com/aspnethot/articles/3492191.htmlhttps://www.cnblogs.com/aspnethot/articles/34 ...

  2. tomcat停止和启动脚本

    日常重启tomcat比较麻烦,所以写了2个脚本,在脚本后输入tomcat名称即可 启动或重启tomcat #!/bin/sh TOMCAT_HOME=/usr/java/$1 if [ ! -n &q ...

  3. linux设置systemctl 启动脚本

    centos 7 服务的systemctl 脚本一般存在:/usr/lib/systemd目录.目录下又分为system,和user之分, /usr/lib/systemd/system #系统服务, ...

  4. CentOS7下利用init.d启动脚本实现tomcat开机自启动

    在之前的博文中已经对CentOS7下通过tomcat进行WEB系统的发布进行了介绍,今天将利用init.d启动脚本,将服务脚本加入到开机启动服务队列,实现tomcat服务的开机启动. 1. 环境准备 ...

  5. Tomcat启动脚本

    记录一个比较好的tomcat启动脚本,截取<OneinStack>,修改如下两个参数即可用. 使用之前修改下面2个参数: #Location of JAVA_HOME (bin files ...

  6. [Tomcat 源码分析系列] (二) : Tomcat 启动脚本-catalina.bat

    概述 Tomcat 的三个最重要的启动脚本: startup.bat catalina.bat setclasspath.bat 上一篇咱们分析了 startup.bat 脚本 这一篇咱们来分析 ca ...

  7. [Tomcat 源码分析系列] (一) : Tomcat 启动脚本-startup.bat

    概述 我们通常使用 Tomcat 中的 startup.bat 来启动 Tomcat. 但是这其中干了一些什么事呢? 大家都知道一个 Java 程序需要启动的话, 肯定需要 main 方法, 那么这个 ...

  8. systemctl启动tomcat后,jps看不到进程

    centos7 写了tomcat的启动脚本,脚本从网上copy的. [Unit]Description=tomcat-1After=syslog.target network.target remot ...

  9. Jenkins tomcat打包启动脚本,待完善

    shell脚本 #!/bin/bashJENKINS_HOME=/usr/local/jenkinsTOMCAT_HOME=/usr/local/jenkins/tomcat-testSHUTDOWN ...

随机推荐

  1. centOS 安装gitlab-runner

    1. curl -L https://packages.gitlab.com/install/repositories/runner/gitlab-runner/script.rpm.sh | sud ...

  2. ArcEngine临时数据存储 创建内存工作空间

    参考网址,这里 工作中有时候需要使用临时数据,以前都是创建一个默认的shapefile或者gdb,今天发现esri官方帮助文档给出了一个方法,可以创建内存工作空间,代码如下: public stati ...

  3. loadrunner笔记(一):下载、安装loadrunner和负载压力测试概念说明

    (一)   下载和安装 下载:(没账号的话得先注册一个账号) https://software.microfocus.com/en-us/products/loadrunner-load-testin ...

  4. Oracle课程档案,第十七天

    flashback drop 闪回下降(删除)SQL> show parameter recyclebinSQL> purge recyclebin;(清除回收站)SQL> crea ...

  5. socket并发聊天

    服务端: import socketserver class MyServer(socketserver.BaseRequestHandler): def handle(self): print('服 ...

  6. js中级小知识1

    首先我们复习之前的小知识,本期博客与之前有关 js数据类型 基本数据类型:string    undefined         null         boolean          numbe ...

  7. day5_非空即真非零即真

    非空即真(字符串.元组.列表.字典.None),非零即真(指的是int类型或数字这种) # d={}# l=[]# t=()# a = ''# b = None以上都代表空 举例1: name = i ...

  8. mybatis+oracle实现简单的模糊查询

    第一种 concat select * from cat_table where cat_name like concat(#{catName},'%') --单个百分号 select * from ...

  9. jQuery 学习笔记(4)(文本值相关方法、操控CSS方法、位置和尺寸方法)

    1.文本值相关方法 .html() == .innerHTML $("div").html("<span> ...</span>") / ...

  10. docker容器与镜像

    就像cad图层概念 数据卷就是为了完成数据持久化操作