該系列文章只是本人的學習筆記,文章中的文字描述提取自《Linux鳥哥私房菜》《Linux運維之道》等書中的重點內容,部分內容是在培訓Linux運維時總結的筆記,化繁為簡能夠在工作中快速復習掌握重點,並不代表個人立場,但轉載請加出處,並注明參考文獻。
Tomcat是Apache軟件基金會 (Apache Software Foundation)的Jakarta項目中的一個核心項目,由Apache、Sun 和其他一些公司及個人共同開發而成.由於有了Sun的參與和支持,最新的Servlet和JSP規范總是能在Tomcat中得到體現,因為Tomcat 技術先進、性能穩定,而且免費,因而深受Java愛好者的喜愛並得到了部分軟件開發商的認可,成為目前比較流行的Web應用服務器.
Tomcat環境搭建
1.由於Tomcat使用Java開發,所以應該下載並安裝JDK.
[root@localhost ~]# wget http://www.oracle.com/technetwork/java/javase/downloads/index.html
[root@localhost ~]# tar -xzvf jdk-*.tar.gz -C /usr/local/
[root@localhost ~]# mv /usr/local/jdk-*/ /usr/local/jdk
2.修改環境配置文件寫入以下內容,保證下次開機配置好Java環境.
[root@localhost ~]# vim /etc/profile
#------------------------------------------------------------------
#Java-JDK-Path
export JAVA_HOME=/usr/local/jdk
export JAVA_BIN=/usr/local/jdk/bin
export PATH=$PATH:$JAVA_HOME/bin
export CLASSPATH=.:$JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jar
export JAVA_HOME JAVA_BIN PATH CLASSPATH
#------------------------------------------------------------------
[root@localhost ~]# source /etc/profile
3.下載並解壓安裝Tomcat.
[root@localhost ~]# wget http://tomcat.apache.org/tomcat9.0.7.tar.gz
[root@localhost ~]# tar -xzvf apache-tomcat-9.0.7.tar.gz -C /usr/local/
[root@localhost ~]# mv /usr/local/apache-tomcat-9.0.7/ /usr/local/tomcat
4.修改環境配置文件寫入以下內容.
[root@localhost ~]# vim /etc/profile
#------------------------------------------------------------------
#Apache-Tomcat-Path
export TOMCAT_HOME=/usr/local/tomcat
export PATH=$PATH:$TOMCAT_HOME/bin
#------------------------------------------------------------------
[root@localhost ~]# source /etc/profile
5.賦予可執行權限,啟動Tomcat,並設置成開機自啟動.
[root@localhost ~]# chmod -R 755 /usr/local/tomcat/bin/*
[root@localhost ~]# /usr/local/tomcat/bin/catalina.sh start
[root@localhost ~]# echo "/usr/local/tomcat/bin/catalina.sh start" >> /etc/profile
部署靜態頁面
1.創建一個默認目錄,用來保存起始頁面.
[root@localhost ~]# mkdir -p /usr/local/tomcat/webindex
[root@localhost ~]# echo "hello world" > /usr/local/tomcat/webindex/index.html
2.修改tomcat主配置文件,具體只需要修改兩處位置即可.
[root@localhost ~]# vim /usr/local/tomcat/conf/server.xml
67 Define a non-SSL/TLS HTTP/1.1 Connector on port 8080
68 -->
69 <Connector port="80" protocol="HTTP/1.1" #將此處端口改為80
70 connectionTimeout="20000"
71 redirectPort="8443" />
72 <!-- A "Connector" using the shared thread pool-->
73 <!--
......
157 <!-- Access log processes all example.
158 Documentation at: /docs/config/valve.html
159 Note: The pattern used is equivalent to using pattern="common" -->
160 <Valve className="org.apache.catalina.valves.AccessLogValve" directory="logs"
161 prefix="localhost_access_log" suffix=".txt"
162 pattern="%h %l %u %t "%r" %s %b" />
163 <Context path="" docBase="/usr/local/tomcat/webindex" reloadable="false" /> #添加本行,指定一下配置文件位置
164
165 </Host>
166 </Engine>
3.重新啟動Tomcat,稍等片刻即可完成部署.
[root@localhost ~]# /usr/local/tomcat/bin/catalina.sh stop
[root@localhost ~]# /usr/local/tomcat/bin/catalina.sh start
Java-war包部署
1.將War包拷入到 /usr/local/tomcat/webapps 目錄下,並刪除 ROOT 緩存目錄.
[root@localhost ~]# cp -a *.war /usr/local/tomcat/webapps/
[root@localhost ~]# rm -fr /usr/local/tomcat/webapps/ROOT/*
2.編輯Tomcat主配置文件,在相應的區域中加入以下標★語句.
[root@localhost ~]# vim /usr/local/tomcat/conf/server.xml
146 </Realm>
147
148 <Host name="localhost" appBase="webapps" unpackWARs="true" autoDeploy="true">
★ <Context path="" docBase="war包名稱.war" debug="0" privileged="true"/>
150
151 <!-- SingleSignOn valve, share authentication between web applications
152 Documentation at: /docs/config/valve.html -->
153 <!--
154 <Valve className="org.apache.catalina.authenticator.SingleSignOn" />
3.重新啟動Tomcat,稍等片刻即可完成部署.
[root@localhost ~]# /usr/local/tomcat/bin/catalina.sh stop
[root@localhost ~]# /usr/local/tomcat/bin/catalina.sh start
Tomcat虛擬主機
◆基於端口虛擬主機◆
基於端口的虛擬主機,可以讓用戶通過端口號,來訪問服務器上的資源,在配置虛擬網站時,基於端口的配置方式最為復雜,以下實驗將實現在一台服務器上配置多個端口,搭建多個網站,每個網站使用一個端口.
1.首先在tomcat目錄創建兩個目錄分別存放兩個虛擬主機頁面.
[root@localhost ~]# mkdir -p /usr/local/tomcat/virtual
[root@localhost ~]# mkdir -p /usr/local/tomcat/virtual/vhost1
[root@localhost ~]# mkdir -p /usr/local/tomcat/virtual/vhost2
[root@localhost ~]# echo "vhost1" > /usr/local/tomcat/virtual/vhost1/index.html
[root@localhost ~]# echo "vhost2" > /usr/local/tomcat/virtual/vhost2/index.html
2.修改主配置文件,添加在server.xml,中設置兩個service組件.
[root@localhost ~]# vim /usr/local/tomcat/conf/server.xml
53 <Service name="Catalina">
54 <Connector port="80" protocol="HTTP/1.1" connectionTimeout="20000" redirectPort="8443" />
55 <Connector port="8009" protocol="AJP/1.3" redirectPort="8443" />
56
57 <Engine name="Catalina" defaultHost="localhost">
58 <Realm className="org.apache.catalina.realm.LockOutRealm">
59 <Realm className="org.apache.catalina.realm.UserDatabaseRealm" resourceName="UserDatabase"/>
60 </Realm>
61
62 <Host name="localhost" appBase="webapps" unpackWARs="true" autoDeploy="true">
63
64 <Valve className="org.apache.catalina.valves.AccessLogValve" directory="logs" prefix="localhost_access_log" suffix=".txt" pattern="%h %l %u %t "%r" %s %b" />
65 <Context path="" docBase="/usr/local/tomcat/virtual/vhost1" reloadable="false" />
66 </Host>
67 </Engine>
68 </Service>
69
70 <Service name="Catalina1">
71 <Connector port="8080" protocol="HTTP/1.1" connectionTimeout="20000" redirectPort="8443" />
72 <Connector port="8009" protocol="AJP/1.3" redirectPort="8443" />
73
74 <Engine name="Catalina1" defaultHost="localhost">
75 <Realm className="org.apache.catalina.realm.LockOutRealm">
76 <Realm className="org.apache.catalina.realm.UserDatabaseRealm" resourceName="UserDatabase"/>
77 </Realm>
78
79 <Host name="localhost" appBase="webapps" unpackWARs="true" autoDeploy="true">
80
81 <Valve className="org.apache.catalina.valves.AccessLogValve" directory="logs" prefix="localhost_access_log" suffix=".txt" pattern="%h %l %u %t "%r" %s %b" />
82 <Context path="" docBase="/usr/local/tomcat/virtual/vhost2" reloadable="false" />
83 </Host>
84 </Engine>
85 </Service>
3.重新啟動Tomcat,稍等片刻即可完成部署.
[root@localhost ~]# /usr/local/tomcat/bin/catalina.sh stop
[root@localhost ~]# /usr/local/tomcat/bin/catalina.sh start
◆基於域名虛擬主機◆
當服務器無法為每一個網站分配一個獨立的IP的時候,可以嘗試讓Apache自動識別用戶請求的域名,從而根據不同的域名請求來傳輸不同的內容,這里我們為了驗證實驗要手動搭建一個DNS解析,以下實驗將實現在一台服務器上多個域名,搭建多個網站,每個網站使用一個域名.
1.配置域名與Ip的映射管理,這里你可以配置DNS解析,也可以直接寫host文件測試.
[root@localhost ~]# vim /etc/hosts
127.0.0.1 localhost localhost.localdomain localhost4 localhost4.localdomain4
::1 localhost localhost.localdomain localhost6 localhost6.localdomain6
127.0.0.1 www.wang.com www
127.0.0.1 www.rui.com www
2.在tomcat目錄創建兩個目錄分別存放兩個虛擬主機頁面.
[root@localhost ~]# mkdir -p /usr/local/tomcat/virtual
[root@localhost ~]# mkdir -p /usr/local/tomcat/virtual/vhost1
[root@localhost ~]# mkdir -p /usr/local/tomcat/virtual/vhost2
[root@localhost ~]# echo "vhost1" > /usr/local/tomcat/virtual/vhost1/index.html
[root@localhost ~]# echo "vhost2" > /usr/local/tomcat/virtual/vhost2/index.html
3.修改server.xml主配置文件,修改以下內容即可.
[root@localhost ~]# vim /usr/local/tomcat/conf/server.xml
53 <Service name="Catalina">
54 <Connector port="80" protocol="HTTP/1.1" connectionTimeout="20000" redirectPort="8443" />
55 <Connector port="8009" protocol="AJP/1.3" redirectPort="8443" />
56
57 <Engine name="Catalina" defaultHost="localhost">
58 <Realm className="org.apache.catalina.realm.LockOutRealm">
59 <Realm className="org.apache.catalina.realm.UserDatabaseRealm" resourceName="UserDatabase"/>
60 </Realm>
61
62 <Host name="www.wang.com" appBase="webapps" unpackWARs="true" autoDeploy="true">
63 <Valve className="org.apache.catalina.valves.AccessLogValve" directory="logs" prefix="localhost_access_log" suffix=".txt" pattern="%h %l %u %t "%r" %s %b" />
64 <Context path="" docBase="/usr/local/tomcat/virtual/vhost1" reloadable="false" />
65 </Host>
66 <Host name="www.rui.com" appBase="webapps" unpackWARs="true" autoDeploy="true">
67 <Valve className="org.apache.catalina.valves.AccessLogValve" directory="logs" prefix="localhost_access_log" suffix=".txt" pattern="%h %l %u %t "%r" %s %b" />
68 <Context path="" docBase="/usr/local/tomcat/virtual/vhost2" reloadable="false" />
69 </Host>
70
71 </Engine>
72 </Service>
4.重新啟動Tomcat,稍等片刻即可完成部署.
[root@localhost ~]# /usr/local/tomcat/bin/catalina.sh stop
[root@localhost ~]# /usr/local/tomcat/bin/catalina.sh start
