部署tomcat
安装jdk环境
//安装jdk环境
建议将yum源配置为阿里源,安装配置更快
[root@192 ~]# yum install java-17-openjdk* -y
下载tomcat软件包
前往tomcat官网
Apache Tomcat® - Welcome!https://tomcat.apache.org/
点击archives,选择下载版本
安装部署tomcat
//下载tomcat软件包
[root@192 ~]# wget https://archive.apache.org/dist/tomcat/tomcat-9/v9.0.65/bin/apache-tomcat-9.0.65.tar.gz
[root@192 ~]# ls
anaconda-ks.cfg apache-tomcat-9.0.65.tar.gz zabbix-5.0.25.tar.gz
[root@192 ~]# tar -xf apache-tomcat-9.0.65.tar.gz -C /usr/local/
[root@192 ~]# cd /usr/local/
[root@192 local]# mv apache-tomcat-9.0.65/ tomcat
[root@192 local]# cd tomcat/
[root@192 tomcat]# ls
bin conf lib logs README.md RUNNING.txt webapps
BUILDING.txt CONTRIBUTING.md LICENSE NOTICE RELEASE-NOTES temp work
//写一个hello world的java页面
[root@192 ~]# mkdir /usr/local/tomcat/webapps/test
[root@192 ~]# cd /usr/local/tomcat/webapps/test/
[root@192 test]# vim index.jsp
[root@192 test]# cat index.jsp
<html>
<head>
<title>test page</title>
</head>
<body>
<%
out.println("Hellow World");
%>
</body>
</html>
//设置环境变量
[root@192 ~]# echo 'export PATH=/usr/local/tomcat/bin/:$PATH' > /etc/profile.d/tomcat.sh
[root@192 ~]# source /etc/profile.d/tomcat.sh
//启动tomcat
[root@192 ~]# catalina.sh start
Using CATALINA_BASE: /usr/local/tomcat
Using CATALINA_HOME: /usr/local/tomcat
Using CATALINA_TMPDIR: /usr/local/tomcat/temp
Using JRE_HOME: /usr
Using CLASSPATH: /usr/local/tomcat/bin/bootstrap.jar:/usr/local/tomcat/bin/tomcat-juli.jar
Using CATALINA_OPTS:
Tomcat started.
[root@192 ~]# ss -antl //出现8080端口和8005端口即为成功开启
State Recv-Q Send-Q Local Address:Port Peer Address:Port Process
LISTEN 0 128 0.0.0.0:22 0.0.0.0:*
LISTEN 0 1 [::ffff:127.0.0.1]:8005 *:*
LISTEN 0 100 *:8080 *:*
LISTEN 0 128 [::]:22 [::]:*
//关闭防火墙和selinux
[root@192 ~]# systemctl disable --now firewalld.service
Removed /etc/systemd/system/multi-user.target.wants/firewalld.service.
Removed /etc/systemd/system/dbus-org.fedoraproject.FirewallD1.service.
[root@192 ~]# setenforce 0
[root@192 ~]# vim /etc/selinux/config
SELINUX=disabled
测试网页访问
访问测试目录
开启AJP协议
//解注释以下内容,该文件注释非#而是<!--- --->
[root@192 ~]# vim /usr/local/tomcat/conf/server.xml
<!-- Define an AJP 1.3 Connector on port 8009 -->
<Connector protocol="AJP/1.3"
address="::1"
port="8009"
redirectPort="8443" />
<!-- An Engine represents the entry point (within Catalina) that processes
every request. The Engine implementation for Tomcat stand alone
//查看当前端口号与进程号
[root@192 ~]# ss -antl
State Recv-Q Send-Q Local Address:Port Peer Address:Port Process
LISTEN 0 128 0.0.0.0:22 0.0.0.0:*
LISTEN 0 1 [::ffff:127.0.0.1]:8005 *:*
LISTEN 0 100 *:8080 *:*
LISTEN 0 128 [::]:22 [::]:*
[root@192 ~]# ps -ef | grep tomcat
root 181087 1 0 01:34 pts/2 00:00:07 /usr/bin/java -Djava.util.logging.config.file=/usr/local/tomcat/conf/logging.properties -Djava.util.logging.manager=org.apache.juli.ClassLoaderLogManager -Djdk.tls.ephemeralDHKeySize=2048 -Djava.protocol.handler.pkgs=org.apache.catalina.webresources -Dorg.apache.catalina.security.SecurityListener.UMASK=0027 -Dignore.endorsed.dirs= -classpath /usr/local/tomcat/bin/bootstrap.jar:/usr/local/tomcat/bin/tomcat-juli.jar -Dcatalina.base=/usr/local/tomcat -Dcatalina.home=/usr/local/tomcat -Djava.io.tmpdir=/usr/local/tomcat/temp org.apache.catalina.startup.Bootstrap start
root 225472 35173 0 01:56 pts/2 00:00:00 grep --color=auto tomcat
//重启服务使文件生效
[root@192 ~]# catalina.sh stop
[root@192 ~]# catalina.sh start
[root@192 ~]# ss -antl //再次查看端口号即可看到8009端口出现,即AJP服务协议已使用
State Recv-Q Send-Q Local Address:Port Peer Address:Port Process
LISTEN 0 128 0.0.0.0:22 0.0.0.0:*
LISTEN 0 1 [::ffff:127.0.0.1]:8005 *:*
LISTEN 0 100 [::1]:8009 [::]:*
LISTEN 0 100 *:8080 *:*
LISTEN 0 128 [::]:22 [::]:*
查看服务器状态
问题解决
server status无法打开
解决方法
//在此文件中加上下面两行
[root@192 ~]# vim /usr/local/tomcat/conf/tomcat-users.xml
<role rolename="manager-gui"/>
<user username="tomcat" password="tomcat" roles="manager-gui"/> //用户密码可自行设置
//重启服务使配置生效
[root@192 ~]# catalina.sh stop
[root@192 ~]# catalina.sh start
//配置context.xml文件使主机ip可以访问
[root@192 ~]# vim /usr/local/tomcat/webapps/manager/META-INF/context.xml
<Valve className="org.apache.catalina.valves.RemoteAddrValve"
allow="192\.168\.80\.\d+|127\.\d+\.\d+\.\d+|::1|0:0:0:0:0:0:0:1" /> //填写当前主机网段,\d+表示取任意字符至少一位
刷新页面
用户密码为刚刚设置的
点击应用程序列表
可以看到之前创建的test正在运行
此页面可以控制运行项目
停止test项目,再访问test页面
再次访问测试页面
卸载test项目,再去tomcat工作目录中查看,发现test目录已被删除
[root@192 ~]# cd /usr/local/tomcat/webapps
[root@192 webapps]# ls
docs examples host-manager manager ROOT
查看主机管理器
问题解决
host manager访问失败
解决方法
//在文件中添加下面两行
[root@192 ~]# vim /usr/local/tomcat/conf/tomcat-users.xml
<role rolename="admin-gui"/>
<user username="tomcat" password="tomcat" roles="admin-gui"/>
//重启服务使配置生效
[root@192 ~]# catalina.sh stop
[root@192 ~]# catalina.sh start
//放行ip访问
[root@192 ~]# vim /usr/local/tomcat/webapps/host-manager/META-INF/context.xml
<Valve className="org.apache.catalina.valves.RemoteAddrValve"
allow="192\.168\.80\.\d+|127\.\d+\.\d+\.\d+|::1|0:0:0:0:0:0:0:1" />
刷新页面
输入刚才配置的用户名和密码即可登录
Jenkins部署
Jenkins是一个开源的、提供友好操作界面的持续集成(CI)工具,起源于Hudson(Hudson是商用的),主要用于持续、自动的构建/测试软件项目、监控外部任务的运行(这个比较抽象,暂且写上,不做解释)。Jenkins用Java语言编写,可在Tomcat等流行的servlet容器中运行,也可独立运行。通常与版本管理工具(SCM)、构建工具结合使用。常用的版本控制工具有SVN、GIT,构建工具有Maven、Ant、Gradle
前往上方官网下载安装包
部署Jenkins
[root@192 ~]# cd /usr/local/tomcat/
[root@192 tomcat]# ls
bin conf lib logs README.md RUNNING.txt webapps
BUILDING.txt CONTRIBUTING.md LICENSE NOTICE RELEASE-NOTES temp work
[root@192 tomcat]# cd webapps/
[root@192 webapps]# ls
docs examples host-manager manager ROOT
[root@192 webapps]# mv * /opt/ //将webapps目录中文件移到别处
[root@192 webapps]# ls
[root@192 webapps]# ls //将Jenkins软件包导入到目录中
jenkins.war
[root@192 webapps]# catalina.sh stop //重启tomcat服务
[root@192 webapps]# catalina.sh start
[root@192 webapps]# ls
jenkins jenkins.war //自动解压形成了Jenkins目录
使用浏览器访问
密码
[root@192 webapps]# cat /root/.jenkins/secrets/initialAdminPassword
ad5b0c70394245e8ab81b16b7ce9b086
等待自动安装
可自行设置
登入Jenkins系统
执行者默认两个
打包工具
Maven介绍
1.什么是Maven
Maven是一个跨平台的项目管理工具。作为Apache组织的一个颇为成功的开源项目,其主要服务于基于Java平台的项目创建,依赖管理和项目信息管理。maven是Apache的顶级项目,解释为“专家,内行”,它是一个项目管理的工具,maven自身是纯java开发的,可以使用maven对java项目进行构建、依赖管理。
2. Maven的作用
依赖管理
依赖指的就是是 我们项目中需要使用的第三方Jar包, 一个大一点的工程往往需要几十上百个Jar包,按照我们之前的方式,每使用一种Jar,就需要导入到工程中,还要解决各种Jar冲突的问题.
Maven可以对Jar包进行统一的管理,包括快速引入Jar包,以及对使用的 Jar包进行统一的版本控制
一键构建项目
之前我们创建项目,需要确定项目的目录结构,比如src 存放Java源码, resources存放配置文件,还要配置环境比如JDK的版本等等,如果有多个项目 那么就需要每次自己搞一套配置,十分麻烦
Maven为我们提供了一个标准化的Java项目结构,我们可以通过Maven快速创建一个标准的Java项目
ant介绍
1.什么是ant
ant 是一个将软件编译、测试、部署等步骤联系在一起加以自动化的一个工具,大多用于Java环境中的软件开发。在实际软件开发中,有很多地方可以用到ant
2.ant的优点
ant 是Apache软件基金会JAKARTA目录中的一个子项目,它有以下的优点:
1、跨平台性:Ant是纯Java语言编写的,所以具有很好的跨平台性。
2、操作简单:Ant是由一个内置任务和可选任务组成的,用ant任务就像是在dos中写命令行一样。Ant运行时需要一个XML文件(构建文件)。 Ant通过调用target树,就可以执行各种task。每个task实现了特定接口对象。
3、维护简单、可读性好、集成简单:由于Ant构建文件 时XML格式的文件,所以很容易维护和书写,而且结构很清晰。Ant可以集成到开发环境中。由于Ant的跨平台性和操作简单的特点,它很容易集成到一些开发环境中去
gradle
1.Gradle是一种以Groovy语言为基础的自动化构建工具
2.自动化构建本质上也是一种程序,我们开始编译时就启动这个程序,然后读取我们在 gradle 文件中配置的参数来实例化各个类,然后按照顺序依次执行对应的任务即可完成整个构建任务
使用Jenkins部署项目
要求:通过服务机部署tomcat与Jenkins,将项目打包并且传输到服务机并且可以通过浏览器访问项目网页
实验环境:
服务机:ip——192.168.80.130 安装tomcat+jenkins
客户机:ip——192.168.80.128 安装tomcat
服务机与客户机操作
//下载命令行接口
[root@192 ~]# wget http://192.168.80.130:8080/jenkins/jnlpJars/jenkins-cli.jar
--2022-08-19 03:35:35-- http://192.168.80.130:8080/jenkins/jnlpJars/jenkins-cli.jar
正在连接 192.168.80.130:8080... 已连接。
已发出 HTTP 请求,正在等待回应... 200
长度:3571391 (3.4M) [application/java-archive]
正在保存至: “jenkins-cli.jar”
jenkins-cli.jar 100%[=========================>] 3.41M --.-KB/s 用时 0.03s
2022-08-19 03:35:35 (136 MB/s) - 已保存 “jenkins-cli.jar” [3571391/3571391])
//使用改包来执行命令
[root@192 ~]# java -jar jenkins-cli.jar -s http://192.168.80.130:8080/jenkins/ help
//安装git maven
[root@192 ~]# yum -y install git maven
//与客户机配置免密登录
[root@192 ~]# ssh-keygen -t rsa
Generating public/private rsa key pair.
Enter file in which to save the key (/root/.ssh/id_rsa):
Created directory '/root/.ssh'.
Enter passphrase (empty for no passphrase):
Enter same passphrase again:
Your identification has been saved in /root/.ssh/id_rsa.
Your public key has been saved in /root/.ssh/id_rsa.pub.
The key fingerprint is:
SHA256:rwfc9IL1zl5TyVAQiwSovwjYd+ywuQaP+X65IE5SflU root@192.168.80.130
The key's randomart image is:
+---[RSA 3072]----+
| .... oo. |
| . . . o |
| . E . o |
| . . o o .|
| o. ooS= o o.|
| .o+ o.++.o o . |
| . +BoB o..+ o |
| +oo*.= .. o. . |
| .++o.o. .. |
+----[SHA256]-----+
[root@192 ~]# ssh-copy-id root@192.168.80.128
/usr/bin/ssh-copy-id: INFO: Source of key(s) to be installed: "/root/.ssh/id_rsa.pub"
The authenticity of host '192.168.80.128 (192.168.80.128)' can't be established.
ECDSA key fingerprint is SHA256:R4aHwVVI89IuGDm890yoCVuytjxAm72mBfy5StmrqmE.
Are you sure you want to continue connecting (yes/no/[fingerprint])? yes
/usr/bin/ssh-copy-id: INFO: attempting to log in with the new key(s), to filter out any that are already installed
/usr/bin/ssh-copy-id: INFO: 1 key(s) remain to be installed -- if you are prompted now it is to install the new keys
root@192.168.80.128's password:
Number of key(s) added: 1
Now try logging into the machine, with: "ssh 'root@192.168.80.128'"
and check to make sure that only the key(s) you wanted were added.
//拉取项目
[root@192 ~]# git clone https://github.com/chendao2015/tomcat-java-demo.git
正克隆到 'tomcat-java-demo'...
remote: Enumerating objects: 549, done.
remote: Counting objects: 100% (3/3), done.
remote: Compressing objects: 100% (3/3), done.
remote: Total 549 (delta 0), reused 2 (delta 0), pack-reused 546
接收对象中: 100% (549/549), 5.08 MiB | 845.00 KiB/s, 完成.
处理 delta 中: 100% (213/213), 完成.
[root@192 ~]# ls
anaconda-ks.cfg jenkins-cli.jar zabbix-5.0.25.tar.gz
apache-tomcat-9.0.65.tar.gz tomcat-java-demo
//进行打包
[root@192 ~]# cd tomcat-java-demo/
[root@192 tomcat-java-demo]# ls
db Dockerfile LICENSE pom.xml README.md src
[root@192 tomcat-java-demo]# mvn clean package -Dmaven.test.skip=true
//打包完成后即可看到target目录,进入目录
[root@192 tomcat-java-demo]# ls
db Dockerfile LICENSE pom.xml README.md src target
[root@192 tomcat-java-demo]# cd target/
[root@192 target]# ls
classes ly-simple-tomcat-0.0.1-SNAPSHOT maven-archiver
generated-sources ly-simple-tomcat-0.0.1-SNAPSHOT.war maven-status
//使用scp命令将项目传到客户机/usr/local/tomcat/webapps 目录下
[root@192 target]# scp ly-simple-tomcat-0.0.1-SNAPSHOT.war root@192.168.80.128:/usr/local/tomcat/webapps/
ly-simple-tomcat-0.0.1-SNAPSHOT.war 100% 17MB 57.3MB/s 00:00
客户机查看
[root@192 ~]# cd /usr/local/tomcat/webapps/
[root@192 webapps]# ls
docs host-manager ly-simple-tomcat-0.0.1-SNAPSHOT.war ROOT
examples ly-simple-tomcat-0.0.1-SNAPSHOT manager test
客户机ip访问
这时打开服务机部署的Jenkins
创建一个项目
拉取代码
生成流水线脚本
编修流水线脚本
pipeline {
agent any
stages {
stage("pull code"){
steps {
git 'https://github.com/chendao2015/tomcat-java-demo.git' ## 注意:如果是私有仓库还要添加账号跟密码
}
}
stage("make pkg"){
steps {
sh """
mvn clean package -Dmaven.test.skip=true
"""
}
}
stage(publish){
steps{
sh """
scp target/ly-simple-tomcat-0.0.1-SNAPSHOT.war root@192.168.80.128:/usr/local/tomcat/webapps/
ssh root@192.168.80.128 '/usr/local/tomcat/bin/catalina.sh stop && /usr/local/tomcat/bin/catalina.sh start'
"""
}
}
}
}
先应用后保存
进行测试,点击开始构建
看到显示绿色则表示成功