CentOS7之Tomcat服务

阅读帮助

  1. 关于命令提示符:
    #表示是用 root 用户执行的命令
    ex: # useradd cas
    $表示是用普通用户执行的命令
    ex: $ vi .bash_profile

  2. 关于路径,所有命令都是在用户的家目录下执行

  3. $HOME 是linux系统内置环境变量,表示当前用户的家目录路径。


环境说明

系统OS:CentOS7
IP: 192.168.1.101


配置过程

  1. 创建普通用户 web
    首先创建用户组 app,再创建用户 web,加入到 app
    # groupadd app
    # useradd -g app cas
    # passwd cas

  2. 切换到用户 cas
    # su - cas

  3. 去oracle和apache官网下载需要的jdk和tomcat的tar.gz包,此处以截止至2018年3月31日最新版本的jdk和tomcat为例

$ wget http://download.oracle.com/otn-pub/java/jdk/9.0.4+11/c2514751926b4512b076cc82f959763f/jdk-9.0.4_linux-x64_bin.tar.gz?AuthParam=1522426550_309d343cd864a9f180653b294dc578c6
$ wget http://mirrors.shu.edu.cn/apache/tomcat/tomcat-9/v9.0.6/bin/apache-tomcat-9.0.6.tar.gz
  • tips: 如果没找到wget命令,先用 root 用户运行 yum install wget -y 命令进行安装
  1. 解压tar.gz包
    $ tar -zxvf jdk-9.0.4_linux-x64_bin.tar.gz
    $ tar -zxvf apache-tomcat-9.0.6.tar.gz

  2. 为了让路径看起来清洁一点,我们把tar.gz包删除,将解压的jdk和tomcat目录重命名一下
    $ rm *.tar.gz
    $ mv jdk-9.0.4 java
    $ mv apache-tomcat-9.0.6 tomcat

  3. 配置java环境变量
    $ vi .bash_profile

export JAVA_HOME=$HOME/java
export JRE_HOME=$JAVA_HOME/jre
export CLASSPATH=$JAVA_HOME/lib/
export PATH=$PATH:$JAVA_HOME/bin

刷新配置,使其生效
$ source .bash_profile

验证一下java是否配置正确
$ java -version

tips: 到这里就已经可以通过 sh $HOME/tomcat/bin/startup.sh 正常运行tomcat服务了,但使用起来不是很方便,接下来我们再对tomcat的配置做一些修改。

  1. 修改tomcat的配置,主要是一些易用性的配置

a) 修改 $HOME/tomcat/bin/catalina.sh ,在文件的 PRGDIR=`dirname "$PRG"` 这行下面添加如下代码
$ vi tomcat/bin/catalina.sh

if [ -z "$CATALINA_PID" ]; then
      CATALINA_PID=$PRGDIR/CATALINA_PID
fi

b) 修改 $HOME/tomcat/bin/shutdown.sh 最后一行,添加-force参数
$ vi tomcat/bin/shutdown.sh

exec "$PRGDIR"/"$EXECUTABLE" stop -force "$@"
  • tips:以上两步操作主要是解决 shutdown.sh 命令有时候无法正常停止tomcat,而不得不以 kill -9 pid 的方式来停止的问题。

c) 修改 $HOME/tomcat/conf/tomcat-users.xml,添加管理用户manager
$ vi tomcat/conf/tomcat-users.xml

  <role rolename="admin-gui"/>
  <role rolename="manager-gui"/>
  <role rolename="manager-script"/>
  <role rolename="manager-jmx"/>
  <user username="manager" password="manager123" roles="manager-gui"/>
  <user username="admin" password="admin123" roles="admin-gui,manager-script,manager-jmx"/>

d) 修改 $HOME/tomcat/webapps/manager/META-INF/context.xml,注释掉<Valve>标签,否则只有localhost才能访问manager页面。
$ vi tomcat/webapps/manager/META-INF/context.xml

<!--
  <Valve className="org.apache.catalina.valves.RemoteAddrValve"
         allow="127\.\d+\.\d+\.\d+|::1|0:0:0:0:0:0:0:1" />
-->

tips: tomcat8.x以下的版本是默认注释的,无须修改

e) 修改 $HOME/tomcat/webapps/manager/WEB-INF/web.xml,修改文件上传大小限制,默认最大只能上传50MB大小的文件。
$ vi tomcat/webapps/manager/WEB-INF/web.xml

    <multipart-config>
      <!-- 500MB max -->
      <max-file-size>524288000</max-file-size>
      <max-request-size>524288000</max-request-size>
      <file-size-threshold>0</file-size-threshold>
    </multipart-config>

这样修改之后,我们就可以通过 http://192.168.1.101:8080/manager/html 来上传我们的war包进行热部署了。如果无法访问,可能是被防火墙墙了。
要么修改防火墙,允许8080端口通过
# firewall-cmd --add-port=80/tcp --permanent

或者直接关闭防火墙
# systemctl stop firewalld

tips: 如果不需要开启manager/html访问,c、d、e这3步操作可以省略

f) 创建 .local/bin目录
$ mkdir -p .local/bin

tips: 该目录是当前用户$PATH中的路径,放在这个目录下的命令脚本就可以在该用户的任何目录下面直接执行了,我们接下来要把启动,停止和重启脚本放在该目录下。
g) 创建启动脚本 start
$ vi .local/bin/start

#!/bin/bash
webapps=$HOME/tomcat/webapps
files=`ls $webapps`
for file in $files
do
# 如果是war文件,且存在文件的同名目录,则解压覆盖,避免因为存在同名目录的war包不会自动解压更新的问题。
  if [[ "war" = ${file##*.} && -d $webapps/${file%.*} ]]
    then
      echo "正在解压 $webapps/$file 文件..."
      cd $webapps/${file%.*}
      $HOME/java/bin/jar -xf $webapps/$file
      echo "$webapps/$file 文件解压完成。"
  fi
done
echo "正在启动tomcat..."
sh $HOME/tomcat/bin/startup.sh
echo "tomcat已经启动完成"

h) 创建停止脚本 stop
$ vi .local/bin/stop

#!/bin/bash
catalina_pid=$HOME/tomcat/bin/CATALINA_PID
# 如果CATALINA_PID文件存在,则表示当前tomcat是运行状态,可以停止
if [ -f $catalina_pid ]
then
  echo "正在停止tomcat..."
  sh $HOME/tomcat/bin/shutdown.sh
  echo "tomcat已停止"
fi

i) 创建重启脚本 restart
$ vi .local/bin/restart

#!/bin/bash
source $HOME/.local/bin/stop
source $HOME/.local/bin/start

j) 给这三个脚本文件赋予可执行权限
$ chmod 755 .local/bin/*

tips: 此时,我们就可以随处执行start,stop或这restart命令来管理tomcat服务了。但有时候我们生产环境万一遭遇断电导致服务器重启,此时我们还得需要手动去启动tomcat服务,接下来我们再看看如何让tomcat开机自动启动。

  1. 配置开机启动tomcat服务

a) 修改 $HOME/tomcat/bin/setclasspath.sh,在里面添加 JAVA_HOMEJRE_HOME 两个变量
$ vi tomcat/bin/setclasspath.sh

export JAVA_HOME=$HOME/java
export JRE_HOME=$JAVA_HOME/jre
setclasspath.sh

tips: 如果没有这一步,启动服务的时候会报下面这样的错误

3月 26 14:17:36 server-101.localdomain startup.sh[14810]: Neither the JAVA_HOME nor the JRE_HOME environment variable is defined
3月 26 14:17:36 server-101.localdomain startup.sh[14810]: At least one of these environment variable is needed to run this program

b) 使用 root 用户创建 /etc/systemd/system/cas.service 文件,文件名称根据你自己需要随意命名,格式为 servicename.service
# vi /etc/systemd/system/cas.service

[Unit]
Description=cas service  ##服务名称为cas
After=network.target  ##网络服务启动完成后启动该服务

[Service]
Type=forking  ##后台运行
ExecStart=/home/cas/.local/bin/start  ## 启动脚本
ExecStop=/home/cas/.local/bin/stop  ##停止脚本
ExecReload=/home/cas/.local/bin/restart  ##重启脚本
User=cas  ##启动用户
Group=app  ##用户组

[Install]
WantedBy=multi-user.target

c) 重载服务配置
# systemctl daemon-reload

d) 激活cas.service服务开机启动
# systemctl enable cas


至此大功告成,现在启动tomcat服务有两种方法

  1. 使用 root 用户执行 systemctl start|stop|restart cas
  2. 使用普通用户 cas 执行 start|stop|restart

tips: 以上配置都是通用的,我们可以将这个配置打包备用
$ tar -czvf tomcat.tar.gz tomcat/ .local/ java/ .bash_profile

如果你有多个应用服务需要部署在该服务器上,我们可以再新建一个用户,直接将修改过的tomcat.tar.gz复制到新用户的家目录下解压,修改一下端口即可使用。

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 204,445评论 6 478
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 85,889评论 2 381
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 151,047评论 0 337
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 54,760评论 1 276
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 63,745评论 5 367
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 48,638评论 1 281
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 38,011评论 3 398
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 36,669评论 0 258
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 40,923评论 1 299
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 35,655评论 2 321
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 37,740评论 1 330
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 33,406评论 4 320
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 38,995评论 3 307
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 29,961评论 0 19
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 31,197评论 1 260
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 45,023评论 2 350
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 42,483评论 2 342

推荐阅读更多精彩内容