十四周五次课

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了十四周五次课相关的知识,希望对你有一定的参考价值。

十四周五次课

16.4配置Tomcat监听80端口

16.5/16.6/16.7配置Tomcat虚拟主机

16.8Tomcat日志扩展

16.4配置Tomcat监听80端口


配置Tomcat监听80端口目录概要

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

Connector port="8080" protocol="HTTP/1.1"修改为Connector port="80" protocol="HTTP/1.1"
  • /usr/local/tomcat/bin/shutdown.sh

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

配置Tomcat监听80端口

1.tomcat监听的是8080端口,若想要直接直接访问,不需要8080端口访问,就是默认输入一个IP或者域名,访问的是80端口(访问的时候80端口是可以省略的)

2.tomcat是支持自定义端口的,把 8080端口 改为 80端口

3.编辑tomcat的配置文件,在 /usr/local/tomcat/conf/目录下有一个server.xml文件

[[email protected] src]# vim /usr/local/tomcat/conf/server.xml

搜索 /8080

这里是控制监听端口的,将这里的 8080 改为 80

<Connector port="80" protocol="HTTP/1.1"

               connectionTimeout="20000"

               redirectPort="8443" />

保存退出

4.改完配置文件后,重启服务,因为是不支持restart的,只能先停止,然后在开启

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

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

[[email protected] src]# /usr/local/tomcat/bin/shutdown.sh 

Using CATALINA_BASE:   /usr/local/tomcat

Using CATALINA_HOME:   /usr/local/tomcat

Using CATALINA_TMPDIR: /usr/local/tomcat/temp

Using JRE_HOME:        /usr/local/jdk1.8

Using CLASSPATH:       /usr/local/tomcat/bin/bootstrap.jar:/usr/local/tomcat/bin/tomcat-juli.jar

[[email protected] src]# /usr/local/tomcat/bin/startup.sh 

Using CATALINA_BASE:   /usr/local/tomcat

Using CATALINA_HOME:   /usr/local/tomcat

Using CATALINA_TMPDIR: /usr/local/tomcat/temp

Using JRE_HOME:        /usr/local/jdk1.8

Using CLASSPATH:       /usr/local/tomcat/bin/bootstrap.jar:/usr/local/tomcat/bin/tomcat-juli.jar

Tomcat started.

[[email protected] src]# 

5.这时再来查看监听端口是否改变,会看到监听了80端口

[[email protected] src]# netstat -lntp |grep java

tcp6       0      0 :::80                   :::*                    LISTEN      2098/java           

tcp6       0      0 127.0.0.1:8005          :::*                    LISTEN      2098/java           

tcp6       0      0 :::8009                 :::*                    LISTEN      2098/java           

[[email protected] src]# 

6.但有可能会没看到tomcat监听80端口,因为nginx已经监听了80端口,80端口被占用

  • nginx占用80端口

  • 解决方法:

    • 停掉nginx服务命令/etc/init.d/nginx stop

    • 再来重启tomcat,会看到tomcat监听的是80端口

7.这时再来浏览器访问IP (若是刚重启tomcat服务,8005端口还没启动,那么浏览器访问就会比较慢

技术分享图片


8.若是在实际线上的生产环境,就不能直接停掉Nginx,这时可以让nginx代理tomcat了,80 代理 8080

16.5/16.6/16.7配置Tomcat虚拟主机

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

  • 其中<Host>和</Host>之间的配置为虚拟主机配置部分,name定义域名, appBase定义应用的目录,Java的应用通常是一个war的压缩包,你只需要将war的压缩包放到appBase目录下面即可。刚刚阿铭访问的Tomcat默认页其实就是在appBase目录下面,不过是在它子目录ROOT里。

  • 增加虚拟主机,编辑server.xml,在</Host>下面增加如下内容

<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,这个参数用来定义网站的文件存放路径,如果不定义,默认是在appBase/ROOT下面,定义了docBase就以该目录为主了,其中appBase和docBase可以一样。在这一步操作过程中很多同学遇到过访问404的问题,其实就是docBase没有定义对。

  • appBase为应用存放目录,通常是需要把war包直接放到该目录下面,它会自动解压成一个程序目录

  • 下面我们通过部署一个java的应用来体会appBase和docBase目录的作用

  • 下载zrlog wget http://dl.zrlog.com/release/zrlog-1.7.1-baaecb9-release.war

  • mv zrlog-1.7.1-baaecb9-release.war /usr/local/tomcat/webapps/

  • mv /usr/local/tomcat/webapps/zrlog-1.7.1-baaecb9-release /usr/local/tomcat/webapps/zrlog 浏览器访问 ip:8080/zrlog/install/

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

配置Tomcat虚拟主机

  • 在之前的学习中,Apache还是nginx都属于webServer,都支持虚拟主机配置文件,虚拟主机配置文件就是一台服务器上或者一个webserver上,支持一个IP下可以访问多个域名,每个域名代表一个网站,所以可以配置多个网站,每个网站的虚拟主机,每个网站的许配置文件都是一个虚拟主机,tomcat同样也支持这个概念

1.打开tomcat虚拟主机配置文件

  • tomcat的配置文件格式和Apache、nginx不一样,是xml形式

<Host name="localhost"  appBase="webapps"

            unpackWARs="true" autoDeploy="true">


        <!-- SingleSignOn valve, share authentication between web applications

             Documentation at: /docs/config/valve.html -->

        <!--

        <Valve className="org.apache.catalina.authenticator.SingleSignOn" />

        -->


        <!-- Access log processes all example.

             Documentation at: /docs/config/valve.html

             Note: The pattern used is equivalent to using pattern="common" -->

        <Valve className="org.apache.catalina.valves.AccessLogValve" directory="logs"            //日志相关

               prefix="localhost_access_log" suffix=".txt"                            //日志相关

               pattern="%h %l %u %t &quot;%r&quot; %s %b" />                //日志相关


      </Host>

  • <Host>到</Host>之间的就表示虚拟主机

  • name定义域名,域名为localhost

  • appBase 表示应用目录在哪里

    • 首先你的应用不能是一个传统所谓的目录,Apache,nginx访问网站,首先需要指定一个目录,目录里存放着php文件或者是html的文件,然后去访问;而tomcat则不一样,它需要提供一个WAR的包,就是一个压缩包,这个压缩包里面包含着运行这个网站的一些文件,包括配置,jsp代码,数据库相关的等等,都需要打包成war这种文件,而这个文件需要放置到 webapps 里面

    • 比如搭建了一个tomcat,想要使用tomcat去跑一个网站,那么需要网站放在哪里呢?

  • unpackWARs 就是是否自动的解压war这个包,也就是war包放到webapps里面,就会自动解压

  • 除了使用war包以外,还可以单独的指定目录,这个目录里面存放着一些jsp文件,也就是提供的不是war包,而就是一个目录,这个目录里面有jsp的程序,如果是这样,还需要docbase去定义

  • webapps的默认路径为/usr/local/tomcat/webapps/,webapps目录下,默认有5个目录(docs examples host-manager manager ROOT)

  • autoDeploy 如果此项设置为true,表示tomcat服务处于运行状态,能够检测appbase下的文件,如果有新的web应用加入进来,会自动发布这个web应用

2.增加虚拟主机,编辑server.xml,在</Host>下面增加如下内容

</Host>

      <Host name="www.123.cn" appBase=""

##域名为www.123.cn,appbase后为空,就不会于docBase相互干扰

        unpackWARs= "true" autoDeploy="true"

        xmlValidation="false" xmlNamespaceAware="false">

    <Context path="" docBase="/data/wwwroot/123.cn/" debug="0" reloadable="true" crossContext="true"/>

## 自定义站点路径,不使用自动安装war的方式

</Host>

  • 如果不定义appbase,不想要war存在,可以定义一个目录,目录里放网站的程序,这个相当于把war包解压放到目录里,如果不想要解压这个包,就可以放到appbase里面,这两个二选一,如果同时存在,可以把其中一个写空,防止相互干扰。

    • 有时会出现404问题,就有可能是appbase或者docbase定义错误

  • 总结

    • docBase,这个参数用来定义网站的文件存放路径,如果不定义,默认是在appBase/ROOT下面,定义了docBase就以该目录为主了,其中appBase和docBase可以一样。在这一步操作过程中很多同学遇到过访问404的问题,其实就是docBase没有定义对。

    • appBase为应用存放目录(实际上是一个相对路径,相对于 /usr/local/tomcat/ 路径),通常是需要把war包直接放到该目录下面,它会自动解压成一个程序目录

3.为了方便测试,下载一个zrlog(java写的blog站点应用,轻量),zrlog实际就是一个war包,进行测试

  • 下载到/usr/local/src目录下

[[email protected] ~]# cd /usr/local/src

[[email protected] src]# wget http://dl.zrlog.com/release/zrlog-1.7.1-baaecb9-release.war

[[email protected] src]# du -sh zrlog-1.7.1-baaecb9-release.war 

6.8Mzrlog-1.7.1-baaecb9-release.war

[[email protected] src]# 

4.zrlog安装很简单,appbase是支持自动解压war包的,将war文件放到appbase里面,appbase默认是在/usr/local/tomcat/webapps/

[[email protected] src]# ls /usr/local/tomcat/webapps/

docs  examples  host-manager  manager  ROOT

[[email protected] src]# 

  • 默认在下面有5个目录

5.将zrlog的war文件拷贝到/usr/local/tomcat/webapps/目录下,然后再来查看/usr/local/tomcat/webapps/,会看到war包自动解压了——>前提,tomcat正常启动着,否则是无法自动解压的

[[email protected] src]# cp zrlog-1.7.1-baaecb9-release.war /usr/local/tomcat/webapps/

[[email protected] src]# ls /usr/local/tomcat/webapps/

docs  examples  host-manager  manager  ROOT  zrlog-1.7.1-baaecb9-release  zrlog-1.7.1-baaecb9-release.war

[[email protected] src]# 

  • 也就是说war包放到appbase定义的路径下会自动解压

6.解压完之后,就可以正常去访问了,修改zrlog包名称

  • 为了不影响实验结果,先更改自动生成的目录的名字,再移走webapps目录下的war包;因为一旦移走war包,和war同名的目录也会自动删除;如果这个目录下没有和war同名的目录,也会重复的解压

    • 若删除appbase下的war包,那么解压的包也会跟着直接删除

    • 修改war包的名称后,只要下载的war包一直存在,那么就会再次生成一个目录

[[email protected] src]# cd /usr/local/tomcat/webapps/

[[email protected] webapps]# mv zrlog-1.7.1-baaecb9-release zrlog

[[email protected] webapps]# ls

docs  examples  host-manager  manager  ROOT  zrlog  zrlog-1.7.1-baaecb9-release  zrlog-1.7.1-baaecb9-release.war

7.然后去访问,使用浏览器访问IP,会看到安装向导,其实就是一个配置数据库的过程

技术分享图片

8.检查mysql服务是否正常启动

[[email protected] webapps]# ps aux |grep mysql

root        938  0.0  0.1 115392  1668 ?        S    19:09   0:00 /bin/sh /usr/local/mysql/bin/mysqld_safe --datadir=/data/mysql --pid-file=/data/mysql/tianqi-01.pid

mysql      1078  0.0 45.2 1038628 451876 ?      Sl   19:09   0:05 /usr/local/mysql/bin/mysqld --basedir=/usr/local/mysql --datadir=/data/mysql --plugin-dir=/usr/local/mysql/lib/plugin --user=mysql --log-error=/data/mysql/tianqi-01.err --pid-file=/data/mysql/tianqi-01.pid --socket=/tmp/mysql.sock

root       2237  0.0  0.0 112660   984 pts/0    R+   21:35   0:00 grep --color=auto mysql

[[email protected] webapps]# 

9.进入到数据库中,在数据库里面创建一个zrlog的数据库

[[email protected] webapps]# mysql -uroot -paminglinux

Warning: Using a password on the command line interface can be insecure.

Welcome to the MySQL monitor.  Commands end with ; or \g.

Your MySQL connection id is 1

Server version: 5.6.35 MySQL Community Server (GPL)


Copyright (c) 2000, 2016, Oracle and/or its affiliates. All rights reserved.


Oracle is a registered trademark of Oracle Corporation and/or its

affiliates. Other names may be trademarks of their respective

owners.


Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.


mysql> create database zrlog;

Query OK, 1 row affected (0.13 sec)


mysql> 

10.创建完数据库之后,还需要创建一个用户(库名可以不加单引号)

mysql> grant all on zrlog.* to 'zrlog'@127.0.0.1 identified by 'aminglinux1';

Query OK, 0 rows affected (0.15 sec)


mysql> quit

Bye

[[email protected] webapps]# 

11.检查创建的数据库用户是否正确

[[email protected] webapps]# mysql -uzrlog -h127.0.0.1 -paminglinux1 

Warning: Using a password on the command line interface can be insecure.

Welcome to the MySQL monitor.  Commands end with ; or \g.

Your MySQL connection id is 2

Server version: 5.6.35 MySQL Community Server (GPL)


Copyright (c) 2000, 2016, Oracle and/or its affiliates. All rights reserved.


Oracle is a registered trademark of Oracle Corporation and/or its

affiliates. Other names may be trademarks of their respective

owners.


Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.


mysql> show databases;

+--------------------+

| Database           |

+--------------------+

| information_schema |

| test               |

| zrlog              |

+--------------------+

3 rows in set (0.05 sec)


mysql> 

  • 在执行 show databases; 命令后,会只看到zrlog

12.接下来就是在浏览器访问IP打开的网页,填写数据库的信息(系统信箱自定义即可),之后就能访问了,密码为 aminglinux1

技术分享图片

点击下一步,保存

技术分享图片

管理员密码设置的简单一些,这里设置成123456

技术分享图片

13.正常访问搭建的博客,并可以在文章后台发布文章

技术分享图片

技术分享图片

总结

  1. 首先部署环境,tomcat加jdk

  2. 部署完环境后偶,下载zrlog的war包过来

  3. 把war包放到appbase里面,它会自动的帮你解压,解压成一个目录,这个目录就是我们需要项目

  4. 配置一个数据库,对应的用户,数据库,密码

  5. 但这种访问,还需要在后面加一个目录

搭建好zrlog(测试用docBase指定路径,访问是否生效)

1.在搭建好zrlog后,在访问这个博客的时候,不想要这个目录,比如访问 192.168.202.130/zrlog/ ,去掉zrlog这个目录,直接用域名去访问

2.查看tomcat是配置文件,在配置文件中已经创建了一个新的虚拟主机,域名叫做www.123.cn,appbase没有去定义,也就是说不需要弄任何的war包过来,但定义了一个docbase,docbase就是一个目录,这里面不需要设置任何的war包,而是war包解压完的目录放进去

[[email protected] webapps]# vim /usr/local/tomcat/conf/server.xml

 </Host>

      <Host name="www.123.cn" appBase=""

##域名为www.123.cn,appbase后为空,就不会于docBase相互干扰

            unpackWARs= "true" autoDeploy="true"

            xmlValidation="false" xmlNamespaceAware="false">

            <Context path="" docBase="/data/wwwroot/123.cn/" debug="0" reloadable="true" crossContext="true"/>

## 自定义站点路径,不使用自动安装war的方式

      </Host>

3.创建/data/wwwroot/123.cn/目录

[[email protected] webapps]# mkdir /data/wwwroot/123.cn

[[email protected] webapps]# 

4.然后把appbase下的zrlog目录下的所有文件,全部移动到docbase下的/data/wwwroot/123.cn/目录下

[[email protected] webapps]# mv /usr/local/tomcat/webapps/zrlog/* /data/wwwroot/123.cn/

[[email protected] webapps]# 

5.绑定hosts,在window物理机的hosts文件中,加入虚拟机的IP和网址

技术分享图片

6.在windows物理机上ping www.123.cn,如果放到到的的虚拟机上,就可以去访问它了

技术分享图片

7.然后重启tomcat服务

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

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

[[email protected] webapps]# /usr/local/tomcat/bin/shutdown.sh 

Using CATALINA_BASE:   /usr/local/tomcat

Using CATALINA_HOME:   /usr/local/tomcat

Using CATALINA_TMPDIR: /usr/local/tomcat/temp

Using JRE_HOME:        /usr/local/jdk1.8

Using CLASSPATH:       /usr/local/tomcat/bin/bootstrap.jar:/usr/local/tomcat/bin/tomcat-juli.jar

[[email protected] webapps]# /usr/local/tomcat/bin/startup.sh 

Using CATALINA_BASE:   /usr/local/tomcat

Using CATALINA_HOME:   /usr/local/tomcat

Using CATALINA_TMPDIR: /usr/local/tomcat/temp

Using JRE_HOME:        /usr/local/jdk1.8

Using CLASSPATH:       /usr/local/tomcat/bin/bootstrap.jar:/usr/local/tomcat/bin/tomcat-juli.jar

Tomcat started.

[[email protected] webapps]# 

8.查看端口

[[email protected] webapps]# netstat -lntp |grep 80

tcp        0      0 0.0.0.0:22              0.0.0.0:*               LISTEN      800/sshd            

tcp6       0      0 :::80                   :::*                    LISTEN      2379/java           

tcp6       0      0 :::22                   :::*                    LISTEN      800/sshd            

tcp6       0      0 127.0.0.1:8005          :::*                    LISTEN      2379/java           

tcp6       0      0 :::8009                 :::*                    LISTEN      2379/java           

[[email protected] webapps]# 

9.浏览器访问www.123.cn ,按ctrl+f5刷新

技术分享图片

16.8Tomcat日志扩展

  • ls /usr/local/tomcat/logs

[[email protected] webapps]# cd ..

[[email protected] tomcat]# ls

bin  conf  lib  LICENSE  logs  NOTICE  RELEASE-NOTES  RUNNING.txt  temp  webapps  work

[[email protected] tomcat]# ls logs

catalina.2018-03-29.log  host-manager.2018-03-29.log  localhost.2018-04-01.log             manager.2018-03-29.log

catalina.2018-04-01.log  host-manager.2018-04-01.log  localhost_access_log.2018-03-29.txt  manager.2018-04-01.log

catalina.out             localhost.2018-03-29.log     localhost_access_log.2018-04-01.txt

[[email protected] tomcat]# 

  • tomcat日志分为四种

    • 其中catalina开头的日志为Tomcat的综合日志,它记录Tomcat服务相关信息,也会记录错误日志。

    • 其中catalina.2018-xx-xx.log和catalina.out内容相同,前者会每天生成一个新的日志。

    • host-manager和manager为管理相关的日志,其中host-manager为虚拟主机的管理日志。

    • localhost和localhost_access为虚拟主机相关日志,其中带access字样的日志为访问日志,不带access字样的为默认虚拟主机的错误日志。

  • 访问日志默认不会生成,需要在server.xml中配置一下。

  • 具体方法是在对应虚拟主机的<Host></Host>里面加入下面的配置(假如域名为123.cn):

<Valve className="org.apache.catalina.valves.AccessLogValve" directory="logs"
         prefix="123.cn_access" suffix=".log"
         pattern="%h %l %u %t &quot;%r&quot; %s %b" />
  • prefix定义访问日志的前缀,suffix定义日志的后缀,pattern定义日志格式。新增加的虚拟主机默认并不会生成类似默认虚拟主机的那个localhost.日期.log日志,错误日志会统一记录到catalina.out中。关于Tomcat日志,你最需要关注catalina.out,当出现问题时,我们应该第一想到去查看它。

友情链接:http://www.apelearn.com阿铭linux


以上是关于十四周五次课的主要内容,如果未能解决你的问题,请参考以下文章

2018.3.30 14周5次课

十五周五次课

七周五次课(1月26日)

Python四周五次课

十二周五次课(3月16日)

linux七周五次课(3月23日)