文章目录
Tomcat
1. Tomcat简介
Tomcat是一个开源的Java Servlet容器,由Apache软件基金会开发和维护。它是一个服务器端的Java Web应用程序运行环境,用于执行Java Servlet、JavaServer Pages(JSP)和相关的Java平台技术。
Tomcat的主要功能是将Java Web应用程序部署到服务器上,接收来自客户端的HTTP请求,并将请求转发给相应的Servlet或JSP进行处理。它支持多线程处理请求,具有良好的性能和可扩展性。
Tomcat由一个核心容器(Catalina)和多个附加组件组成,如连接器(Connector)用于处理不同的网络协议(如HTTP、HTTPS)、JSP容器(Jasper)用于编译和执行JSP页面、管理工具(Manager)用于管理和监控应用程序等等。
Tomcat是一个轻量级的Java Web服务器,易于安装、配置和使用。它被广泛应用于Java Web开发领域,作为一个常用的Java Web应用程序服务器。
tomcat就是传说中的中间件之一,tomcat本身是一个容器,专门用来运行java程序,java语言开发的网页.jsp就应该运行于tomcat中。而tomcat本身的运行也依赖于jdk环境。
2. JDK简介
JDK(Java Development Kit)是一个软件开发套件,用于开发、编译、调试和执行Java应用程序。它包含了Java开发所需的各种工具和资源,如编译器、运行时环境(JRE)、Java类库、调试器、文档和示例代码等。JDK为开发人员提供了一个完整的开发平台,使他们能够创建跨平台的Java应用程序。开发人员可以使用JDK来写Java程式、编译成字节码、运行Java程序以及进行调试和测试等工作。JDK在Java开发中起着重要的作用,它是开发Java应用程序的基础工具。。
3. 部署lamt
主机名 | ip | 系统版本 | apache版本 | MySQL版本 | Tomcat版本 |
---|---|---|---|---|---|
kiwi123 | 192.168.234.123 | CentOS-8 | httpd-2.4.57 | mariadb-10.3 | apache-tomcat-9.0.80 |
3.1 源码编译apache
## 关闭防火墙
[root@kiwi123 ~]# systemctl disable --now firewalld
Removed /etc/systemd/system/multi-user.target.wants/firewalld.service.
Removed /etc/systemd/system/dbus-org.fedoraproject.FirewallD1.service.
[root@kiwi123 ~]# setenforce 0
[root@kiwi123 ~]# sed -i 's/^SELINUX=enforcing/SELINUX=disabled/g' /etc/selinux/config
## 创建apache用户与组
[root@kiwi123 ~]# groupadd -r apache
[root@kiwi123 ~]# useradd -r -M -s /sbin/nologin -g apache apache
[root@kiwi123 ~]#
## 获取apr包
[root@kiwi123 ~]# wget https://downloads.apache.org/apr/apr-1.7.4.tar.gz
## 获取apr-util包
[root@kiwi123 ~]# wget https://downloads.apache.org/apr/apr-util-1.6.3.tar.gz
## 获取httpd包
[root@kiwi123 ~]# wget http://archive.apache.org/dist/httpd/httpd-2.4.57.tar.gz
## 安装编译依赖环境
[root@kiwi123 ~]# yum -y install gcc gcc-c++ make pcre pcre-devel expat-devel perl openssl-devel
## 解压apr包
[root@kiwi123 ~]# tar xf apr-1.7.4.tar.gz && cd apr-1.7.4
[root@kiwi123 apr-1.7.4]#
## 配置apr模块
[root@kiwi123 ~]# vim configure
··································略
cfgfile=${ofile}T
trap "$RM \"$cfgfile\"; exit 1" 1 2 15
# $RM "$cfgfile" ### 注释掉这一行
cat <<_LT_EOF >> "$cfgfile"
#! $SHELL
·····································略
## 开始编译apr
[root@kiwi123 apr-1.7.4]# ./configure --prefix=/usr/local/apr
··········································略
config.status: creating include/arch/unix/apr_private.h
config.status: executing libtool commands
config.status: executing default commands
## 开始安装apr
[root@kiwi123 apr-1.7.4]# make
## 安装apr
[root@kiwi123 apr-1.7.4]# make install
## 解压apr包并编译安装
[root@kiwi123 apr-util-1.6.3]# tar xf apr-util-1.6.3.tar.gz && cd apr-util-1.6.3 && ./configure --prefix=/usr/local/apr-util --with-apr=/usr/local/apr/ && make && make install
## 解压httpd包
[root@kiwi123 ~]# tar xf httpd-2.4.57.tar.gz && cd httpd-2.4.57
[root@kiwi123 httpd-2.4.57]#
## 开始编译并安装httpd
[root@kiwi123 httpd-2.4.57]# ./configure --prefix=/usr/local/apache \
> --sysconfdir=/etc/httpd \
> --enable-so \
> --enable-ssl \
> --enable-cgi \
> --enable-rewrite \
> --with-zlib \
> --with-pcre \
> --with-apr=/usr/local/apr \
> --with-apr-util=/usr/local/apr-util/ \
> --enable-modules=most \
> --enable-mpms-shared=all \
> --with-mpm=prefork &> /dev/null && \
> make &> /dev/null && make install
[root@kiwi123 httpd-2.4.57]# ls /usr/local/
apache apr-util etc include lib64 sbin src
apr bin games lib libexec share
## 修改目录属组
[root@kiwi123 httpd-2.4.57]# chown -R apache.apache /usr/local/apache
[root@kiwi123 httpd-2.4.57]#
## 创建软连接
[root@kiwi123 ~]# ln -s /usr/local/apache/include /usr/include
## 添加环境变量
[root@kiwi123 ~]# echo 'export PATH=/usr/local/apache/bin:$PATH' > /etc/profile.d/httpd.sh
## 添加man文件
[root@kiwi123 ~]# echo 'MANPATH /usr/local/apache/man' >> /etc/man.config
## 取消配置文件里的servername前的注释
[root@kiwi123 ~]# sed -i '/#ServerName/s/#//g' /etc/httpd/httpd.conf
## 启动apache
[root@kiwi123 ~]# bash
[root@kiwi123 ~]# apachectl start
[root@kiwi123 ~]# 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 128 [::]:22 [::]:*
LISTEN 0 511 *:80 *:*
## 编写service文件并设置开机自启
[root@kiwi123 ~]# cat > /usr/lib/systemd/system/httpd.service <<EOF
> [Unit]
> Description=httpd server daemon
> After=network.target
>
> [Service]
> ExecStart=/usr/local/apache/bin/apachectl start
> ExecStop=/usr/local/apache/bin/apachectl stop
> ExecReload=/bin/kill -HUP $MAINPID
> Type=forking
>
> [Install]
> WantedBy=multi-user.target
> EOF
[root@kiwi123 ~]# systemctl daemon-reload
[root@kiwi123 ~]# systemctl enable --now httpd
Created symlink /etc/systemd/system/multi-user.target.wants/httpd.service → /usr/lib/systemd/system/httpd.service.
[root@kiwi123 ~]#
3.2 安装mariadb
[root@kiwi123 ~]# yum install -y mariadb*
## 设置开机自启
[root@kiwi123 ~]# systemctl enable --now mariadb
Created symlink /etc/systemd/system/mysql.service → /usr/lib/systemd/system/mariadb.service.
Created symlink /etc/systemd/system/mysqld.service → /usr/lib/systemd/system/mariadb.service.
Created symlink /etc/systemd/system/multi-user.target.wants/mariadb.service → /usr/lib/systemd/system/mariadb.service.
[root@kiwi123 ~]#
3.3 安装tomcat
## 安装Java环境
[root@kiwi123 ~]# yum -y install java-1.8.0-openjdk java-1.8.0-openjdk-devel
## 获取tomcat包
[root@kiwi123 ~]# wget https://archive.apache.org/dist/tomcat/tomcat-9/v9.0.80/bin/apache-tomcat-9.0.80.tar.gz
## 解压部署
[root@kiwi123 ~]# tar xf apache-tomcat-9.0.80.tar.gz -C /usr/local/
## 做软连接
[root@kiwi123 ~]# cd /usr/local/
[root@kiwi123 local]# ln -s apache-tomcat-9.0.80/ tomcat
##优化tomcat
[root@kiwi123 webapps]# vim /usr/local/tomcat/conf/server.xml
····························略
###取消掉这一段的注释,这是为了打开AJP协议,这个协议是专门为web服务器和应用服务器之前的高效通信而设置的,打开能够提高tomcat性能
<!-- Define an AJP 1.3 Connector on port 8009 -->
<Connector protocol="AJP/1.3"
address="::1"
port="8009"
redirectPort="8443"
maxParameterCount="1000"
/>
## 写一个Java页面
[root@kiwi123 ~]# mkdir /usr/local/tomcat/webapps/kiwi
[root@kiwi123 ~]# cd /usr/local/tomcat/webapps/kiwi/
[root@kiwi123 kiwi]# vim index.jsp
[root@kiwi123 kiwi]# cat index.jsp
<html>
<head>
<title>test page</title>
</head>
<body>
<%
out.println("This is kiwi");
%>
</body>
</html>
[root@kiwi123 kiwi]#
## 启动tomcat,注意,tomcat只能用根路径启动
[root@kiwi123 ~]# /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@kiwi123 ~]# 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 80 0.0.0.0:3306 0.0.0.0:*
LISTEN 0 128 [::]:22 [::]:*
LISTEN 0 1 [::ffff:127.0.0.1]:8005 *:*
LISTEN 0 100 [::1]:8009 [::]:*
LISTEN 0 100 *:8080 *:*
LISTEN 0 511 *:80 *:*
4. tomcat多实例部署
## 获取tomcat8.0.1版本的包
[root@kiwi123 ~]# wget https://archive.apache.org/dist/tomcat/tomcat-8/v8.0.1/bin/apache-tomcat-8.0.1.tar.gz
## 解压部署
[root@kiwi123 ~]# tar xf apache-tomcat-8.0.1.tar.gz -C /usr/local/
## 修改端口
[root@kiwi123 ~]# vim /usr/local/apache-tomcat-8.0.1/conf/server.xml
·································· 略
-->
<Server port="8006" shutdown="SHUTDOWN"> ## 将端口改为8006
<!-- Security listener. Documentation at /docs/config/listeners.html
<Listener className="org.apache.catalina.security.SecurityListener" />
-->
<!--APR library loader. Documentation at /docs/apr.html -
·······························略
<Connector port="8081" protocol="HTTP/1.1" ## 将端口改为8081,可搜索8080来找到
connectionTimeout="20000"
redirectPort="8443" />
································略
<!-- Define an AJP 1.3 Connector on port 8009 -->
<Connector port="8010" protocol="AJP/1.3" redirectPort="8443" /> ## 将前面的端口改为8010
<!-- An Engine represents the entry point (within Catalina) that processes
## 启动tomcat8.0.1
[root@kiwi123 ~]# /usr/local/apache-tomcat-8.0.1/bin/catalina.sh start
Using CATALINA_BASE: /usr/local/apache-tomcat-8.0.1
Using CATALINA_HOME: /usr/local/apache-tomcat-8.0.1
Using CATALINA_TMPDIR: /usr/local/apache-tomcat-8.0.1/temp
Using JRE_HOME: /usr
Using CLASSPATH: /usr/local/apache-tomcat-8.0.1/bin/bootstrap.jar:/usr/local/apache-tomcat-8.0.1/bin/tomcat-juli.jar
Tomcat started.
[root@kiwi123 ~]# 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 80 0.0.0.0:3306 0.0.0.0:*
LISTEN 0 100 *:8081 *:*
LISTEN 0 128 [::]:22 [::]:*
LISTEN 0 1 [::ffff:127.0.0.1]:8005 *:*
LISTEN 0 1 [::ffff:127.0.0.1]:8006 *:*
LISTEN 0 100 [::1]:8009 [::]:*
LISTEN 0 100 *:8010 *:*
LISTEN 0 511 *:80 *:*
LISTEN 0 100 *:8080 *:*
5. 修改权限
如果点击主页面的右边三个选项的话会出现访问被拒绝
接下来就去配置权限
## 添加用户
[root@kiwi123 conf]# cd /usr/local/tomcat/conf/
[root@kiwi123 conf]# vim tomcat-users.xml
···········································略
<user username="role1" password="<must-be-changed>" roles="role1"/>
-->
<role rolename="manager-gui"/> ## 添加这一行,角色必须写manager-gui
<user username="kiwi" password="<1>" roles="manager-gui"/> ## 添加这一行
</tomcat-users>
## 修改context文件
[root@kiwi123 ~]# cd /usr/local/tomcat/webapps/manager/META-INF/
[root@kiwi123 META-INF]# vim context.xml
··························略
<CookieProcessor className="org.apache.tomcat.util.http.Rfc6265CookieProcessor"
sameSiteCookies="strict" />
<Valve className="org.apache.catalina.valves.RemoteAddrValve"
allow="192\.168\.234\.\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"/>
## 重启服务
[root@kiwi123 tomcat]# /usr/local/tomcat/bin/catalina.sh stop
[root@kiwi123 tomcat]# /usr/local/tomcat/bin/catalina.sh start
再重新点Manager APP
已经可以进来了
**访问HOST manger **
## 添加admin-gui角色
[root@kiwi123 ~]# cd /usr/local/tomcat/conf/
[root@kiwi123 conf]# vim tomcat-users.xml
<role rolename="manager-gui"/>
<role rolename="admin-gui"/> ## 添加admin-gui角色
<user username="kiwi" password="1" roles="manager-gui,admin-gui"/>
</tomcat-users>
## 修改host-manger 配置文件
[root@kiwi123 ~]# cd /usr/local/tomcat/webapps/host-manager/
[root@kiwi123 host-manager]# cd META-INF/
[root@kiwi123 META-INF]# vim context.xml
···················略
sameSiteCookies="strict" />
<Valve className="org.apache.catalina.valves.RemoteAddrValve"
allow="192\.168\.234\.\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"/>
## 重启服务
[root@kiwi123 conf]# /usr/local/tomcat/bin/catalina.sh stop
[root@kiwi123 conf]# /usr/local/tomcat/bin/catalina.sh start
再重新进host-manager