1/24
Tomcat
Tomcat
它是一套用來運行java web應用程序的服務環境。java web應用程序的源碼文件通常是*.jsp。JSP的服務
環境由jdk和tomcat兩個軟件組成。
軟件的部署很簡單,因爲只需要將下載好的jdk和tomcat軟件包解壓到系統中指定的目錄下,並配置環境變
量文件,啓動tomcat的服務就可以了。後期的重點是在於如何用tomcat去發佈jsp網站應用程序。其發佈
網站的方法跟apache和nginx有點相似。
Tomcat
被稱作JAVA容器,WEB容器,WEB中間件
Tomcat,Resin,JBOSS(redhat),WebSphere(IBM),Weblogic(oracle)
訪問web應用的流程:
客戶端瀏覽器 ---〉 web服務器(apache/nginx/tomcat)---〉網站文件
容器:用來容納(裝)東西(信息)的器具。 nginx(apache) 80 |
web中間件 |
---|
網站 1.有沒有用過web容器? 2.你用過什麼web容器 ? 3.你上家公司有沒有用tomcat? 4.什麼是web容器(web中間件) 5.nginx、apache、tomcat的區別? tomcat官網: http://tomcat.apache.org/ jdk官網: http://www.oracle.com/technetwork/java/javase/downloads/index.html 方案一(單機部署): Tomcat 方案二(動靜分離集羣): Nginx+Tomcat 實現動靜分離,即html靜態網頁由apache或nginx處理,jsp動 態網頁由tomcat服務處理 方案三:用nginx實現tomcat羣集的負載均衡 Nginx |
+-----------------------------+ |
---|
Tomcat1 Tomcat2 Tomcat3
2000
物理機器的配置
2/24
幾臺機器
建議使用Nginx和Tomcat配合,Nginx處理靜態,Tomcat處理動態程序
方案三中後端Tomcat可以運行在單獨的主機,也可以是同一臺主機上的多實
例
靜態元素
html css js 各種圖片
動態元素
php java python
能跟數據庫和服務器進行數據交互的代碼
一、Tomcat Http Server
jdk的包有兩種:
- .gz .bz2 .zip 直接解壓 放到安裝位置 就能用
- .bin 直接執行 會解壓出來一個目錄 放到安裝位置 就能用
一般放到/usr/local/下面 改環境變量
- 部署JAVA環境
tar xf jdk-8u91-linux-x64.tar.gz -C /usr/local 將jdk解壓到/usr/local目錄
方式1(首選):
ln -s /usr/local/jdk1.8.0_91 /usr/local/java
方式2(備選):
mv /usr/local/jdk1.8.0_91 /usr/local/java
修改環境變量:
方式1(首選):自己創建一個啓動腳本vim /etc/profile.d/jdk.sh
JAVA_HOME=/usr/local/java
PATH=$JAVA_HOME/bin:$PATH
export JAVA_HOME PATH
方式2(備選):寫到系統自帶的啓動腳本內vim /etc/profile
JAVA_HOME=/usr/local/java
PATH=$JAVA_HOME/bin:$PATH
export JAVA_HOME PATH
使上設置的腳本立即生效:
source /etc/profile.d/jdk.sh 或 source /etc/profile
echo $PATH
測試java環境:env |grep JAVA 選做,查看的結果如下
JAVA_HOME=/usr/local/java
java -version 必做,只要看到如下信息,就說明jdk已經配置好了
java version "1.8.0_91"
Java(TM) SE Runtime Environment (build 1.8.0_91-b14)
Java HotSpot(TM) 64-Bit Server VM (build 25.91-b14, mixed mode)
3/24
-----
可以直接把openjdk刪除
#yum erase $(rpm -qa | grep jdk) -y - 安裝Tomcat:(和jdk的方式1一模一樣,解壓改名就能用)
首先,解壓tomcat到指定的目錄中。tar xf apache-tomcat-7.0.34.tar.gz -C /usr/local/
ln -s /usr/local/apache-tomcat-7.0.34 /usr/local/tomcat
然後,定義Tomcat所需環境變量:
vim /etc/profile.d/tomcat.sh //定義Tomcat環境變量
CATALINA_HOME=/usr/local/tomcat //Tomcat安裝目錄(基準、工作)
export CATALINA_HOME加載環境變量文件
source /etc/profile.d/tomcat.sh
啓動Tomcat
/usr/local/tomcat/bin/startup.sh //啓動tomcat
Using CATALINA_BASE: /usr/local/tomcat
Using CATALINA_HOME: /usr/local/tomcat
Using CATALINA_TMPDIR: /usr/local/tomcat/temp
Using JRE_HOME: /usr/java/jdk1.7.0_11
Using CLASSPATH: /usr/local/tomcat/bin/bootstrap.jar:/usr/local/tomcat/bin/tomcat-juli.jarnetstat -tnlp |grep java
tcp 0 0 ::ffff:127.0.0.1:8005 ::: LISTEN 6191/java
tcp 0 0 :::8009 ::: LISTEN 6191/java
tcp 0 0 :::8080 :::* LISTEN 6191/java
/usr/local/tomcat/bin/shutdown.sh //關閉tomcat
關於tomcat端口:8080 8005 8009
Tomcat服務器通過Connector連接器組件與客戶程序建立連接,Connector組件負責接收客戶的請求,以
及把Tomcat服務器的響應結果發送給客戶。默認情況下,Tomcat在server.xml中配置了兩種連接器:
第一個連接器監聽8080端口,負責建立HTTP連接。在通過瀏覽器訪問Tomcat服務器的Web應用
時,使用的就是這個連接器。
第二個連接器監聽8009端口,負責和其他的HTTP(apache)服務器建立連接。在把Tomcat與其他
HTTP服務器集成時,就需要用到這個連接器。
8005是tomcat本身的端口
-
測試
http://192.168.2.251:8080/
tomcat目錄結構:
[root@tomcat webapps]# tree -L 1 /usr/local/tomcat/ 說明:-L 是level等級的縮寫
/usr/local/tomcat/ #tomcat的工作目錄
├── bin #啓動關閉命令
├── conf #配置文件
├── lib
├── LICENSE
├── logs #日誌 catalina.out
4/24
├── NOTICE
├── RELEASE-NOTES
├── RUNNING.txt
├── temp
├── webapps #存網站(project--目錄)的目錄 默認網站爲ROOT
└── work
隨堂練習:在/usr/local/tomcat/webapps/ROOT目錄中生成一個a.html的靜態網頁。
echo '<meta http-equiv="Content-Type" content="text/html; charset=utf-8">' > /usr/local/
tomcat/webapps/ROOT/b.html
echo "當前日期:$(date)" >> /usr/local/tomcat/webapps/ROOT/b.html
win7/10瀏覽器訪問測試:192.168.11.11:8080/a.html以下是部署jsp帶數據庫的網站應用程序jspgou。
二、安裝MySQL(略)
#yum install mariadb mariadb-server -y
#systemctl start mariadb && systemctl enable mariadb
三、部署jspgouls /usr/local/tomcat/webapps/ //默認網站的基目錄base
docs examples host-manager manager ROOT
ls /usr/local/tomcat/webapps/ROOT //默認網站的主目錄
1.創建數據庫:
在mysql數據庫中創建jspgou數據庫(推薦使用此數據庫名,否則參照第三條修改對應的數據庫鏈接信息),
字符集爲utf-8
mysql -e 'create database jspgou CHARACTER SET = utf8;show databases;'
2.更改數據庫鏈接:
wget http://bbs.jeecms.com/fabu/62873.jhtml
unzip jspgouV6-ROOT.zip
ls ROOT DB
\cp -Rv ROOT /usr/local/tomcat/webapps/
Q:jdbc是什麼?ODBC是什麼?
A:jdbc是java數據庫連接(java database connection)的縮寫。是用java訪問數據庫的接口驅動程序。
odbc是開放數據庫連接(open database connection)的縮寫。odbc的配置在win7/10系統控制面板的"管
理工具"中的"數據源(odbc)"功能裏面有。odbc中的驅動程序通常是用戶在系統中安裝了數據庫軟件的服務
器或客戶端軟件自動生成的。
程序包內ROOT/WEB-INF/config/jdbc.properties文件第20行左右
vim /usr/local/tomcat/webapps/ROOT/WEB-INF/config/jdbc.properties 修改如下內容
jdbc.url=jdbc:mysql://127.0.0.1:3306/創建好的數據庫名?characterEncoding=UTF-8
jdbc.username=root #在生產環境中必須用普通賬戶
jdbc.password=123
3.導入數據:
將壓縮包內 DB文件中jspgou.sql文件導入至創建好的jspgou數據庫中,如導入中出現執行sql語句過長問
題,請修改mysql配置文件my.cnf中max_allowed_packet參數爲64m,默認爲1m
5/24
導入數據庫時如果報錯:把所有datetime類型的字段默認值改成CURRENT_TIMESTAMP
注意:如果用Mariadb數據庫不會出現如上錯誤,可以直接導入
[root@tomcat DB]# mysql -uroot -p123 -D jspgou < jspgou.sql
4.部署網站:
將程序解壓後的ROOT文件夾拷貝到tomcat安裝目錄下的webapps文件夾下(例如:D:\Tomcat7
\webapps\),啓動tomcat
輸入以下地址,如能正常顯示,即表示部署成功
系統管理後臺登錄:http://192.168.11.11:8080/jeeadmin/jspgou/index.do
用戶名:admin
密 碼:123456
點擊上圖右上角瀏覽器圖標訪問網站首頁:
6/24
tomcat部署
Tomcat
它是一套用來運行java web應用程序的服務環境。java web應用程序的源碼文件通常是*.jsp。JSP的服務
環境由jdk和tomcat兩個軟件組成。
軟件的部署很簡單,因爲只需要將下載好的jdk和tomcat軟件包解壓到系統中指定的目錄下,並配置環境變
量文件,啓動tomcat的服務就可以了。後期的重點是在於如何用tomcat去發佈jsp網站應用程序。其發佈
網站的方法跟apache和nginx有點相似。
Tomcat
被稱作JAVA容器,WEB容器,WEB中間件
Tomcat,Resin,JBOSS(redhat),WebSphere(IBM),Weblogic(oracle)
訪問web應用的流程:
客戶端瀏覽器 ---〉 web服務器(apache/nginx/tomcat)---〉網站文件
容器:用來容納(裝)東西(信息)的器具。 nginx(apache) 80 |
web中間件 |
---|
網站 1.有沒有用過web容器? 2.你用過什麼web容器 ? 3.你上家公司有沒有用tomcat? 4.什麼是web容器(web中間件) 5.nginx、apache、tomcat的區別? tomcat官網: http://tomcat.apache.org/ jdk官網: http://www.oracle.com/technetwork/java/javase/downloads/index.html 方案一(單機部署): Tomcat 方案二(動靜分離集羣): Nginx+Tomcat 實現動靜分離,即html靜態網頁由apache或nginx處理,jsp動 態網頁由tomcat服務處理 方案三:用nginx實現tomcat羣集的負載均衡 Nginx |
+-----------------------------+ |
---|
Tomcat1 Tomcat2 Tomcat3
2000
物理機器的配置
7/24
幾臺機器
建議使用Nginx和Tomcat配合,Nginx處理靜態,Tomcat處理動態程序
方案三中後端Tomcat可以運行在單獨的主機,也可以是同一臺主機上的多實
例
靜態元素
html css js 各種圖片
動態元素
php java python
能跟數據庫和服務器進行數據交互的代碼
一、Tomcat Http Server
jdk的包有兩種:
- .gz .bz2 .zip 直接解壓 放到安裝位置 就能用
- .bin 直接執行 會解壓出來一個目錄 放到安裝位置 就能用
一般放到/usr/local/下面 改環境變量
- 部署JAVA環境
tar xf jdk-8u91-linux-x64.tar.gz -C /usr/local 將jdk解壓到/usr/local目錄
方式1(首選):
ln -s /usr/local/jdk1.8.0_91 /usr/local/java
方式2(備選):
mv /usr/local/jdk1.8.0_91 /usr/local/java
修改環境變量:
方式1(首選):自己創建一個啓動腳本vim /etc/profile.d/jdk.sh
JAVA_HOME=/usr/local/java
PATH=$JAVA_HOME/bin:$PATH
export JAVA_HOME PATH
方式2(備選):寫到系統自帶的啓動腳本內vim /etc/profile
JAVA_HOME=/usr/local/java
PATH=$JAVA_HOME/bin:$PATH
export JAVA_HOME PATH
使上設置的腳本立即生效:
source /etc/profile.d/jdk.sh 或 source /etc/profile
echo $PATH
測試java環境:env |grep JAVA 選做,查看的結果如下
JAVA_HOME=/usr/local/java
java -version 必做,只要看到如下信息,就說明jdk已經配置好了
java version "1.8.0_91"
Java(TM) SE Runtime Environment (build 1.8.0_91-b14)
Java HotSpot(TM) 64-Bit Server VM (build 25.91-b14, mixed mode)
8/24
-----
可以直接把openjdk刪除
#yum erase $(rpm -qa | grep jdk) -y - 安裝Tomcat:(和jdk的方式1一模一樣,解壓改名就能用)
首先,解壓tomcat到指定的目錄中。tar xf apache-tomcat-7.0.34.tar.gz -C /usr/local/
ln -s /usr/local/apache-tomcat-7.0.34 /usr/local/tomcat
然後,定義Tomcat所需環境變量:
vim /etc/profile.d/tomcat.sh //定義Tomcat環境變量
CATALINA_HOME=/usr/local/tomcat //Tomcat安裝目錄(基準、工作)
export CATALINA_HOME加載環境變量文件
source /etc/profile.d/tomcat.sh
啓動Tomcat
/usr/local/tomcat/bin/startup.sh //啓動tomcat
Using CATALINA_BASE: /usr/local/tomcat
Using CATALINA_HOME: /usr/local/tomcat
Using CATALINA_TMPDIR: /usr/local/tomcat/temp
Using JRE_HOME: /usr/java/jdk1.7.0_11
Using CLASSPATH: /usr/local/tomcat/bin/bootstrap.jar:/usr/local/tomcat/bin/tomcat-juli.jarnetstat -tnlp |grep java
tcp 0 0 ::ffff:127.0.0.1:8005 ::: LISTEN 6191/java
tcp 0 0 :::8009 ::: LISTEN 6191/java
tcp 0 0 :::8080 :::* LISTEN 6191/java
/usr/local/tomcat/bin/shutdown.sh //關閉tomcat
關於tomcat端口:8080 8005 8009
Tomcat服務器通過Connector連接器組件與客戶程序建立連接,Connector組件負責接收客戶的請求,以
及把Tomcat服務器的響應結果發送給客戶。默認情況下,Tomcat在server.xml中配置了兩種連接器:
第一個連接器監聽8080端口,負責建立HTTP連接。在通過瀏覽器訪問Tomcat服務器的Web應用
時,使用的就是這個連接器。
第二個連接器監聽8009端口,負責和其他的HTTP(apache)服務器建立連接。在把Tomcat與其他
HTTP服務器集成時,就需要用到這個連接器。
8005是tomcat本身的端口
-
測試
http://192.168.2.251:8080/
tomcat目錄結構:
[root@tomcat webapps]# tree -L 1 /usr/local/tomcat/ 說明:-L 是level等級的縮寫
/usr/local/tomcat/ #tomcat的工作目錄
├── bin #啓動關閉命令
├── conf #配置文件
├── lib
├── LICENSE
├── logs #日誌 catalina.out
9/24
├── NOTICE
├── RELEASE-NOTES
├── RUNNING.txt
├── temp
├── webapps #存網站(project--目錄)的目錄 默認網站爲ROOT
└── work
隨堂練習:在/usr/local/tomcat/webapps/ROOT目錄中生成一個a.html的靜態網頁。
echo '<meta http-equiv="Content-Type" content="text/html; charset=utf-8">' > /usr/local/
tomcat/webapps/ROOT/b.html
echo "當前日期:$(date)" >> /usr/local/tomcat/webapps/ROOT/b.html
win7/10瀏覽器訪問測試:192.168.11.11:8080/a.html以下是部署jsp帶數據庫的網站應用程序jspgou。
二、安裝MySQL(略)
#yum install mariadb mariadb-server -y
#systemctl start mariadb && systemctl enable mariadb
三、部署jspgouls /usr/local/tomcat/webapps/ //默認網站的基目錄base
docs examples host-manager manager ROOT
ls /usr/local/tomcat/webapps/ROOT //默認網站的主目錄
1.創建數據庫:
在mysql數據庫中創建jspgou數據庫(推薦使用此數據庫名,否則參照第三條修改對應的數據庫鏈接信息),
字符集爲utf-8
mysql -e 'create database jspgou CHARACTER SET = utf8;show databases;'
2.更改數據庫鏈接:
wget http://bbs.jeecms.com/fabu/62873.jhtml
unzip jspgouV6-ROOT.zip
ls ROOT DB
\cp -Rv ROOT /usr/local/tomcat/webapps/
Q:jdbc是什麼?ODBC是什麼?
A:jdbc是java數據庫連接(java database connection)的縮寫。是用java訪問數據庫的接口驅動程序。
odbc是開放數據庫連接(open database connection)的縮寫。odbc的配置在win7/10系統控制面板的"管
理工具"中的"數據源(odbc)"功能裏面有。odbc中的驅動程序通常是用戶在系統中安裝了數據庫軟件的服務
器或客戶端軟件自動生成的。
程序包內ROOT/WEB-INF/config/jdbc.properties文件第20行左右
vim /usr/local/tomcat/webapps/ROOT/WEB-INF/config/jdbc.properties 修改如下內容
jdbc.url=jdbc:mysql://127.0.0.1:3306/創建好的數據庫名?characterEncoding=UTF-8
jdbc.username=root #在生產環境中必須用普通賬戶
jdbc.password=123
3.導入數據:
將壓縮包內 DB文件中jspgou.sql文件導入至創建好的jspgou數據庫中,如導入中出現執行sql語句過長問
題,請修改mysql配置文件my.cnf中max_allowed_packet參數爲64m,默認爲1m
10/24
導入數據庫時如果報錯:把所有datetime類型的字段默認值改成CURRENT_TIMESTAMP
注意:如果用Mariadb數據庫不會出現如上錯誤,可以直接導入
[root@tomcat DB]# mysql -uroot -p123 -D jspgou < jspgou.sql
4.部署網站:
將程序解壓後的ROOT文件夾拷貝到tomcat安裝目錄下的webapps文件夾下(例如:D:\Tomcat7
\webapps\),啓動tomcat
輸入以下地址,如能正常顯示,即表示部署成功
系統管理後臺登錄:http://192.168.11.11:8080/jeeadmin/jspgou/index.do
用戶名:admin
密 碼:123456
點擊上圖右上角瀏覽器圖標訪問網站首頁:
Tomcat
它是一套用來運行java web應用程序的服務環境。java web應用程序的源碼文件通常是*.jsp。JSP的服務
環境由jdk和tomcat兩個軟件組成。
11/24
軟件的部署很簡單,因爲只需要將下載好的jdk和tomcat軟件包解壓到系統中指定的目錄下,並配置環境變
量文件,啓動tomcat的服務就可以了。後期的重點是在於如何用tomcat去發佈jsp網站應用程序。其發佈
網站的方法跟apache和nginx有點相似。
Tomcat
被稱作JAVA容器,WEB容器,WEB中間件
Tomcat,Resin,JBOSS(redhat),WebSphere(IBM),Weblogic(oracle)
訪問web應用的流程:
客戶端瀏覽器 ---〉 web服務器(apache/nginx/tomcat)---〉網站文件
容器:用來容納(裝)東西(信息)的器具。 nginx(apache) 80 |
web中間件 |
---|
網站 1.有沒有用過web容器? 2.你用過什麼web容器 ? 3.你上家公司有沒有用tomcat? 4.什麼是web容器(web中間件) 5.nginx、apache、tomcat的區別? tomcat官網: http://tomcat.apache.org/ jdk官網: http://www.oracle.com/technetwork/java/javase/downloads/index.html 方案一(單機部署): Tomcat 方案二(動靜分離集羣): Nginx+Tomcat 實現動靜分離,即html靜態網頁由apache或nginx處理,jsp動 態網頁由tomcat服務處理 方案三:用nginx實現tomcat羣集的負載均衡 Nginx |
+-----------------------------+ |
---|
Tomcat1 Tomcat2 Tomcat3
2000
物理機器的配置
幾臺機器
建議使用Nginx和Tomcat配合,Nginx處理靜態,Tomcat處理動態程序
方案三中後端Tomcat可以運行在單獨的主機,也可以是同一臺主機上的多實
例
12/24
靜態元素
html css js 各種圖片
動態元素
php java python
能跟數據庫和服務器進行數據交互的代碼
一、Tomcat Http Server
jdk的包有兩種:
- .gz .bz2 .zip 直接解壓 放到安裝位置 就能用
- .bin 直接執行 會解壓出來一個目錄 放到安裝位置 就能用
一般放到/usr/local/下面 改環境變量
- 部署JAVA環境
tar xf jdk-8u91-linux-x64.tar.gz -C /usr/local 將jdk解壓到/usr/local目錄
方式1(首選):
ln -s /usr/local/jdk1.8.0_91 /usr/local/java
方式2(備選):
mv /usr/local/jdk1.8.0_91 /usr/local/java
修改環境變量:
方式1(首選):自己創建一個啓動腳本vim /etc/profile.d/jdk.sh
JAVA_HOME=/usr/local/java
PATH=$JAVA_HOME/bin:$PATH
export JAVA_HOME PATH
方式2(備選):寫到系統自帶的啓動腳本內vim /etc/profile
JAVA_HOME=/usr/local/java
PATH=$JAVA_HOME/bin:$PATH
export JAVA_HOME PATH
使上設置的腳本立即生效:
source /etc/profile.d/jdk.sh 或 source /etc/profile
echo $PATH
測試java環境:env |grep JAVA 選做,查看的結果如下
JAVA_HOME=/usr/local/java
java -version 必做,只要看到如下信息,就說明jdk已經配置好了
java version "1.8.0_91"
Java(TM) SE Runtime Environment (build 1.8.0_91-b14)
Java HotSpot(TM) 64-Bit Server VM (build 25.91-b14, mixed mode)
-----
可以直接把openjdk刪除
#yum erase $(rpm -qa | grep jdk) -y - 安裝Tomcat:(和jdk的方式1一模一樣,解壓改名就能用)
首先,解壓tomcat到指定的目錄中。
13/24tar xf apache-tomcat-7.0.34.tar.gz -C /usr/local/
ln -s /usr/local/apache-tomcat-7.0.34 /usr/local/tomcat
然後,定義Tomcat所需環境變量:
vim /etc/profile.d/tomcat.sh //定義Tomcat環境變量
CATALINA_HOME=/usr/local/tomcat //Tomcat安裝目錄(基準、工作)
export CATALINA_HOME加載環境變量文件
source /etc/profile.d/tomcat.sh
啓動Tomcat
/usr/local/tomcat/bin/startup.sh //啓動tomcat
Using CATALINA_BASE: /usr/local/tomcat
Using CATALINA_HOME: /usr/local/tomcat
Using CATALINA_TMPDIR: /usr/local/tomcat/temp
Using JRE_HOME: /usr/java/jdk1.7.0_11
Using CLASSPATH: /usr/local/tomcat/bin/bootstrap.jar:/usr/local/tomcat/bin/tomcat-juli.jarnetstat -tnlp |grep java
tcp 0 0 ::ffff:127.0.0.1:8005 ::: LISTEN 6191/java
tcp 0 0 :::8009 ::: LISTEN 6191/java
tcp 0 0 :::8080 :::* LISTEN 6191/java
/usr/local/tomcat/bin/shutdown.sh //關閉tomcat
關於tomcat端口:8080 8005 8009
Tomcat服務器通過Connector連接器組件與客戶程序建立連接,Connector組件負責接收客戶的請求,以
及把Tomcat服務器的響應結果發送給客戶。默認情況下,Tomcat在server.xml中配置了兩種連接器:
第一個連接器監聽8080端口,負責建立HTTP連接。在通過瀏覽器訪問Tomcat服務器的Web應用
時,使用的就是這個連接器。
第二個連接器監聽8009端口,負責和其他的HTTP(apache)服務器建立連接。在把Tomcat與其他
HTTP服務器集成時,就需要用到這個連接器。
8005是tomcat本身的端口
-
測試
http://192.168.2.251:8080/
tomcat目錄結構:
[root@tomcat webapps]# tree -L 1 /usr/local/tomcat/ 說明:-L 是level等級的縮寫
/usr/local/tomcat/ #tomcat的工作目錄
├── bin #啓動關閉命令
├── conf #配置文件
├── lib
├── LICENSE
├── logs #日誌 catalina.out
├── NOTICE
├── RELEASE-NOTES
├── RUNNING.txt
├── temp
├── webapps #存網站(project--目錄)的目錄 默認網站爲ROOT
14/24
└── work
隨堂練習:在/usr/local/tomcat/webapps/ROOT目錄中生成一個a.html的靜態網頁。
echo '<meta http-equiv="Content-Type" content="text/html; charset=utf-8">' > /usr/local/
tomcat/webapps/ROOT/b.html
echo "當前日期:$(date)" >> /usr/local/tomcat/webapps/ROOT/b.html
win7/10瀏覽器訪問測試:192.168.11.11:8080/a.html以下是部署jsp帶數據庫的網站應用程序jspgou。
二、安裝MySQL(略)
#yum install mariadb mariadb-server -y
#systemctl start mariadb && systemctl enable mariadb
三、部署jspgouls /usr/local/tomcat/webapps/ //默認網站的基目錄base
docs examples host-manager manager ROOT
ls /usr/local/tomcat/webapps/ROOT //默認網站的主目錄
1.創建數據庫:
在mysql數據庫中創建jspgou數據庫(推薦使用此數據庫名,否則參照第三條修改對應的數據庫鏈接信息),
字符集爲utf-8
mysql -e 'create database jspgou CHARACTER SET = utf8;show databases;'
2.更改數據庫鏈接:
wget http://bbs.jeecms.com/fabu/62873.jhtml
unzip jspgouV6-ROOT.zip
ls ROOT DB
\cp -Rv ROOT /usr/local/tomcat/webapps/
Q:jdbc是什麼?ODBC是什麼?
A:jdbc是java數據庫連接(java database connection)的縮寫。是用java訪問數據庫的接口驅動程序。
odbc是開放數據庫連接(open database connection)的縮寫。odbc的配置在win7/10系統控制面板的"管
理工具"中的"數據源(odbc)"功能裏面有。odbc中的驅動程序通常是用戶在系統中安裝了數據庫軟件的服務
器或客戶端軟件自動生成的。
程序包內ROOT/WEB-INF/config/jdbc.properties文件第20行左右
vim /usr/local/tomcat/webapps/ROOT/WEB-INF/config/jdbc.properties 修改如下內容
jdbc.url=jdbc:mysql://127.0.0.1:3306/創建好的數據庫名?characterEncoding=UTF-8
jdbc.username=root #在生產環境中必須用普通賬戶
jdbc.password=123
3.導入數據:
將壓縮包內 DB文件中jspgou.sql文件導入至創建好的jspgou數據庫中,如導入中出現執行sql語句過長問
題,請修改mysql配置文件my.cnf中max_allowed_packet參數爲64m,默認爲1m
導入數據庫時如果報錯:把所有datetime類型的字段默認值改成CURRENT_TIMESTAMP
注意:如果用Mariadb數據庫不會出現如上錯誤,可以直接導入
[root@tomcat DB]# mysql -uroot -p123 -D jspgou < jspgou.sql
4.部署網站:
15/24
將程序解壓後的ROOT文件夾拷貝到tomcat安裝目錄下的webapps文件夾下(例如:D:\Tomcat7
\webapps\),啓動tomcat
輸入以下地址,如能正常顯示,即表示部署成功
系統管理後臺登錄:http://192.168.11.11:8080/jeeadmin/jspgou/index.do
用戶名:admin
密 碼:123456
點擊上圖右上角瀏覽器圖標訪問網站首頁:
tomcat多實例部署
Tomcat 一機多實例
多實例運行不同的應用(類似虛擬主機)
多實例運行相同的應用(實現負載均衡,支持高併發處理,session問題)
16/24
tomcat單機多實例配置
CATALINA_BASE:
instance1: /usr/local/tomcat/instance1/{conf,logs,temp,work} 8081 8091
instance2: /usr/local/tomcat/instance2/{conf,logs,temp,work} 8082 8092
instance3: /usr/local/tomcat/instance3/{conf,logs,temp,work} 8083 8093
webapps:
拷貝原來單實例的webapps到/下
webapps/ROOT - 以單實例爲基礎
[root@www ~]# /usr/local/tomcat/bin/shutdown.sh - 配置多實例目錄
分別創建目錄instance1 instance2 instance3,拷貝原來的/usr/local/tomcat下的conf,log,temp,work到3
個目錄下
mkdir -v /usr/local/tomcat/instance{1..3}
cp -av /usr/local/tomcat/{conf,logs,temp,work} /usr/local/tomcat/instance1/
cp -av /usr/local/tomcat/{conf,logs,temp,work} /usr/local/tomcat/instance2/
cp -av /usr/local/tomcat/{conf,logs,temp,work} /usr/local/tomcat/instance3/
tree -d -L 2 /usr/local/tomcat/ 顯示結果如下
/usr/local/tomcat/
├── bin
├── instance1
│ ├── conf
│ ├── logs
│ ├── temp
│ └── work
├── instance2
│ ├── conf
│ ├── logs
│ ├── temp
│ └── work
├── instance3
│ ├── conf
│ ├── logs
│ ├── temp
│ └── work
└── lib - 配置實例server.xml
Q:什麼是html?什麼是xml?
A:html是超文本標記語言(hyper text markup language)。xml是可擴展標記語言。tomcat的配置文件
通常是xml格式的文本。
[root@www ~]# vim /usr/local/tomcat/instance1/conf/server.xml
<!-- 以!--開頭的代碼是註釋內容 -->
<!-- <Connector port="8009" protocol="AJP/1.3" redirectPort="8443" /> -->
<Server port="8091" shutdown="SHUTDOWN"> //修改8005(第22行)
<Connector port="8081" protocol="HTTP/1.1" //刪掉8080(第71行)和8009(第93行)的配置,添加此
配置
17/24
connectionTimeout="20000"
redirectPort="8443" />
<Host name="localhost" appBase="/webapps" //修改網站基準目錄(第125行),後期要將jsp項目的
ROOT目錄複製到/webapps目錄中
unpackWARs="true" autoDeploy="true">
......
jsp網站項目的發佈方法(必知):
方法一:將軟件開發部給你的.jar包複製到tomcat的webapps目錄中,tomcat軟件會自動發佈這個jsp
項目。
方法二:將軟件開發部給你的jsp的.tar.gz或*.zip文件解壓,將解壓後的ROOT目錄複製到webapps目
錄中的某個子目錄中。在訪問這個jsp項目時,在網址中輸入子目錄的名稱即可進入這個jsp的網站。 -
腳本內容
[root@www ~]# vim /usr/local/tomcat/instance1/ins1.sh
export JAVA_OPTS='-Xms64m -Xmx128m'
手寫腳本: vim /usr/local/tomcat/instance1/ins1.sh 腳本內容如下
#!/bin/bash
. /etc/init.d/functions
export CATALINA_BASE="/usr/local/tomcat/instance1"
case "$1" in
start)
$CATALINA_HOME/bin/startup.sh;;
stop)
$CATALINA_HOME/bin/shutdown.sh;;
restart)
$CATALINA_HOME/bin/shutdown.sh
sleep 5
$CATALINA_HOME/bin/startup.sh;;
18/24
esac
export JAVA_OPTS='-Xms64m -Xmx128m'
添加可執行權限:chmod -v +x /usr/local/tomcat/instance1/ins1.sh
複製啓動腳本:
cp -av /usr/local/tomcat/instance1/ins1.sh /usr/local/tomcat/instance1/ins2.sh 複製後請修改腳本
文件中的 CATALINA_BASE容器實例路徑
cp -av /usr/local/tomcat/instance1/ins1.sh /usr/local/tomcat/instance1/ins3.sh 同上 -
啓動測試
[root@www ~]# /usr/local/tomcat/instance1/ins1.sh start 然後用netstat -atunlp| grep :80
[root@www ~]# /usr/local/tomcat/instance2/ins2.sh start
[root@www ~]# /usr/local/tomcat/instance3/ins3.sh start
[root@www ~]# ss -tnlp |grep :80 |column -t
LISTEN 0 100 :::8081 ::: users:(("java",pid=7288,fd=48))
LISTEN 0 100 :::8082 ::: users:(("java",pid=7468,fd=48))
LISTEN 0 100 :::8083 ::: users:(("java",pid=7496,fd=48))
LISTEN 0 1 ::ffff:127.0.0.1:8091 ::: users:(("java",pid=7288,fd=61))
LISTEN 0 1 ::ffff:127.0.0.1:8092 ::: users:(("java",pid=7468,fd=61))
LISTEN 0 1 ::ffff:127.0.0.1:8093 ::: users:(("java",pid=7496,fd=61))
<Server port="8091" 管理實例端口
<Connector port="8081" protocol="HTTP/1.1 提供web服務端口
<Connector port="8009" protocol="AJP/1.3" 用於前端如Apache通過AJP方式連接tomcat的端口
19/24
tomcat負載均衡
Nginx配置
[root@www tengine-2.2.0]# ./configure && make && make install
[root@www ~]# vim /usr/local/nginx/conf/nginx.conf
http {
upstream tomcat_pool {
#ip_hash;
server 192.168.122.105:8081 weight=1 max_fails=2 fail_timeout=2;
server 192.168.122.105:8082 weight=1 max_fails=2 fail_timeout=2;
server 192.168.122.105:8083 weight=1 max_fails=2 fail_timeout=2;
server 192.168.122.105:8084 weight=1 max_fails=2 fail_timeout=2;
}
server {
location / {
proxy_pass http://tomcat_pool;
proxy_redirect off;
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
}
}
}
session(會話)暫沒有使用共享方式,目前採用的會話保持。即將同一個client的訪問始終調度到同一後端實
例。
jvm基礎知識
20/24
Class Loader:
JVM通過模塊將Class文件加載到JVM內存中。
Execution Engine:
執行引擎也叫解釋器,負責解釋命令,提交OS執行。Java的class只在需要的時候才內轉載入內存,並由java虛擬機的執行引擎來執行,而執行引擎從總的來
說主要的執行方式分爲四種,
第一種,一次性解釋代碼,也就是當字節碼轉載到內存後,每次需要都會重新的解析一次,
第二種,即時解析,也就是轉載到內存的字節碼會被解析成本地機器碼,並緩存起來以提高重用性,但是
比較耗內存,
第三種,自適應優化解析,即將java將使用最頻繁的代碼編譯成本地機器碼,而使用不頻繁的則保持字節
碼不變,一個自適應的優化器可以使得java虛擬機在80%-90%的時間裏執行優化過的本地代碼,而只需要
執行10%-20%對性能有影響的代碼。
第四種,一種能夠利用本地方法直接解析java字節碼的芯片。
JNI:
Java Native Interface直接操縱機器硬件,如Java程序驅動打印機。
Stack:
棧是在線程創建時創建,線程結束棧內存也釋放,不存在GC問題。棧內存存儲局部變量、程序運行狀
態、方法返回值等數據。棧中的數據以棧幀存在。棧幀是一個內存區塊,是有關方法和運行期數據的數據
集。當一個方法fun1被調用就產生一個棧幀Frame1,壓入棧中,fun1方法又調用 fun2方法,產生棧幀
Frame2壓入棧。
Heap:
各條線程共享的運行時內存區域,所有類實例和數組對象分配內存的區域,由GC管理。堆可以劃分爲新
生區、養老區和永久區,如下圖。
21/24
新生代:
類在這裏產生和應用,最後被垃圾回收。所有的類在伊甸區被new出來,當伊甸區滿了,GC會對該區不
用的對象銷燬,剩餘有用的轉到倖存區。
老年代:
用於存放生成周期比較長的對象。
永久代:
存放JDK自帶的class,interface。
注:
allocation
美音 /ˌælə'keʃən/
1.n. 配給, 分配, 撥出
2.分配額(或量)native
美音 /'netɪv/
1.adj. 本國的;土著的;與生俱來的;天然的;天賦的
2.n. 本地人;土產;當地居民
garbage
美音 /'ɡɑrbɪdʒ/
22/24
n. 垃圾;廢物
tomcat優化
內存溢出的處理辦法(tomcat內存優化):
Tomcat內存優化主要是對 tomcat 啓動參數優化,我們可以在 tomcat 的啓動腳本 catalina.sh(在此文件
第一行開始添加新的設置即可)中設置 JAVA_OPTS 參數
JAVA_OPTS=”-server -Xms800m -Xmx800m -XX:PermSize=64M
-XX:MaxNewSize=256m -XX:MaxPermSize=128m -Djava.awt.headless=true ”
-server 啓用jdk 的 server 版;
-Xms java虛擬機初始化時的初始堆大小;
-Xmx java虛擬機可使用的最大堆大小;
-XX:PermSize 內存永久保留區域
-XX:MaxPermSize 內存最大永久保留區域(老生代對象能佔用內存的最大值)
-XX:MaxNewSize=size 新生成對象能佔用內存的最大值
注:要加“m”說明是MB,否則就是KB,在啓動tomcat時會報內存不足。
注:永久保存區:
PermGen space的全稱是Permanent Generation space,是指內存的永久保存區域。這一部分用於存放
Class和Meta的信息,Class在被 Load的時候被放入PermGen space區域,它和存放Instance的Heap區域不
同,GC(Garbage Collection)不會在主程序運行期對PermGen space進行清理,所以如果你的APP會LOAD很
多CLASS的話,就很可能出現PermGen space錯誤。這種錯誤常見在web服務器對JSP進行pre compile的時
候。jvm的gc是不會清理PemGen space的,導致內存溢出
常見的內存溢出一般會有下面三種情況:
1.OutOfMemoryError: Java heap space //堆溢出,在JVM中如果98%的時間是用於GC且可用的
Heap size 不足2%的時候將拋出此異常信息
2.OutOfMemoryError: PermGen space //永久保存區域溢出
3.OutOfMemoryError: unable to create new native thread. //當JVM的heap size設置過大時,
thread的創建數量便會減少
解決:
1.調整-Xms -Xmx參數可以解決第一種情況
64位操作系統對堆內存大小無限制
堆的大小可以使用 java -XmxM -version 命令來測試,位置填寫想設置的內存大小。支持的話
會出現jdk的版本號,不支持會報錯。
-Xms -Xmx一般配置成一樣比較好比如set JAVA_OPTS= -Xms1024m -Xmx1024m
注意:java -Xmx***M version 命令來測試的最大堆內存是 -Xmx與 -XX:PermSize的和,比如系統支持
最大的jvm堆大小事1.5G,那 -Xmx1024m -XX:PermSize=768M 是無法運行的
2.加大-XX:PermSize -XX:MaxPermSize來解決第二種情況
3.解決問題3方法如下:
1).如果程序中有bug,導致創建大量不需要的線程或者線程沒有及時回收,那麼必須解決這個bug,修
改參數是不能解決問題的。
2).如果程序確實需要大量的線程,現有的設置不能達到要求,那麼可以通過修改MaxProcessMemory,
23/24
JVMMemory,ThreadStackSize這三個因素,來增加能創建的線程數:
a, MaxProcessMemory 使用64位操作系統
b, JVMMemory 減少JVMMemory的分配 使用tomcat的catalina.sh這裏配置,JAVA_OPTS=-
Xms1024m -Xmx1024m -XX:PermSize=256M -XX:MaxNewSize=512m-XX:MaxPermSize=256m
c, ThreadStackSize 減小單個線程的棧大小
這個異常問題本質原因是:
我們創建了太多的線程,而能創建的線程數是有限制的,導致了異常的發生。
能創建的線程數的具體計算公式如下:
(MaxProcessMemory - JVMMemory - ReservedOsMemory) / (ThreadStackSize) = Number of
threads
MaxProcessMemory 指的是一個進程的最大內存
JVMMemory JVM內存
ReservedOsMemory 保留的操作系統內存
ThreadStackSize 線程棧的大小
在java語言裏, 當你創建一個線程的時候,虛擬機會在JVM內存創建一個Thread對象同時創建一個操
作系統線程,而這個系統線程的內存用的不是JVMMemory,而是系統中剩下的內存(MaxProcessMemory -
JVMMemory - ReservedOsMemory)。由公式得出結論:你給JVM內存越多,那麼你能創建的線程越少,越
容易發生java.lang.OutOfMemoryError: unable to create new native thread。
MaxProcessMemory(Maximum Address Space Per Process):
Operating System Maximum Address Space Per Process
Redhat Linux 32 bit 2 GB
Redhat Linux 64 bit 3 GB
Windows 98/2000/NT/Me/XP 2 GB
JVMMemory: Heap + PermGen
-XX:ThreadStackSize=512 設置線程棧大小,若爲0則使用系統默認值(jdk1.5.0以後默認值爲1M)
==============================================================================
線程池設置:
線程池指定Web請求負載的數量,因此,爲獲得更好的性能這部分應小心處理。可以通過調整連接器屬
性“maxThreads”完成設置。maxThreads的值應該根據流量的大小,如果值過低,將有沒有足夠的線程來
處理所有的請求,請求將進入等待狀態,只有當一個的處理線程釋放後才被處理;如果設置的太大,
Tomcat的啓動將花費更多時間。因此它取決於我們給maxThreads設置一個正確的值。
#vim server.xml
<Connector port="8080" protocol="HTTP/1.1"
maxThreads="500"
connectionTimeout="20000"
redirectPort="8443" />
在上述配置中,maxThreads值設定爲“500”,這指定可以由服務器處理的併發請求的最大數量。如果沒有
指定,這個屬性的默認值爲“200”。任何多出的併發請求將收到“拒絕連接”的錯誤提示,直到另一個處理請
求進程被釋放。錯誤看起來如下,
[ org.apache.tomcat.util.threads.ThreadPool logFull SEVERE: All threads (500) are currently busy, waiting. Increase maxThread
最好使用“Tomcat集羣”的多個實例。也就是說,如果有“1000”請求,兩個Tomcat實例設
置“maxThreads= 500”,而不在單Tomcat實例的情況下設置maxThreads=1000。
24/24
<Connector port="9027"
protocol="HTTP/1.1"
maxHttpHeaderSize="8192"
maxThreads="1000"
minSpareThreads="100"
maxSpareThreads="1000"
minProcessors="100"
maxProcessors="1000"
enableLookups="false"
URIEncoding="utf-8"
acceptCount="1000"
redirectPort="8443"
disableUploadTimeout="true"/>
參數說明:
maxThreads 客戶請求最大線程數
minSpareThreads Tomcat初始化時創建的 socket 線程數
maxSpareThreads Tomcat連接器的最大空閒 socket 線程數
enableLookups 若設爲true, 則支持域名解析,可把 ip 地址解析爲主機名
redirectPort 在需要基於安全通道的場合,把客戶請求轉發到基於SSL 的 redirectPort 端口
acceptAccount 監聽端口隊列最大數,滿了之後客戶請求會被拒絕(不能小於
maxSpareThreads )
connectionTimeout 連接超時
minProcessors 服務器創建時的最小處理線程數
maxProcessors 服務器同時最大處理線程數
URIEncoding URL統一編碼
查看內存設置和使用信息:
[root@nfs conf]# lsof -i:8080
COMMAND PID USER FD TYPE DEVICE SIZE/OFF NODE NAME
java 1903 root 46u IPv6 16003 0t0 TCP *:webcache (LISTEN)
[root@nfs conf]# jmap -heap 1903
打war部署(擴展):
選中eclipse中的jeecms項目,右鍵->Export->WAR file,生成xxx.war
將xxx.war放入本機tomcat安裝目錄下的webapps文件夾中,確保webapps下不包含名爲xxx的文件夾,啓
動tomcat