tomca部署及jspgou上線

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的包有兩種:

  1. .gz .bz2 .zip 直接解壓 放到安裝位置 就能用
  2. .bin 直接執行 會解壓出來一個目錄 放到安裝位置 就能用
    一般放到/usr/local/下面 改環境變量
  1. 部署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

  2. 安裝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.jar

    netstat -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本身的端口

  1. 測試
    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
    三、部署jspgou

    ls /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的包有兩種:

  1. .gz .bz2 .zip 直接解壓 放到安裝位置 就能用
  2. .bin 直接執行 會解壓出來一個目錄 放到安裝位置 就能用
    一般放到/usr/local/下面 改環境變量
  1. 部署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

  2. 安裝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.jar

    netstat -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本身的端口

  1. 測試
    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
    三、部署jspgou

    ls /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的包有兩種:

  1. .gz .bz2 .zip 直接解壓 放到安裝位置 就能用
  2. .bin 直接執行 會解壓出來一個目錄 放到安裝位置 就能用
    一般放到/usr/local/下面 改環境變量
  1. 部署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

  2. 安裝Tomcat:(和jdk的方式1一模一樣,解壓改名就能用)
    首先,解壓tomcat到指定的目錄中。
    13/24

    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.jar

    netstat -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本身的端口

  1. 測試
    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
    三、部署jspgou

    ls /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

  2. 以單實例爲基礎
    [root@www ~]# /usr/local/tomcat/bin/shutdown.sh
  3. 配置多實例目錄
    分別創建目錄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
  4. 配置實例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的網站。
  5. 腳本內容
    [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 同上

  6. 啓動測試
    [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

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章