一、Linux下Java环境配置
1、JDK下载
相关命令:
# 查看是否已经安装Java
rpm -qa | grep -i java
# 删除所有相关的Java-xxx
rpm -e --nodeps java-xxx
访问Oracle官网:下载JDK,我们这里下载的是JDK17版本Java Downloads | Oracle 中国https://www.oracle.com/cn/java/technologies/downloads/
把文件下载下来后,放到Linux系统目录中
使用命令:tar -xvf jdk-17_linux-x64_bin.tar.gz 解压文件
# 解压文件
tar -xvf jdk-17_linux-x64_bin.tar.gz
2、Java环境变量配置
使用命令:vim /etc/profile 编辑全局配置文件
# 编辑文件
vim /etc/profile
在文件后面追加以下配置
JAVA_HOME=/usr/local/jdk-17.0.5
CLASSPATH=$JAVA_HOME/lib/
PATH=$PATH:$JAVA_HOME/bin
export PATH JAVA_HOME CLASSPATH
使用命令:source /etc/profile 生效配置,使用命令:java -version 查看是否配置成功
# 生效配置文件
source /etc/profile
# 查看Java版本
java -version
打印出Java版本则表示配置成功了
二、Linux下Tomcat配置
参考:CentOS-7 安装部署 Tomcat 步骤教程_:Subs的博客-优快云博客
1、下载Tomcat
访问官网:下载Tomcat,我们这里下载的是Tomcat 9的版本Apache Tomcat® - Apache Tomcat 9 Software Downloadshttps://tomcat.apache.org/download-90.cgi
把文件下载下来后,放到Linux系统目录中
使用命令:tar -xvf apache-tomcat-9.0.70.tar.gz 解压文件,使用命令:cd ./apache-tomcat-9.0.70/bin 进入tomcat的bin目录
# 解压文件
tar -xvf apache-tomcat-9.0.70.tar.gz
# 切换目录到Tomcat的bin目录
cd ./apache-tomcat-9.0.70/bin
# 查看目录下的文件
ll
2、启动Tomcat程序
使用命令:./startup.sh 启动程序
# 执行当前目录下的startup.sh脚本,启动Tomcat
./startup.sh
启动成功后使用 http://localhost:8080 访问程序,如果是在外部进行访问,需要开启防火墙端口8080或者关闭防火墙
3、项目的部署
将项目war包放到 Tomcat/webapps 目录,Tomcat会自动解war包并生成项目目录,我们这里用的是Demo.war
最后在浏览器里面访问项目即可,如:http://localhost:8080/Demo
三、项目更新及重启的Shell脚本编写
相关学习网站:
菜鸟教程网站:Shell 教程 | 菜鸟教程
中文Linux命令帮助大全:http://man.linuxde.net/
1、Tomcat重启脚本编写
我们这里把脚本命名 restart.sh ,脚本内容如下:
#!/bin/sh
bin=$(cd `dirname $0`; pwd)
pid=$(ps aux | grep tomcat | grep -v grep | grep -v restart | grep ${bin} | awk '{print $2}')
if [ -n "${pid}" ]; then
echo "Shutdown..."
sh ${bin}/shutdown.sh
sleep 3
pid=$(ps aux | grep tomcat | grep -v grep | grep -v restart | grep ${bin} | awk '{print $2}')
if [ -n "${pid}" ]; then
kill -9 ${pid}
sleep 1
fi
fi
echo "Startup..."
sh ${bin}/startup.sh
if [ "$1" = "-v" ]; then
tail -f ${bin}/../logs/catalina.out
fi
脚本创建完成后使用 chmod +x restart.sh 为脚本开启执行权限
# 添加执行权限
chmod +x restart.sh
脚本详细说明如下:
#!/bin/sh
# 获取脚本文件上级目录的相对位置
# $0 获取脚本相对路径名称,包括文件名称
# dirname 去除文件名中的非目录部分
echo `dirname $0`
# 获取bin目录绝对位置
bin=$(cd `dirname $0`; pwd)
# 获取tomcat进程ID
# ps aux 当前所有进程
# grep tomcat 查找进程中包含tomcat的
# grep -v gerp 查找进程中不包含gerp的
# awk 跨行查找
# '{print $2}' 打印以空格分割的第二个值
pid=$(ps aux | grep tomcat | grep -v grep | grep -v restart | grep ${bin} | awk '{print $2}')
# 判断是否存在进程
if [ -n "${pid}" ]; then
echo "关闭Tomcat"
# 调用Tomcat关闭脚本
sh ${bin}/shutdown.sh
# 等待3秒
sleep 3
# 继续查找进程ID
pid=$(ps aux | grep tomcat | grep -v grep | grep -v restart | grep ${bin} | awk '{print $2}')
# 如果进程还是存在
if [ -n "${pid}" ]; then
# 强行关闭进程
kill -9 ${pid}
# 等待1秒
sleep 1
fi
fi
echo "启动Tomcat"
# 调用Tomcat启动脚本
sh ${bin}/startup.sh
# 如果第一个入参等于-v
if [ "$1" = "-v" ]; then
# 把日志文件里的最尾部的内容显示在屏幕上,并且不断刷新
tail -f ${bin}/../logs/catalina.out
fi
2、项目更新脚本编写
我们这里把命名为 deploy.sh , 脚本内容如下:
#!/bin/sh
war=$1
bin=$(cd `dirname $0`; pwd)
if [ ! -n "${war}" ]; then
echo "***Usage: $0 [project.war]"
exit 0
fi
if [ ! -f "${war}" ]; then
echo "***Error: ${war} does not exist."
exit 0
fi
if [ ! "${war##*.}" = "war" ]; then
echo "***Error: ${war} is not a war file."
exit 0
fi
echo "Deploy ${war##*/}..."
rm -rf ${bin}/../webapps/ROOT/ && unzip -qo ${war} -d ${bin}/../webapps/ROOT/
rm -rf ${bin}/../work/Catalina/localhost/
echo "Restart tomcat..."
exec ${bin}/restart.sh
脚本创建完成后使用 chmod +x deploy.sh 为脚本开启执行权限
# 添加执行权限
chmod +x deploy.sh
脚本中用到了unzip命令解压文件,如果unzip不存在,则需要使用 yum -y install unzip 安装unzip
# 安装unzip
yum -y install unzip
脚本详细说明如下:
#!/bin/sh
# 获取入参
war=$1
echo $war
# 获取脚本文件上级目录的相对位置
# $0 获取脚本相对路径名称,包括文件名称
# dirname 去除文件名中的非目录部分
echo `dirname $0`
# 获取bin目录绝对位置
bin=$(cd `dirname $0`; pwd)
echo $bin
# 检查输入字符是否为空
if [ ! -n "${war}" ]; then
echo "输入字符为空"
exit 0
else
echo "输入字符不为空"
fi
# 检查输入字符是否存在且为文件名(既不是目录,也不是设备文件)
if [ ! -f "${war}" ]; then
echo "输入字符非文件或该文件不存在"
exit 0
else
echo "输入字符为文件名且该文件存在当前目录"
fi
# ${war##*.}删掉最后.及其左边的字符
# 获取后缀名,并判断后缀是否为war
if [ ! "${war##*.}" = "war" ]; then
echo "文件后缀为${war##*.},不等于war"
exit 0
else
echo "文件后缀等于war"
fi
# ${war##*/}删掉最后/及其左边的字符
echo "Deploy ${war##*/}..."
# rm -rf ${bin}/../webapps/ROOT/ 删除ROOT里面的目录及目录下的文件
# tomcat下的 webapps/ROOT/ 和 webapps/目录都是文件发布目录,不过webapps优先
# ROOT/还有一个功能就是,如果访问不想要包名,可以把项目文件直接解压到该目录下
# unzip -qo ${war} -d ${bin}/../webapps/ROOT/ 把文件解压到ROOT目录,
# 如果文件夹不存在解压的时候会自动创建
rm -rf ${bin}/../webapps/ROOT/ && unzip -qo ${war} -d ${bin}/../webapps/ROOT/
# rm -rf ${bin}/../work/Catalina/localhost/ 删除该目录及目录下的文件
# work/Catalina/localhost/ 存放项目启动后的编译文件
rm -rf ${bin}/../work/Catalina/localhost/
# 调用Tomcat重启脚本
echo "Restart tomcat..."
exec ${bin}/restart.sh
使用脚本部署文件,我们当前位置为Demo.war的位置,使用命令./apache-tomcat-9.0.70/bin/deploy.sh Demo.war
# 使用脚本更新程序
./apache-tomcat-9.0.70/bin/deploy.sh Demo.war
# 如果Demo.war文件没在当前目录,Demo.war也可以改成相对路径
./apache-tomcat-9.0.70/bin/deploy.sh ./apache-tomcat-9.0.70/webapps/Demo.war
程序启动后我们就可以直接使用IP+端口访问了,效果如下
至此结束~!