linux复盘:tomcat基础

java程序写的网站用tomcat+jdk来运行,tomcat是一个中间件,真正起做用的,解析java脚本的是jdkphp

jdk是整个java的核心,它包含了java运行环境和一堆java相关的工具以及java基础库。html

主流的jdk为sun公司发布的jdk,除此以外,其实IBM公司也有发布JDK,CentOS上也能够用yum安装openjdkjava

安装jdk

cd /usr/local/src/
tar zxvf jdk-8u144-linux-x64.tar.gz
mv jdk1.8.0_144 /usr/local/jdk1.8

vi /etc/profile //最后面增长
JAVA_HOME=/usr/local/jdk1.8/
JAVA_BIN=/usr/local/jdk1.8/bin
JRE_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

source /etc/profile 刷新权限
java -version

安装tomcat

cd /usr/local/src
wget http://apache.fayea.com/tomcat/tomcat-8/v8.5.20/bin/apache-tomcat-8.5.20.tar.gz
tar zxvf apache-tomcat-8.5.20.tar.gz
mv apache-tomcat-8.5.20 /usr/local/tomcat
/usr/local/tomcat/bin/startup.sh 打开
/usr/local/tomcat/bin/shutdown.sh 关闭
ps aux|grep tomcat
netstat -lntp |grep java

#三个端口8080为提供web服务的端口,8005为管理端口,8009端口为第三方服务调用的端口,好比httpd和Tomcat结合时会用到

关闭各类防火墙

#关闭selinux
vim /etc/selinux/config
SELINUX=enforcing改成disabled
SELINUXTYPE=targeted注释掉

#禁掉netfilter(iptables)
systemctl disable iptables
systemctl stop iptables

#禁掉firewalld
systemctl disable firewalld
systemctl stop firewalld

配置Tomcat虚拟主机

若是有需求tomcat监听80端口linux

vim /usr/local/tomcat/conf/server.xmlweb

Connector port="8080" 修改成80重启便可数据库

vim /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,这个参数用来定义网站的文件存放路径,若是不定义,默认是在appBase/ROOT下面,定义了docBase就以该目录为主了,其中appBase和docBase能够同样(就让它同样去)apache

在这一步操做过程当中不少同窗遇到过访问404的问题,其实就是docBase没有定义对。vim

appBase为应用存放目录,一般是须要把war包/jar包直接放到该目录下面,会自动解压成一个程序目录这里若是出问题回云笔记里面找一下tomcat

tomcat日志

[root@quyifan logs]# ls
catalina.2018-01-30.log  host-manager.2018-01-30.log  localhost_access_log.2018-01-30.txt
catalina.out             localhost.2018-01-30.log     manager.2018-01-30.log

#catalina开头的日志为Tomcat的综合日志,它记录Tomcat服务相关信息,也会记录错误日志。☆☆☆☆☆☆☆☆☆
#catalina.2017-xx-xx.log和catalina.out内容相同,前者会天天生成一个新的日志。
#host-manager和manager为管理相关的日志,其中host-manager为虚拟主机的管理日志。
#localhost和localhost_access为虚拟主机相关日志,其中带access字样的日志为访问日志,不带access字样的为默认虚拟主机的错误日志。

配置访问日志:服务器

<Host name="www.zrlog.cn" appBase=""
          unpackWARs= "true" autoDeploy="true"
          xmlValidation="false" xmlNamespaceAware="false">
          <Context path="" docBase="/data/wwwroot/zrlog.cn/" debug="0" reloadable="true"
crossContext="true"/>
        <Valve className="org.apache.catalina.valves.AccessLogValve" directory="logs"
               prefix="www.zrlog.cn_access" suffix=".log"
               pattern="%h %l %u %t &quot;%r&quot; %s %b" />
    </Host>

核心参数<Valve/> 说明:
prefix定义访问日志的前缀;
suffix定义日志的后缀;
pattern定义日志格式。
新增长的虚拟主机默认并不会生成相似默认虚拟主机的那个localhost.日期.log日志,错误日志会统一记录到catalina.out中。

配置文件详细讲解:

元素名

属性

解释

server

port

指定一个端口,这个端口负责监听关闭tomcat 的请求

shutdown

指定向端口发送的命令字符串

service

name

指定service 的名字

Connector ( 表示客户端和service 之间的链接)

port

指定服务器端要建立的端口号,并在这个断口监听来自客户端的请求

minProcessors

服务器启动时建立的处理请求的线程数

maxProcessors

最大能够建立的处理请求的线程数

enableLookups

若是为true ,则能够经过调用request.getRemoteHost() 进行DNS查询来获得远程客户端的实际主机名,若为false 则不进行DNS 查询,而是返回其ip 地址

redirectPort

指定服务器正在处理http 请求时收到了一个SSL 传输请求后重定向的端口号

acceptCount

指定当全部可使用的处理请求的线程数都被使用时,能够放处处理队列中的请求数,超过这个数的请求将不予处理

connectionTimeout

指定超时的时间数( 以毫秒为单位)

Engine ( 表示指定service 中的请求处理机,接收和处理来自Connector的请求)

defaultHost

指定缺省的处理请求的主机名,它至少与其中的一个host 元素的name 属性值是同样的

Context ( 表示一个web 应用程序,一般为WAR 文件,关于WAR 的具体信息见servlet 规范)

docBase

应用程序的路径或者是WAR 文件存放的路径

path

表示此web 应用程序的url 的前缀,这样请求的url 为http://localhost:8080/path/ ****

reloadable

这个属性很是重要,若是为true ,则tomcat 会自动检测应用程序的/WEB-INF/lib 和/WEB-INF/classes 目录的变化,自动装载新的应用程序,咱们能够在不重起tomcat 的状况下改变应用程序

host ( 表示一个虚拟主机 )

name

指定主机名

appBase

应用程序基本目录,即存放应用程序的目录

unpackWARs

若是为true ,则tomcat 会自动将WAR 文件解压,不然不解压,直接从WAR 文件中运行应用程序

Logger ( 表示日志,调试和错误信息)

className

指定logger 使用的类名,此类必须实现org.apache.catalina.Logger 接口

prefix

指定log 文件的前缀

suffix

指定log 文件的后缀

timestamp

若是为true ,则log 文件名中要加入时间,以下例:localhost_log.2001-10-04.txt

Realm ( 表示存放用户名,密码及role的数据库)

className

指定Realm 使用的类名,此类必须实现org.apache.catalina.Realm 接口

Valve ( 功能与Logger 差很少,其prefix 和suffix属性解释和Logger中的同样)

className

指定Valve 使用的类名,如用org.apache.catalina.valves.AccessLogValve 类能够记录应用程序的访问信息

directory

指定log 文件存放的位置

pattern

有两个值,common 方式记录远程主机名或ip 地址,用户名,日期,第一行请求的字符串,HTTP 响应代码,发送的字节数。combined 方式比common 方式记录的值更多

JAR包WAR包区别

Jar、war、EAR、在文件结构上,三者并无什么不一样,它们都采用zip或jar档案文件压缩格式

Jar文件(扩展名为. Jar,Java Application Archive)包含Java类的普通库、资源(resources)、辅助文件(auxiliary files)等

War文件(扩展名为.War,Web Application Archive)包含所有Web应用程序。在这种情形下,一个Web应用程序被定义为单独的一组文件、类和资源,用户能够对jar文件进行封装,并把它做为小型服务程序(servlet)来访问。

Ear文件(扩展名为.Ear,Enterprise Application Archive)包含所有企业应用程序。在这种情形下,一个企业应用程序被定义为多个jar文件、资源、类和Web应用程序的集合。

总结:

什么时候使用war或者jar文件:当你的项目在没有彻底竣工的时候,不适合使用war文件,由于你的类会因为调试之类的常常改,这样来回删除、建立war文件很不爽,最好是你的项目已经完成了,不改了,那么就打个war包吧,这个时候一个war文件就至关于一个web应用程序鸟;而jar文件就是把类和一些相关的资源封装到一个包中,便于程序中引用。

相关文章
相关标签/搜索