1. tomcat简介
Tomcat是Apache 软件基金会(Apache Software Foundation)的Jakarta 项目中的一个核心项目,由Apache、Sun 和其他一些公司及个人共同开发而成。由于有了Sun 的参与和支持,最新的Servlet 和JSP 规范总是能在Tomcat 中得到体现,Tomcat 5支持最新的Servlet 2.4 和JSP 2.0 规范。因为Tomcat 技术先进、性能稳定,而且免费,因而深受Java 爱好者的喜爱并得到了部分软件开发商的认可,成为目前比较流行的Web 应用服务器。
Tomcat 服务器是一个免费的开放源代码的Web 应用服务器,属于轻量级应用服务器,在中小型系统和并发访问用户不是很多的场合下被普遍使用,是开发和调试JSP 程序的首选。对于一个初学者来说,可以这样认为,当在一台机器上配置好Apache 服务器,可利用它响应HTML(标准通用标记语言下的一个应用)页面的访问请求。实际上Tomcat是Apache 服务器的扩展,但运行时它是独立运行的,所以当你运行tomcat 时,它实际上作为一个与Apache 独立的进程单独运行的。
诀窍是,当配置正确时,Apache 为HTML页面服务,而Tomcat 实际上运行JSP 页面和Servlet。另外,Tomcat和IIS等Web服务器一样,具有处理HTML页面的功能,另外它还是一个Servlet和JSP容器,独立的Servlet容器是Tomcat的默认模式。不过,Tomcat处理静态HTML的能力不如Apache服务器。目前Tomcat最新版本为9.0。
tomcat就是传说中的中间件之一,tomcat本身是一个容器,专门用来运行java程序,java语言开发的网页.jsp就应该运行于tomcat中。而tomcat本身的运行也依赖于jdk环境。
部署
[root@localhost ~]# dnf -y install java-1.8.0-openjdk java-1.8.0-openjdk-devel
//安装环境
[root@localhost ~]# java -version
openjdk version "1.8.0_322"
OpenJDK Runtime Environment (build 1.8.0_322-b06)
OpenJDK 64-Bit Server VM (build 25.322-b06, mixed mode
[root@localhost ~]# cd /usr/src/
[root@localhost src]# ls
apache-tomcat-9.0.65.tar.gz debug kernels
[root@localhost src]# tar xf apache-tomcat-9.0.24.tar.gz -C /usr/local/
[root@localhost src]# cd /usr/local/
[root@localhost local]# ln -s apache-tomcat-9.0.24/ tomcat
[root@localhost local]# ll
total 0
drwxr-xr-x. 9 root root 220 Aug 17 16:02 apache-tomcat-9.0.65
drwxr-xr-x. 2 root root 6 Jun 22 2021 bin
drwxr-xr-x. 2 root root 6 Jun 22 2021 etc
drwxr-xr-x. 2 root root 6 Jun 22 2021 games
drwxr-xr-x. 2 root root 6 Jun 22 2021 include
drwxr-xr-x. 2 root root 6 Jun 22 2021 lib
drwxr-xr-x. 3 root root 17 Aug 14 19:45 lib64
drwxr-xr-x. 2 root root 6 Jun 22 2021 libexec
drwxr-xr-x. 2 root root 6 Jun 22 2021 sbin
drwxr-xr-x. 5 root root 49 Aug 14 19:45 share
drwxr-xr-x. 2 root root 6 Jun 22 2021 src
lrwxrwxrwx. 1 root root 32 Aug 16 10:57 tomcat -> /usr/local/apache-tomcat-9.0.65/
[root@localhost ~]# cat index.jsp
<html>
<head>
<title>test page</title>
</head>
<body>
<%
out.println("Hellow World");
%>
</body>
</html>
[root@localhost ~]# mkdir /usr/local/tomcat/webapps/test
[root@localhost ~]# cp index.jsp /usr/local/tomcat/webapps/test/
[root@localhost ~]# ll /usr/local/tomcat/webapps/test/
total 4
-rw-r--r--. 1 root root 141 Aug 16 11:03 index.jsp
[root@localhost ~]# /usr/local/tomcat/bin/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@localhost ~]# 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@localhost ~]# vim /usr/local/tomcat/conf/tomcat-users.xml
-->
<role rolename="manager-gui"/>
<role rolename="admin-gui"/>
<user username="tomcat" password="123456" roles="admin-gui,manager-gui"/>
</tomcat-users>
//添加用户密码 管理
[root@localhost ~]# vim /usr/local/tomcat/webapps/manager/META-INF/context.xml
<Context antiResourceLocking="false" privileged="true" >
<CookieProcessor className="org.apache.tomcat.util.http.Rfc6265CookieProcessor"
sameSiteCookies="strict" />
<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" />
<Manager sessionAttributeValueClassNameFilter="java\.lang\.(?:Boolean|Integer|Long|Number|String)|org\.apache\.catalina\.filters\.CsrfPreventionFilter\$LruCache(?:\$1)?|java\.util\.(?:Linked)?HashMap"/>
</Context>
//加上自己的ip
[root@localhost ~]# vim /usr/local/tomcat/webapps/host-manager/META-INF/context.xml
<Context antiResourceLocking="false" privileged="true" >
<CookieProcessor className="org.apache.tomcat.util.http.Rfc6265CookieProcessor"
sameSiteCookies="strict" />
<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" />
<Manager sessionAttributeValueClassNameFilter="java\.lang\.(?:Boolean|Integer|Long|Number|String)|org\.apache\.catalina\.filters\.CsrfPreventionFilter\$LruCache(?:\$1)?|java\.util\.(?:Linked)?HashMap"/>
</Context>
点击查看服务器状态
输入自己修改的账户密码
这是服务器的主界面
里面的文件夹 对应着
[root@localhost webapps]# ls
docs examples host-manager manager ROOT test
[root@localhost webapps]# pwd
/usr/local/tomcat/webapps
查看服务器状态
通过tomcat发布jenkins
[root@localhost webapps]# ls
docs examples host-manager manager ROOT test
[root@localhost webapps]# mv * /opt/
[root@localhost webapps]# ls
[root@localhost webapps]#
[root@localhost ~]# ls
anaconda-ks.cfg jenkins.war
[root@localhost ~]# cp jenkins.war /usr/local/tomcat/webapps/
[root@localhost ~]# systemctl restart tomcat
[root@localhost ~]# cd /usr/local/tomcat/webapps/
[root@localhost webapps]# ls
jenkins jenkins.war
加载需要时间 稍等
[root@localhost ~]# cat /root/.jenkins/secrets/initialAdminPassword
375eea3d964c4c9d82d12c07f56e8532
//把密码贴进去,点继续
选择插件来安装
新手的话选择推荐安装
这里保持默认
拉取代码
创建的用户
记录发布的项目时间
系统设置
发布界面
[root@localhost ~]# dnf -y install git
[root@localhost ~]# git clone https://github.com/chendao2015/tomcat-java-demo.git
//克隆下来
Cloning into '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
Receiving objects: 100% (549/549), 5.08 MiB | 29.00 KiB/s, done.
Resolving deltas: 100% (213/213), done.
[root@localhost ~]# ls
anaconda-ks.cfg jenkins.war tomcat-java-demo
[root@localhost ~]# cd tomcat-java-demo/
[root@localhost tomcat-java-demo]# ls
db Dockerfile LICENSE pom.xml README.md src
[root@localhost ~]# cd .jenkins/
[root@localhost .jenkins]# ls
atomic7855118776615501347tmp jobs
config.xml nodeMonitors.xml
failed-boot-attempts.txt nodes
hudson.model.UpdateCenter.xml plugins
hudson.plugins.emailext.ExtendedEmailPublisher.xml queue.xml.bak
hudson.plugins.git.GitTool.xml secret.key
identity.key.enc secret.key.not-so-secret
jenkins.install.InstallUtil.lastExecVersion secrets
jenkins.install.UpgradeWizard.state updates
jenkins.model.JenkinsLocationConfiguration.xml userContent
jenkins.telemetry.Correlator.xml users
程序打包的3中工具
maven
ant
1.ant打包的基本流程
- 删除原有的文件目录,初始化时创建新的工程目录,编译目录等。(eg:delete target;mkdir target;mkdir target/temp)
- 设置项目目录,并导入工程自身相关的一些信息,比如拷贝webcontent文件到相应的文件夹;
- 先删除原有目录,在导入工程相关配置文件(删除的原有目录指的是:java代码编译生成的classes文件;导入spring,ibatis...等相关配置文件)
- 导入工程代码和jar包(compiling source files to classes;copy files to classes;copy jar files to lib;copy i18n/css/services/directives/template to project)
- 导入工程相关的配置文件
- 将编译后的项目打war包。(compressJS default-bulid bulid-plugin-war)
.Ant优点:
(1)跨平台性。Ant是纯Java语言编写的,因此具有很好的跨平台性。
(2)操作简单。Ant是由一个内置任务和可选任务组成的。Ant运行时需要一个XML文件(构建文件)。Ant通过调用target树,就可以执行各种task。每个task实现了特定接口对象。由于Ant构建文件时XML格式的文件,所以很容易维护和书写,而且结构很清晰。
(3)Ant可以集成到开发环境中。由于Ant的跨平台性和操作简单的特点,它很容易集成到一些开发环境中去。
3.为什么要打war包?
Java web工程,都是打成war包,进行发布,如果我们的服务器选择tomcat等轻量级服务器,一般就打出war包进行发布。
好处:不会缺少目录,并且只管理好一个发布文件就好。把war包放到tomcat的wabapp下,这样启动服务器的时候,就会解压war包,访问解析后的项目。
gradle
1.Gradle设置文件(settings.gradle文件)位于项目的根目录下,用于指示Gradle在构建应用时应将哪些模块包含在内。对于多模块项目需要指定应包含在最终build中的每个模块。
2.顶层构建文件(顶层build.gradle文件)位于项目的根目录下,用于定义适用于项目中所有模块的构建配置。默认情况下,顶层构建文件使用buildscript代码块定义项目中所有模块共用的Gradle代码库和依赖项。注意,模块的依赖项不要放在顶层build.gradle文件的buildscript中,而应该放在具体模块的build.gradle文件中。对于包含多个模块的项目,可能有必要在项目级别定义某些属性并在所有模块之间共享这些属性,为此,可以将额外的属性添加到顶层build.gradle文件内的ext代码块中。(当然,实际上我们应该避免这样做,因为这样会导致共享这些属性的模块相互结合,使得以后将模块作为独立项目导出更加困难。)
3.模块级构建文件(模块级build.gradle文件)位于每个project/module/目录下,用于为其所在的特定模块构建设置。我们可以通过配置这些构建设置提供自定义打包选项(如额外的构建类型和产品变种),以及替换main/应用清单或顶层build.gradle文件中的设置。
4.Gradle属性文件。Gradle还包含两个属性文件,它们位于项目的根目录下,可用于指定Gradle构建工具包本身的设置:gradle.properties和local.properties。我们可以在gradle.properties文件中配置项目全局Gradle设置,比如使用androidX(android.useAndroidX=true)。我们可以在
5.local.properties文件中为构建系统配置本地环境属性,其中包括sdk.dir(SDK的路径)、ndk.dir(NDK的路径,不过此属性已被弃用,NDK的所有下载版本都安装在Android SDK目录下的ndk目录中)、cmake.dir(CMake的路径)、ndk.symlinkdir(在Android Studio 3.5及更高版本中,创建指向NDK的符号链接,该符号链接的路径可比NDK安装路径短)