阅读帮助
关于命令提示符:
#
表示是用 root 用户执行的命令
ex:# useradd cas
$
表示是用普通用户执行的命令
ex:$ vi .bash_profile
关于路径,所有命令都是在用户的家目录下执行
$HOME 是linux系统内置环境变量,表示当前用户的家目录路径。
环境说明
系统OS:CentOS7
IP: 192.168.1.101
配置过程
创建普通用户 web
首先创建用户组 app,再创建用户 web,加入到 app 组
# groupadd app
# useradd -g app cas
# passwd cas
切换到用户 cas
# su - cas
去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 命令进行安装
解压tar.gz包
$ tar -zxvf jdk-9.0.4_linux-x64_bin.tar.gz
$ tar -zxvf apache-tomcat-9.0.6.tar.gz
为了让路径看起来清洁一点,我们把tar.gz包删除,将解压的jdk和tomcat目录重命名一下
$ rm *.tar.gz
$ mv jdk-9.0.4 java
$ mv apache-tomcat-9.0.6 tomcat
配置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的配置做一些修改。
- 修改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开机自动启动。
- 配置开机启动tomcat服务
a) 修改 $HOME/tomcat/bin/setclasspath.sh,在里面添加 JAVA_HOME 和 JRE_HOME 两个变量
$ vi tomcat/bin/setclasspath.sh
export JAVA_HOME=$HOME/java
export JRE_HOME=$JAVA_HOME/jre
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服务有两种方法
- 使用 root 用户执行
systemctl start|stop|restart cas
- 使用普通用户 cas 执行
start|stop|restart
tips: 以上配置都是通用的,我们可以将这个配置打包备用
$ tar -czvf tomcat.tar.gz tomcat/ .local/ java/ .bash_profile
如果你有多个应用服务需要部署在该服务器上,我们可以再新建一个用户,直接将修改过的tomcat.tar.gz复制到新用户的家目录下解压,修改一下端口即可使用。