Tomcat

一.安装Tomcat

1.环境准备

关闭防火墙并设置开机不自启,配置 SElinux 规则:
systemctl stop firewalld.service
systemctl disable firewalld.service
hostnamectl set-hostname tomcat
// 使用 hostnamectl 命令修改主机名,修改完后 Ctrl+D 退出后重新连接

2.安装JDK

cd  /usr/local/src 
tar -zxvf  ~
mv  ~  /usr/local/jdk1.8
 ls  /usr/local/

设置环境变量:

vi  /etc/profile    //在末尾输入以下内容

JAVA_HOME=/usr/local/jdk1.8/
JAVA_BIN=/usr/local/jdk1.8/bin
JAVA_HOME=/usr/local/jdk1.8/jre
PATH=$PATH:/usr/local/jdk1.8/bin:/usr/local/jdk1.8/jre/bin
CLASSPATH=/usr/local/jdk1.8/jre/lib:/usr/local/jdk1.8/lib:/usr/local/jdk1.8/jre/lib/charsets.jar

注意:根据自己的安装路径修改(第一次需要加/src,之后没加过)

保存文件后,使其生效:source  /etc/profile

检测设置是否正确:java -version

如果显示如下内容,说明配置正确:

 

which java(如果结果为/usr/bin/java说明是rpmJDK,并且执行java -version时会有openjdk字样。若和书上保持一致,则做临时处理:mv  /usr/bin/java  /usr/bin/java_bak    source  /etc/profile,再执行java -version结果就和书上一样)

 3.安装Tomcat

tar -zxvf  ~
mv  apache-tomcat-8.5.60  /usr/local/tomcat
启动Tomcat:/usr/local/tomcat/bin/startup.sh

查看是否启动成功:ps aux |grep tomcat  //看是否有java相关进程,也可以查看监听端口
               netstat  -lntp |grep  java    //正常会有三个端口8009,8005,8080,其中8080为提供web服务的端口,8005为管理端口,8009 端口为第三方服务调用的端口比如httpd和Tomcat结合时会用到

 

若想开机,需要把启动命令放到/etc/rc.d/rc.local文件里:

echo  “/usr/local/tomcat/bin/startup.sh” >> /etc/rc.d/rc.local
chmod a+x /etc/rc.d/rc.local   //默认该文件没有x权限,加一下
(输入http://192.168.134.130:8080/)

二.配置Tomcat

1.配置Tomcat服务的访问端口

Tomcat默认端口是8080,若想把端口改成80需要修改server.xml文件。
vi  /usr/local/tomcat/conf/server.xml   
//找到Connector port
=”8080” protocol=”HTTP/1.1
修改为<Connector port=”80” protocol=”HTTP/1.1”。 保存文件后重启Tomcat: /usr/local/tomcat/bin/shutdown.sh /usr/local/tomcat/bin/startup.sh tomcat的关闭和开启需要使用它的自带脚本

修改后测试:netstat -plnt | grep java

 Nginx 的默认端口也是 80,跟Tomcat 端口发生冲
 突。所以上面操作不出现80端口,我们需要关闭 Nginx 服务,重新启动 Tomcat  服务。
service nginx stop
/usr/local/tomcat/bin/shutdown.sh
/usr/local/tomcat/bin/startup.sh 
netstat -plnt | grep java

浏览器访问:

http://192.168.134.130/(注意你的 IP)

2.Tomcat的虚拟主机

先看它的配置文件/usr/local/tomcat/conf/server.xml

 

 

 

 

其中<!---->之间的内容为注释掉的,可忽略。剩下内容:

<?xml version="1.0" encoding="UTF-8"?>
<Server port="8005" shutdown="SHUTDOWN">
  <Listener className="org.apache.catalina.startup.VersionLoggerListener" />
  <Listener className="org.apache.catalina.core.AprLifecycleListener" SSLEngine="on" />
  <Listener className="org.apache.catalina.core.JreMemoryLeakPreventionListener" />
  <Listener className="org.apache.catalina.mbeans.GlobalResourcesLifecycleListener" />
  <Listener className="org.apache.catalina.core.ThreadLocalLeakPreventionListener" />
  <GlobalNamingResources>
    <Resource name="UserDatabase" auth="Container"
              type="org.apache.catalina.UserDatabase"
              description="User database that can be updated and saved"
              factory="org.apache.catalina.users.MemoryUserDatabaseFactory"
              pathname="conf/tomcat-users.xml" />
  </GlobalNamingResources>
  <Service name="Catalina">
    <Connector port="8080" protocol="HTTP/1.1"
               connectionTimeout="20000"
               redirectPort="8443" />
    <Connector protocol="AJP/1.3"
               port="8009"
               redirectPort="8443" />
    <Engine name="Catalina" defaultHost="localhost">
          <Realm className="org.apache.catalina.realm.LockOutRealm">
        <Realm className="org.apache.catalina.realm.UserDatabaseRealm"
               resourceName="UserDatabase"/>
      </Realm>
      <Host name="localhost"  appBase="webapps"
            unpackWARs="true" autoDeploy="true">
        <Valve className="org.apache.catalina.valves.AccessLogValve" directory="logs"
               prefix="localhost_access_log" suffix=".txt"
               pattern="%h %l %u %t "%r" %s %b" />
      </Host>
    </Engine>
  </Service>
</Server>

其中,<Host></Host>之间的配置就是虚拟主机部分,name定义域名。appBase定义应用的目录。Java的应用通常是一个jar压缩包,将jar压缩包放到appBase目录下即可。

 

Index.jsp就是默认的Tomcat页面

curl localhost:8080/tomcat.svg  -I

在增加一个虚拟主机,并定义域名:

vi  /usr/local/tomcat/conf/server.xml

<Host name="www.123.cn" appBase="/data/tomcatweb/"
unpackWARs="false" autoDeploy="true"
xmlValidation="false"  xmlNamespaceAware="false">
<Context path="" docBase="/data/tomcatweb/" debug="0" reloadable="true" crossContext="true"/>  //docBase是定义网站文件存放路径的,若不定义则默认为在appBase/ROOT下
</Host>
创建目录和测试文件并测试:
mkdir  -p  /data/tomcatweb
echo "Tomcat test page." >/data/tomcatweb/1.html
修改完配置文件后,重启Tomcat服务:
/usr/local/tomcat/bin/shutdown.sh
/usr/local/tomcat/bin/startup.sh
curl -x127.0.0.1:8080 www.123.cn/1.html

3. appBase 部署 Java 应用 

下面我们通过部署个 Java 的应用来体会 appBase docBase 目录的区别。

为了方便测试,下载一个 zrlog(Java 写的 blog 站点应用,轻量),zrlog

际就是一个 war 包。

(下载地址:http://dl.zrlog.com/release/zrlog-1.7.1-baaecb9-release.war

先暂时将 zrlog war 包下载到/usr/local/src 目录下

wget  http://dl.zrlog.com/release/zrlog-1.7.1-baaecb9-release.war (yum -y install wget)
ls |grep zrlog 
zrlog-1.7.1-baaecb9-release.war 

appBase 支持自动解压,所以直接将 war 包拷贝到/usr/local/tomcat/webapps/

目录下:

cp zrlog-1.7.1-baaecb9-release.war   /usr/local/tomcat/webapps/
ls /usr/local/tomcat/webapps/ 
// 将 war 包拷贝到/usr/local/tomcat/webapps/目录下之后,包会自动解压。(前 
提是 tomcat 正常启动。 )

重命名 war 包的文件名: 
cd /usr/local/tomcat/webapps/ 
mv zrlog-1.7.1-baaecb9-release zrlog 
ls 

// 一但重命名或删除 war 包解压后的包的文件时,war 包就会在解压出一个

文件夹。

用浏览器访问 http://192. 168.134.130/zrlog(注意你的 IP)

出现安装向导,这是一个配置数据库的过程。登入数据库,在数据库中创建一个 zrlog 数据库和 zrlog 用户。

/usr/local/mysql/bin/mysql 
mysql> create database zrlog;   //创建 zrlog 数据库 
mysql> grant all on zrlog.* to 'zrlog'@127.0.0.1 identified by '000000'; //创建 zrlog 用户 
mysql>exit 
Byebye  //退出数据库

检查创建用户是否可以登陆数据库,使用 zrlog 用户登录

/usr/local/mysql/bin/mysql -u zrlog -h 127.0.0.1 -p 
mysql> show databases; 
//检查已有数据库
+--------------------+ 
| Database |+--------------------+ 
| information_schema | 
| test | 
| zrlog | 
+--------------------+ 
3 rows in set (0.00 sec) 
mysql> exit 
Byebye

检查完成,zrlog 用户登录成功。使用 zrlog 用户信息填写刚才在浏览器中打

开的网页,Email 填写自己的邮箱,本次是实验,填写内容为自定义邮箱

(tomcat@163.com),单击“下一步”按钮

设置管理员账号(admin)和管理员密码(123456),网站标题和子标题按

需填写,本次自定义内容(网站标题:“测试”,网站子标题:“linux”)

填写完成后,单击“下一步”按钮,可以看到安装完成的界面。

单击“点击查看”按钮,我们就可以进入搭建好的 zrlog 页面了

 

我们也可以进入管理页面,写一些文章,单击上图主菜单栏中的“管理”按

输入安装向导里已经设置好的账户名和密码(admin:123456),单击“登

”按钮,登录成功页面,如图所示:

 

单击“文章撰写”栏目,写上自己想写的内容,然后保存

4. ocBase 部署 Java 应用

查看虚拟主机 docBase 的路径,结果如下:

vi /usr/local/tomcat/conf/server.xml 

<Host name="www.123.cn" appBase="" 
unpackWARs="true" autoDeploy="true" 
xmlValidation="false" xmlNamespaceAware="false"> 
<Context path="" docBase="/data/wwwroot/123.cn/" debug="0" 
reloadable="true" crossContext="true"/> 
</Host> 
//docBase 定义的目录为:/data/wwwroot/123.cn 

创建 docBase 目录:

mkdir -p /data/wwwroot/123.cn/

将/usr/local/tomcat/webapps/zrlog 中的所有文件移动到/data/wwwroot/123.cn/

目录下:

mv /usr/local/tomcat/webapps/zrlog/* 
/data/wwwroot/123.cn/ 

接下来在 Windows 下绑定 hosts 文件

hosts 文件路径:C:WindowsSystem32driversetc

在文件下面添加

192.168.134.130  www.123.cn

测试

打开命令提示符(CMD),用 ping 命令 ping www.123.cn IP 是否为虚拟

IP,如果是的话,现在就可以访问了。

接下来就用域名去访问 zrlog 页面,由于之前配置完虚拟主机后,并没有重

启服务,这里要重启一下服务。

/usr/local/tomcat/bin/shutdown.sh

/usr/local/tomcat/bin/startup.sh 

三.测试Tomcat解析JSP

Tomcat主要是用来解析JSP页面。创建JSP测试页面:

vi /data/tomcatweb/111.jsp

<html><body><center>
Now time is:<%=new java.util.Date()%>
</center></body></html>
curl -x127.0.0.1:8080 www.123.cn/111.jsp

四.Tomcat日志

Tomcat的日志目录时/usr/local/tomcat/logs。主要四大日志为:

 

其中catalina开头的日志为Tomcat的综合日志,他记录Tomcat服务相关信息,也会记录错误日志。其中,catalina.2020-10-23.logcatalina.out内容相同,前者会每天生成一个新的日志。host-managermanager为管理相关的日志,其中host-manager为虚拟主机的管理日志。Localhostlocalhost_access为虚拟主机相关日志。其中带access字样的日志为访问日志,不带access字样的为默认虚拟主机的错误日志。访问日志默认不会生成,需要在server.xml中配置。在对应虚拟主机的<Host></Host>里加入下面配置:

<Valve className="org.apache.catalina.valves.AccessLogValve" directory="logs"  
prefix="123.cn_access_log" suffix=".txt"
pattern="%h %l %u %t %quot;%r" %s %b" />

valve 为日志文件配置;prefix定义访问日志得前缀。suffix定义日志后缀,pattern 定义日志格式。错误日志在catalina.out

配置完成后,重启 Tomcat 服务

重启 Tomcat 服务完成后,访问网站,查看/usr/local/tomcat/logs 目录下是否

有日志生成,并且查看生成的日志信息,命令如下:

ls /usr/local/tomcat/logs/

cat /usr/local/tomcat/logs/123_access_log.2020-03-29.txt 

五.Tomcat链接MySQL

配置MySQL创建试验用的库,表以及用户:
 mysql  -uroot  -p'000000'出现错误alias mysql=/usr/local/mysql/bin/mysql)
修改密码set password for root@localhost=password('000000');
mysql>create database java_test;  //创建数据库名
mysql> use java_test;
mysql> grant all on java_test.* to 'java'@'127.0.0.1' identified by 'sxt';   //创建用户
mysql> create table sxt (`id` int(4), `name` char(40));
mysql> insert into sxt values (1,'abc');
mysql> insert into sxt values (2,'aaa');
mysql> insert into sxt values (3,'ccc');
若想加入中文,则mysql > CREATE DATABASE IF NOT EXISTS test_db_char
                       -> DEFAULT CHARACTER SET utf8
                       -> DEFAULT COLLATE utf8_general_ci;
创建完表以及用户后,退出mysql,验证用户是否可用:
mysql  -ujava  -psxt  -h127.0.0.1

正常进入mysql,说明刚创建的java用户没问题。配置Tomcat相关的配置文件:

vi  /usr/local/tomcat/conf/context.xml    // </Context>上面

<Resource name="jdbc/mytest"     //name:表示以后要查找的名称。通过此名称可以找到DataSource,此名称任意更换,但是程序中最终要查找的就是此名称
auth="Container"       //auth:由容器进行授权及管理,指的用户名和密码是否可以在容器上生效
type="javax.sql.DataSource"           //type:此名称所代表的类型
maxActive="100" maxTdle="30" maxWait="10000"     //maxActive:表示一个数据库在此服务器上所能打开的最大连接数. maxWait:最大等待时间. maxIdle:表示一个数据库在此服务器上维持的最小连接数
username="java" password="sxt"     //username:数据库连接的用户名password:数据库连接的密码
driverClassName="com.mysql.jdbc.Driver"   //driverClassName:数据库连接的驱动程序
url="jdbc:mysql://127.0.0.1:3306/java_test">     //url:数据库连接的地址
</Resource>

另一个配置文件:

vi  /usr/local/tomcat/webapps/ROOT/WEB-INF/web.xml    //</web-app>上面增加

<resource-ref>
<description>DB Connection</description>
<res-ref-name>jdbc/mytest</res-ref-name>
<res-type>javax.sql.DataSource</res-type>
<res-auth>Container</res-auth>
</resource-ref>

每个应用目录下都有一个WEB-INF目录,它里面会有对应的配置文件。res-ref-nameResource name保持一致。在ROOT下创建测试JSP文件(用浏览器访问的文件):

vi  /usr/local/tomcat/webapps/ROOT/t.jsp

<%@page import="java.sql.*"%>
<%@page import="javax.sql.DataSource"%>
<%@page import="javax.naming.*"%>
<%
Context ctx = new InitialContext();
DataSource ds = (DataSource) ctx
.lookup("java:comp/env/jdbc/mytest");
Connection conn = ds.getConnection();
Statement state = conn.createStatement();
String sql = "select * from sxt";
ResultSet rs = state.executeQuery(sql);
while (rs.next()) {
out.println(rs.getString("id") +"<tr>");
out.println(rs.getString("name") +"<tr><br>");
}
rs.close();
state.close();
conn.close();
%>

这个脚本会连接mysql并查询一个库,表的数据。

保存重启Tomcat:
/usr/local/tomcat/bin/shutdown.sh
/usr/local/tomcat/bin/startup.sh

在浏览器中访问,他会查询java_test库的sxt表,并列出数据

直接用命令结果一样:mysql -ujava -psxt  -h127.0.0.1  java_test -e "select  * from sxt"

用虚拟机查看正常,用浏览器显示500

 

下载5.17mysql-connector-java包,上传至虚拟机,放到/tomcat/bin   /tomcat/lib目录中

可能之后还会出错,有能是这个包还没读取到,最后得到

 

原文地址:https://www.cnblogs.com/sxt0103/p/14153680.html