Tomcat是由Apache软件基金会下属的Jakarta项目开发的一个Servlet容器,按照Sun Microsystems提供的技术规范,实现了对Servlet和JavaServer Page(JSP)的支持,并提供了做为Web服务器的一些特有功能,如Tomcat管理和控制平台、安全域管理和Tomcat阀等。因为Tomcat自己也内含了一个HTTP服务器,它也能够被视做一个单独的Web服务器。可是,不能将Tomcat和Apache HTTP服务器混淆,Apache HTTP服务器是一个用C语言实现的HTTPWeb服务器;这两个HTTP web server不是捆绑在一块儿的。Apache Tomcat包含了一个配置管理工具,也能够经过编辑XML格式的配置文件来进行配置。html
Resin是Caucho公司的产品,是一个很是流行的支持Servlet和JSP的服务器,速度很是快。Resin自己包含了一个支持HTML的Web服务器,这使它不只能够显示动态内容,并且显示静态内容的能力也绝不逊色,所以许多网站都是使用Resin服务器构建。java
Jetty是一个纯粹的基于Java的网页服务器和Java Servlet容器。尽管网页服务器一般用来为人们呈现文档,可是Jetty一般在较大的软件框架中用于计算机与计算机之间的通讯。Jetty做为Eclipse基金会的一部分,是一个自由和开源项目。linux
JBoss是一个种听从JavaEE规范的、开放源代码的、纯Java的EJB服务器,对于J2EE有很好的支持。JBoss采用JML API实现软件模块的集成与管理,其核心服务又是提供EJB服务器,不包含Servlet和JSP的Web容器,不过它能够和Tomcat完美结合。web
WebSphere是IBM公司的产品,可进一步细分为 WebSphere Performance Pack、Cache Manager 和WebSphere Application Server等系列,其中WebSphere Application Server 是基于Java 的应用环境,能够运行于 Sun Solaris、Windows NT 等多种操做系统平台,用于创建、部署和管理Internet和Intranet Web应用程序。apache
WebLogic 是BEA公司的产品,可进一步细分为 WebLogic Server、WebLogic Enterprise 和 WebLogic Portal 等系列,其中 WebLogic Server 的功能特别强大。WebLogic 支持企业级的、多层次的和彻底分布式的Web应用,而且服务器的配置简单、界面友好。对于那些正在寻求可以提供Java平台所拥有的一切应用服务器的用户来讲,WebLogic是一个十分理想的选择。bootstrap
先来搜索一下有关Tomcat的软件包centos
# yum list |grep tomcat jglobus-ssl-proxies-tomcat.noarch 2.1.0-6.el7 epel tomcat.noarch 7.0.76-3.el7_4 updates tomcat-admin-webapps.noarch 7.0.76-3.el7_4 updates tomcat-docs-webapp.noarch 7.0.76-3.el7_4 updates tomcat-el-2.2-api.noarch 7.0.76-3.el7_4 updates tomcat-javadoc.noarch 7.0.76-3.el7_4 updates tomcat-jsp-2.2-api.noarch 7.0.76-3.el7_4 updates tomcat-jsvc.noarch 7.0.76-3.el7_4 updates tomcat-lib.noarch 7.0.76-3.el7_4 updates tomcat-native.x86_64 1.2.16-1.el7 epel tomcat-servlet-3.0-api.noarch 7.0.76-3.el7_4 updates tomcat-webapps.noarch 7.0.76-3.el7_4 updates tomcatjss.noarch 7.2.1-6.el7 base
在centos7中默认提供Tomcat7版本,安装时只需安装tomcat,tomcat-admin-webapps,tomcat-doc-webapp,tomcat-webapps便可,其它包会自动安装上。api
# yum install -y tomcat tomcat-admin-webapps tomcat-docs-webapp tomcat-webapps Installed: tomcat.noarch 0:7.0.76-3.el7_4 tomcat-admin-webapps.noarch 0:7.0.76-3.el7_4 tomcat-docs-webapp.noarch 0:7.0.76-3.el7_4 tomcat-webapps.noarch 0:7.0.76-3.el7_4 Dependency Installed: apache-commons-logging.noarch 0:1.1.2-7.el7 avalon-framework.noarch 0:4.3-10.el7 avalon-logkit.noarch 0:2.1-14.el7 jakarta-taglibs-standard.noarch 0:1.1.2-14.el7_1 tomcat-el-2.2-api.noarch 0:7.0.76-3.el7_4 tomcat-jsp-2.2-api.noarch 0:7.0.76-3.el7_4 tomcat-lib.noarch 0:7.0.76-3.el7_4 tomcat-servlet-3.0-api.noarch 0:7.0.76-3.el7_4 Complete!
curl -O http://mirrors.shu.edu.cn/apache/tomcat/tomcat-9/v9.0.6/bin/apache-tomcat-9.0.6.tar.gz
# tar xvf apache-tomcat-9.0.6.tar.gz -C /usr/local/
ln -sv /usr/local/apache-tomcat-9.0.6 /usr/local/tomcat9
Tomcat9须要JDK8及以上的版本
JDK下载地址:http://www.oracle.com/technetwork/java/javase/downloads/jdk8-downloads-2133151.htmltomcat
# wget --no-check-certificate --no-cookies --header "Cookie: oraclelicense=accept-securebackup-cookie" http://download.oracle.com/otn-pub/java/jdk/8u162-b12/0da788060d494f5095bf8624735fa2f1/jdk-8u162-linux-x64.tar.gz
# mkdir -p /usr/local/jdk-oracal # tar xvf jdk-8u162-linux-x64.tar.gz -C /usr/local/jdk-oracal/ # cd /etc/profile.d/ # vi java1.8.sh export JAVA_HOME=/usr/local/jdk-oracal/jdk1.8.0_162 export PATH=$JAVA_HOME/bin:$PATH # source java1.8.sh # java -version java version "1.8.0_162" Java(TM) SE Runtime Environment (build 1.8.0_162-b12) Java HotSpot(TM) 64-Bit Server VM (build 25.162-b12, mixed mode)
# vi /etc/profile.d/tomcat9.sh export CATALINA_HOME=/usr/local/tomcat9 export PATH=$TOMCAT_HOME/bin:$PATH # source /etc/profile.d/tomcat9.sh
官方建议在tomcat安装目录的bin目录下建一个setenv.sh,将JAVA_HOME,JRE_HOME等环境变量信息指定。示例以下:安全
# cat bin/setenv.sh CATALINA_HOME=/usr/local/tomcat9 CATALINA_BASE=/usr/local/tomcat9 JAVA_HOME=/usr/local/jdk-oracal/jdk1.8.0_162 JRE_HOME=/usr/local/jdk-oracal/jdk1.8.0_162/jre/ CATALINA_PID=/usr/local/tomcat9/tomcat9.pid
# catalina.sh start Using CATALINA_BASE: /usr/local/tomcat9 Using CATALINA_HOME: /usr/local/tomcat9 Using CATALINA_TMPDIR: /usr/local/tomcat9/temp Using JRE_HOME: /usr/local/jdk-oracal/jdk1.8.0_162 Using CLASSPATH: /usr/local/tomcat9/bin/bootstrap.jar:/usr/local/tomcat9/bin/tomcat-juli.jar Tomcat started. # ss -tnpl |grep 8080 LISTEN 0 100 :::8080 :::* users:(("java",pid=4177,fd=49))
# cat /usr/lib/systemd/system/tomcat9.service [Unit] Description=Apache Tomcat 9 After=syslog.target network.target remote-fs.target nss-lookup.target [Service] Type=forking PIDFile=/usr/local/tomcat9/tomcat9.pid ExecStart=/usr/local/tomcat9/bin/catalina.sh start -DEFOREGRAND ExecReload=/bin/kill -s HUP $MAINPID ExecStop=/bin/kill -s QUIT $MAINPID RemainAfterExit=yes [Install] WantedBy=multi-user.target
修改conf/tomcat-users.xml
添加以下内容 <!-- <role rolename="tomcat"/> <role rolename="role1"/> <user username="tomcat" password="tomcat" roles="tomcat"/> <user username="both" password="tomcat" roles="tomcat,role1"/> <user username="role1" password="tomcat" roles="role1"/> --> <role rolename="manager-gui"/> <role rolename="manager-script" /> <user username="admin" password="tomcat" roles="manager-gui,manager-script" /> </tomcat-users>
修改webapps/manager/META-INF目录下的context.xml,在allow行的末尾加上|\d+.\d+.\d+.\d+表示容许全部主机访问。
<Context antiResourceLocking="false" privileged="true" > <Valve className="org.apache.catalina.valves.RemoteAddrValve" allow="127\.\d+\.\d+\.\d+|::1|0:0:0:0:0:0:0:1|\d+\.\d+\.\d+\.\d+" /> <Manager sessionAttributeValueClassNameFilter="java\.lang\.(?:Boolean|Integer|Long|Number|String)|org\.apache\.catalina\.filters\.CsrfPreventionFilter\$LruCache(?:\$1)?|java\.util\.(?:Linked)?HashMap"/> </Context>
重启tomcat9生效
#!/bin/bash ########################################################################### # This script used to install and config tomcat9_binary_packet on centos7 # # # # write by mifyang at 2018-4-1 writer mail: mifyang@126.com # ########################################################################### src_data_dir="/root/tomcat" jdk_install_dir="/usr/local/jdk_oracal" tomcat9_install_dir="/usr/local/tomcat" jdk_url="http://download.oracle.com/otn-pub/java/jdk/8u162-b12/0da788060d494f5095bf8624735fa2f1/jdk-8u162-linux-x64.tar.gz" tomcat9_url="http://mirrors.hust.edu.cn/apache/tomcat/tomcat-9/v9.0.6/bin/apache-tomcat-9.0.6.tar.gz" jdk_src_name=${jdk_url##*/} tomcat9_src_name=${tomcat9_url##*/} # 建立/root/tomcat目录用于存放源码包 if [ ! -d $src_data_dir ];then mkdir -p $src_data_dir else echo "${src_data_dir} 文件夹已存在" fi # 下载JDK1.8 下载tomcat9 应该提早下载好,否则下载会占用大量时间 # curl -L:跟踪重定向,,不加-L只能返回302的结果,cookies中有用的内容是赞成协议那一部分,Connection: keep-alive这句要加上,不然下载速度会变成蜗牛,-O(大写字母o):下载文件 # cd $src_data_dir # curl -L http://download.oracle.com/otn-pub/java/jdk/8u162-b12/0da788060d494f5095bf8624735fa2f1/jdk-8u162-linux-x64.tar.gz -H "Cookie: oraclelicense=accept-securebackup-cookie" -H "Connection: keep-alive" -O # curl http://mirrors.hust.edu.cn/apache/tomcat/tomcat-9/v9.0.6/bin/apache-tomcat-9.0.6.tar.gz -O # 解压二进制源码包到安装目录,并建立软连接 if [ ! -d $jdk_install_dir ];then mkdir -p $jdk_install_dir tar xvf $jdk_src_name -C $jdk_install_dir ln -sv ${jdk_install_dir}/$(ls $jdk_install_dir) ${jdk_install_dir}/jdk8 else echo "目录已存在" fi if [ ! -d $tomcat9_install_dir ];then mkdir -p $tomcat9_install_dir tar xvf $tomcat9_src_name -C $tomcat9_install_dir ln -sv ${tomcat9_install_dir}/$(ls $tomcat9_install_dir) ${tomcat9_install_dir}/tomcat9 else echo "目录或连接已存在" fi # 配置JDK8环境 cat <<EOF > /etc/profile.d/jdk8.sh export JDK_HOME=${jdk_install_dir}/jdk8 export PATH=$JDK_HOME/bin:$PATH EOF source /etc/profile.d/jdk8.sh java -version # 配置tomcat9运行环境 cat <<EOF > /etc/profile.d/tomcat9.sh export CATALINA_HOME=${tomcat9_install_dir}/tomcat9 export PATH=$CATALINA_HOME/bin:$PATH EOF source /etc/profile.d/tomcat9.sh cat << EOF >${tomcat9_install_dir}/tomcat9/bin/setenv.sh CATALINA_HOME=${tomcat9_install_dir}/tomcat9 CATALINA_BASE=${tomcat9_install_dir}/tomcat9 JAVA_HOME=${jdk_install_dir}/jdk8 JRE_HOME=${jdk_install_dir}/jdk8/jre/ EOF