java程序寫的網站用tomcat+jdk來運行,tomcat是一箇中間件,真正起做用的,解析java腳本的是jdkphp
jdk是整個java的核心,它包含了java運行環境和一堆java相關的工具以及java基礎庫。html
主流的jdk爲sun公司發佈的jdk,除此以外,其實IBM公司也有發佈JDK,CentOS上也能夠用yum安裝openjdkjava
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
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監聽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
[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 "%r" %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、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文件就是把類和一些相關的資源封裝到一個包中,便於程序中引用。