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文件就是把類和一些相關的資源封裝到一個包中,便於程序中引用。

相關文章
相關標籤/搜索