Linux 下 Tomcat 环境搭建

Posted 笨小孩@GF 知行合一

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Linux 下 Tomcat 环境搭建相关的知识,希望对你有一定的参考价值。

什么是 Tomcat ?
官方网站:https://tomcat.apache.org/

  • 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 程序的首选。tomcat 和其他 Web 服务器一样,具有处理 html 页面的功能。不过,Tomcat 处理静态 HTML 的能力不如 Apache 服务器。

什么是 jsp ?

  • JSP:全名为 Java Server Pages,中文名叫 java 服务器页面, 是由 Sun Microsystems 公司倡导、许多公司参与一起建立的一种动态网页技术标准。JSP 技术有点类似 ASP 技术,它是在传统的网页HTML(标准通用标记语言的子集)文件(*.htm,*.html)中插入 Java 程序段(Scriptlet)和 JSP 标记(tag),从而形成 JSP 文件,后缀名为(*.jsp)。 用 JSP 开发的 Web 应用是跨平台的,既能在 Linux 下运行,也能在其他操作系统上运行。
  • 支持 JSP 网站,收费版 web 服务器:oracle 的 weblogic ; IBM 的 websphere
  • WebLogic 是美国 Oracle 公司出品的一个 application server 确切的说是一个基于 JAVAEE 架构的中间件,WebLogic 是用于开发、集成、部署和管理大型分布式 Web 应用、网络应用和数据库应用的 Java 应用服务器。将 Java 的动态功能和 Java Enterprise 标准的安全性引入大型网络应用的开发、集成、部署和管理之中。
  • WebSphere 是 IBM 的软件平台。它是 Web 应用程序和跨平台、跨产品解决方案所需要的整个中间件基础设施。WebSphere 提供了可靠、灵活和健壮的软件运行服务。

什么是 中间件?

  • 中间件是一种独立的系统软件或服务程序,分布式应用软件借助这种软件在不同的技术之间共享资源。中间件位于客户机/服务器的操作系统之上,管理计算机资源和网络通讯。是连接两个独立应用程序或独立系统的软件。相连接的系统,即使它们具有不同的接口,但通过中间件相互之间仍能交换信息。执行中间件的一个关键途径是信息传递。通过中间件,应用程序可以工作于多平台或 OS 环境。
  • 中间件是一类连接软件组件和应用的计算机软件,它包括一组服务。以便于运行在一台或多台机器上的多个软件通过网络进行交互。该技术所提供的互操作性,推动了一致分布式体系架构的演进,该架构通常用于支持并简化那些复杂的分布式应用程序,它包括 web 服务器、事务监控器和消息队列软件。
     

什么是 java ?

  • JDK : java development kit (套件) 。简单的说 JDK 是面向开发人员使用的 SDK,它提供了 Java 的开发环境和运行环境。就是 Java 开发工具,是进行 Java 开发的基础。
  • JDK(Java Development Kit)是 Sun Microsystems 针对 Java 开发人员的产品。自从 Java 推出以来,JDK 已经成为使用最广泛的 Java SDK。JDK 是整个 Java 的核心,包括了 Java 运行环境,Java工具和 Java 基础的类库。JDK 是学好 Java 的第一步。从 SUN 的 JDK5.0 开始,提供了泛型等非常实用的功能,其版本也不断更新,运行效率得到了非常大的提高。
  • SDK:Software Development Kit,软件开发工具包,一般都是一些软件工程师为特定的软件包、软件框架、硬件平台、操作系统等建立应用软件时的开发工具的集合。可以包括函数库、编译程序等。
  • JRE:java Runtime Enviroment 是指 Java 的运行环境,是面向 Java 程序的使用者,而不是开发者,运行 JAVA 程序所必须的环境的集合,包含 JVM 标准实现及 Java 核心类库。Java RuntimeEnvironment(包括 Java Plug-in)是 Sun 的产品,包括两部分:Java Runtime Environment 和Java Plug-in。JRE 是可以在其上运行、测试和传输应用程序的 Java 平台。它包括 Java 虚拟机(jvm)、Java 核心类库和支持文件。它不包含开发工具(JDK)--编译器、调试器和其它工具。JRE 需要辅助软件--Java Plug-in--以便在浏览器中运行 applet。
  • Applet:小应用程序是采用 Java 编程语言编写的程序,该程序可以包含在 HTML(标准通用标记语言的一个应用)页中,与在页中包含图像的方式大致相同。
  • JVM:java virtual machineJVM 就是我们常说的 java 虚拟机。JVM 是一种用于计算设备的规范,它是一个虚构出来的计算机,是通过在实际的计算机上仿真模拟各种计算机功能来实现的。JVM 是java 的核心和基础,在 java 编译器和 OS 平台之间的虚拟处理器。它是一种基于下层的操作系统和硬件平台并利用软件方法来实现的抽象的计算机,可以在上面执行 java 的字节码程序。java 编译器只需面向JVM,生成 JVM 能理解的代码或字节码文件。Java 源文件经编译器,编译成字节码程序,通过 JVM 将每一条指令翻译成不同平台机器码,通过特定平台运行在 JDK 的安装目录里你可以找到 jre 目录里面有两个文件夹 bin 和 lib,在这里可以认为 bin 里的就是 jvm, lib 中则是 jvm 工作所需要的类库,而 jvm 和 lib 和起来就称为 jre。
  • Java se:是由 Sun Microsystems 公司于 1995 年 5 月推出的 Java 程序设计语言和 Java 平台的总称。用 Java 实现的 HotJava 浏览器(支持 Java applet)显示了 Java 的魅力:跨平台、动态的Web、Internet 计算。从此,Java 被广泛接受并推动了 Web 的迅速发展,常用的浏览器现在均支持Java applet。
  • SE(J2SE),standard edition,标准版,是我们通常用的一个版本,从 JDK 5.0 开始,改名为 Java SE。
  • EE(J2EE),enterprise edition,企业版,使用这种 JDK 开发 J2EE 应用程序,从 JDK 5.0 开始,改名为 Java EE。
  • ME(J2ME),micro edition,主要用于移动设备、嵌入式设备上的 java 应用程序,从 JDK5.0 开始,改名为 Java ME。
  • 没有 JDK 的话,无法编译 Java 程序,如果想只运行 Java 程序,要确保已安装相应的 JRE。
     

Tomcat 工作模式和端口
模式:B/S 模式
端口:8080

Tomcat 所需软件
Jdk 工具:http://www.oracle.com/technetwork/java/javase/downloads/jdk8-downloads-2133151.html
JDK 下载页面

  • 安装配置 Tomcat
    我们选择的是通用的二进制安装包,64 位的Tomcat:
    https://tomcat.apache.org/
    https://tomcat.apache.org/download-80.cgi        #tomcat 的下载页面
    选择你需要的版本:

  • MySQL-Connector-Java:
    http://dev.mysql.com/downloads/connector/                 #官网下载网站
    选择 Connector/j    跳转下载页面

  • 选择“Paltform Independent”,选择 tar 包后面的“Download”

  • 选择不用注册,“No thanks,just start my download”

  • 官方信息:MySQL Connector/J8.0 强烈建议与 MySQLServer8.0、5.7、5.6 和 5.5 一起使用。
    请升级到 MySQL 连接器/J8.0。
  • Tomcat-native:
    Tomcat Native 这个项目可以让 Tomcat 使用 Apache 的 apr 包来处理包括文件和网络 IO 操作,以提升性能。直接说就是用 tomcat-native 这个软件来提高 tomcat 处理静态页面的性能。这个软件在 tomcat 的 bin 目录下已经提供,不用单独去下载了!可以说 Tomcat 处理静态的性能略逊于Apache!
  • 所有软件的版本如下:
    MySQL-Connector-Java: mysql-connector-java-8.0.25.tar.gz
    Tomcat: apache-tomcat-8.5.68.tar.gz
    JDK: jdk-8u191-linux-x64.tar.gz
    MySQL: MariaDB-5.5.56

  • 常见的网页类型:
    HTML&HTM:HyperText Markup Language 超文本连接标示语言 .html .html
    ASP:Active Server Page 动态服务器页面(微软开发) .asp
    ASP.net:ASP 的下一个版本,也是建立在通用语言上的程序架构,网页后缀如.aspx
    php:Hypertext Preprocessor 超级文本预处理语言 .php .php5 .phps
    JSP:JAVA Server Pages Sun Microsystems 公司倡导,有点类似 ASP 技术 .jsp

  • 安装 JDK
    注意:安装之前需要查看下系统是否安装了 openjdk,如果安装了 openjdk,请先卸载,否则安装不了 oracle 官方的 jdk
    查看系统中是否有安装 openjdk
     java -version
  • 卸载已有的 openjdk :
    yum remove java-* -y
  • 注意:生成环境中建议大家统一使用 oracle-jdk,他比 openjdk 的性能好,兼容性大

  • 安装 JDK8:

    tar xf jdk-8u191-linux-x64.tar.gz -C /usr/local/
    cd /usr/local/
    ln -sv jdk1.8.0_191 jdk1.8

  • 配置环境变量,让系统变量读到 jdk 的路径
    vim /etc/profile.d/jdk8.sh 
    export JAVA_HOME=/usr/local/jdk1.8.0_191
    export CLASS_PATH=.:$JAVA_HOME/lib/dt.jar:$JAVA_HOME/jar/tools.jar:$JAVA_HOME/jre/lib
    export PATH=$JAVA_HOME/bin:$JAVA_HOME/jre/bin:$PATH
    重读变量,使变量生效
     . /etc/profile.d/jdk8.sh
     java -version

  • 安装 tomcat
    tar xf apache-tomcat-8.5.68.tar.gz -C /usr/local/src/
    cd /usr/local/src/apache-tomcat-8.5.68/
  • cd .. && mv apache-tomcat-8.5.68 /usr/local/tomcat && cd tomcat
  • 注意:Tomcat 有两种安装方式,一种是直接解压就可以使用的二进制文件,第二种是编译安装,这里采用了第一种方法,下载的 Tomcat 软件直接解压就可以执行的二进制文件,因为在官方默认下载的便是使用第一种方法安装,那么下载解压后的目录如下:


  • |---bin #存放 Tomcat 启动和关闭 tomcat 脚本;
    |---conf #存放 Tomcat 不同的配置文件(server.xml 和 web.xml);
    |---lib #包含 Tomcat 使用的 jar 文件.unix 平台此目录下的任何文件都被加到 Tomcat 的classpath 中;
    |---logs #存放 Tomcat 执行时的 LOG 文件;
     |---webapps #Tomcat 的主要 Web 发布目录(包括应用程序示例);
    |--- ROOT #Tomcat 的家目录
    |--- index.jsp #Tomcat 的默认首页文件
     |---work #存放 jsp 编译后产生的 class 文件或 servlet 文件存放
     |---temp 存放 Tomcat 运行时所产生的临时文件
  • #tomcat 的执行脚本文件

#bat 为 windows 下的脚本(批处理)
#sh 为 Linux 下的 shell 脚本
#catalina.sh 是一个最关键的脚本,其他的启动脚本如 startup,shutdown.sh,都是使用了不同的参数调用了该脚本,startup 是以 start 参数调用了 catalina 脚本,shutdown 使用 stop 调用了catalina 脚本!

  • 编辑 生成 Tomcat 启动脚本

vim /etc/init.d/tomcat 
#!/bin/bash
#
# tomcat startup script for the Tomcat server
#
# chkconfig: 345 80 20
# description: start the tomcat deamon
#
# Source function library
JAVA_HOME=/usr/local/jdk1.8.0_191
export JAVA_HOME
CATALANA_HOME=/usr/local/tomcat
export CATALINA_HOME

case "$1" in
start)
echo "Starting Tomcat..."
$CATALANA_HOME/bin/startup.sh
;;
stop)
echo "Stopping Tomcat..."
$CATALANA_HOME/bin/shutdown.sh
;;
restart)
echo "Stopping Tomcat..."
$CATALANA_HOME/bin/shutdown.sh
sleep 2
echo
echo "Starting Tomcat..."
$CATALANA_HOME/bin/startup.sh
;;
*)
echo "Usage: $prog {start|stop|restart}"
;;
esac
exit 0

  • chmod +x /etc/init.d/tomcat
    service tomcat start
  • lsof -i :8080                      #查看是否启动 8080 端口

  • 添加开机启动
  • chkconfig --add tomcat
    chkconfig tomcat on

  • 测试 Tomcat
    览器访问 http://192.168.2.3:8080

  • 搭建基于域名的虚拟主机
    ll /usr/local/tomcat/conf/


    server.xml 是 Tomcat 的主配置文件(全局),服务器设置的,例如端口设置,路径设置。
    context 里设置 tomcat 数据源,用来连接数据库。
    tomcat_user 主要是用户名和密码的设置。
    web 是默认首页等等之类的设置
  • vim /usr/local/tomcat/conf/server.xml

#在末尾的 上面添加下面这几行,注意缩进

  • appBase                指定应用程序(网站)的基本路径,这里可以存放多个程序(网站),一般是相对路径,相对于tomcat 的安装目录。
    Context path=""      为虚拟目录,如果是空,表示直接就是/,如果是如 path="aa",那么访问的时候就是 site:8080/aa
    docBase="……"      为实际目录,就是可以是绝对路径,如果是相对路径就是基于 appBase
  • mkdir -p /var/www/html/{web1,web2}
    service tomcat stop ; sleep 2 ; service tomcat start
    echo www.mytomcat.com > /var/www/html/web1/index.html
    echo www.mytomcat.cn> /var/www/html/web2/index.html

  • 客户机 host 文件添加如下:
    在 Windows 上打开我的电脑,在路径框中输入 C:\\Windows\\System32\\drivers\\etc\\hosts ,
    并在末尾处添加如下:

192.168.2.3    www.mytomcat.com
192.168.2.3    www.mytomcat.cn

  • 网页测试

  • 安装 Tomcat-Native

  • Tomcat 可以使用 apr 来提供更好的伸缩性、性能和集成到本地服务器技术。用来提高 tomcat 的性能。
  • tomcat native 在具体的运行平台上,提供了一种优化技术,它本身是基于 APR(Apache Portable(轻便) Runtime)技术,应用了 tomcat native 技术之后,tomcat 在跟操作系统级别的交互方面可以做得更好,它更像 apache 一样,可以更好地作为一台 web server。
  • tomcat 可以利用 apache 的 apr 接口,使用操作系统的部分本地操作,从而提升性能 APR 提升的是静态页面处理能力。

  • 解决依赖并安装 Tomcat-Native

yum -y install apr-devel gcc gcc-c++ openssl-devel openssl

  • cd /usr/local/tomcat/bin/
    cp tomcat-native.tar.gz /usr/local/
    cd /usr/local/
    tar xf tomcat-native.tar.gz -C /usr/local/
    cd /usr/local/tomcat-native-1.2.18-src/native/

  • ./configure --with-apr=/usr/ --with-java-home=/usr/local/jdk1.8.0_191 --with-ssl

  • make -j 4 && make install

  • 需要添加库文件:
    vim /etc/ld.so.conf                                                              #编辑库的配置文件,添加如下
    /usr/local/apr/lib                                                                 #添加此行
    ldconfig                                                                             #重新加载库文件
    echo "ldconfig" >>/etc/rc.local                                          #每次开机都加载库文件
  • 添加环境变量
    vim /etc/profile.d/jdk8.sh                                                  #在文件最后添加如下
    export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:/usr/local/apr/lib
  • 重读变量文件,使变量生效
    source /etc/profile.d/jdk8.sh

  • 配置 Tomcat 默认以 apr 运行模式
    tomcat 中一共有三种运行模式,分别是:bio,nio,apr
  • bio 是阻塞式 IO 操作,使用的是传统的 java i/o 处理方式,对于每一个请求都要创建一个线程来进行处理,所以开销较大不适合处理高并发的场景
  • nio 是基于 java 中非阻塞 IO 操作的 API 实现,比传统的 i/o 处理方式有更高的并发运行性能
  • apr 是从操作系统级别解决异步 IO 问题,大幅度提高服务器的并发处理性能,也是 Tomcat 生产环境运行的首选方式
  • 编辑主服务文件,指定处理协议为 apr

  • vim /usr/local/tomcat/conf/server.xml 

  • 将默认的: protocol="HTTP/1.1"
    修改为:protocol="org.apache.coyote.http11.Http11AprProtocol"

  • 引用 apr

  • vim /usr/local/tomcat/bin/catalina.sh 

  • 在 JAVA_OPTS="$JAVA_OPTS -Djava.protocol.handler.pkgs=org.apache.catalina.webresources" 下面添加
    JAVA_OPTS="$JAVA_OPTS -Djava.library.path=/usr/local/apr/lib"

  • 重启生效
  • service tomcat stop ; sleep 2; service tomcat start
  • 看日志看是否支持 native
  • grep Native /usr/local/tomcat/logs/catalina.out


  • MySQL-Connector-Java 使用 jsp 连接 MySQL
  • yum install mariadb mariadb-server -y
  • systemctl start mariadb
    建立测试数据
    mysql                                              #mariadb 初次安装完登录不需要密码
    mysql> create database tomcat;    #测试数据库,为了和后面方便测试,这里创建 tomcat
    mysql> use tomcat
    mysql> create table tt(id int,name varchar(128));         #创建测试表
    mysql> insert into tt values (1,"gf"),(2,"zhangsan");      #创建测试数据
    mysql> grant all on tomcat.* to tomcat@localhost identified by 'tomcat';    #授权用户
    mysql> \\q
    mysql -utomcat -ptomcat              #测试 tomcat 是否可以登陆
    MariaDB [(none)]> \\q


  • 测试 jsp 链接 MySQL
    Jsp 链接 mysql,官方提供了工具:安装 mysql-connector
    安装 mysql-connector
    tar xf mysql-connector-java-8.0.13.tar.gz -C /usr/local/src/
    cp /usr/local/src/mysql-connector-java-8.0.13/mysql-connectorjava-8.0.13.jar /usr/local/tomcat/lib/
  • #只需要复制到 tomcat 的 lib 目录下,重启 tomcat 就可以生效
    service tomcat stop; sleep 2 ; service tomcat start
    测试
    vim /usr/local/tomcat/webapps/ROOT/mysql.jsp        #建立测试页面

  • String url ="jdbc:mysql://localhost/tomcat?user=tomcat&password=tomcat&useUnicode=true&characterEncoding=utf-8";
  • 注意这里的用户名和密码
  • #代码复制注意核对,由于编码问题,复制到 vim 中可能会增加多余的%号,记得删除
  • 打开浏览器 访问
  • http://192.168.2.3:8080/mysql.jsp

以上是关于Linux 下 Tomcat 环境搭建的主要内容,如果未能解决你的问题,请参考以下文章

环境搭建:linux下tomcat接口测试环境部署

测试环境搭建和部署(在Linux环境下搭建jdk+Tomcat+mysql环境和项目包的部署)

Linux 下 Tomcat 环境搭建

linux下java,tomcat环境搭建

Linux下搭建一个nginx+2tomcat负载均衡环境

Linux下搭建一个nginx+2tomcat负载均衡环境(转)