一、中間鍵產品介紹 目前來說IBM的WebSphere,Oracle的Weblogic占據了市場上java語言Web站點的部分份額,該兩種軟體都是商業化的軟體,由於性能優越,可靠性高等優點應用於大型互聯網公司的Web場景中。 Tomcat自5.x版本以來,其性能上已經得到了大幅度的提升,開放性的架構 ...
一、中間鍵產品介紹
目前來說IBM的WebSphere,Oracle的Weblogic占據了市場上java語言Web站點的部分份額,該兩種軟體都是商業化的軟體,由於性能優越,可靠性高等優點應用於大型互聯網公司的Web場景中。
Tomcat自5.x版本以來,其性能上已經得到了大幅度的提升,開放性的架構和二次開發等特性,可以完全用在訪問量不是很大的生產環境下,目前大多數用於JSP技術開發的電子商務網站基本上都應用了Tomcat。
中間鍵(提供JSP服務的軟體)產品:
- RedHat JBoss
- Oracle Tuxedo
- Oracle Weblogic
- caucho Resin
- IBM WebSphere
- JSP Tomcat
頁面:
- html Apache
- php LAMP LNMP
- jsp Tomcat
二、Tomcat軟體簡介
Tomcat是Apache軟體基金會的Jakarta項目中的一個核心項目,由Apache、Sun和其他一些公司及個人共同開發而成。Tomcat最初是由Sun的軟體構架師詹姆斯·鄧肯·戴維森開發的。後來他將其變為開源項目,並由Sun貢獻給Apache軟體基金會。
三、Tomcat應用場景
Tomcat伺服器是一個免費的開放源代碼的web應用伺服器,屬於輕量級應用伺服器,應用在中小型系統和併發訪問用戶不是很多的場合,是開發和調試JSP頁面的首選,Tomcat也可處理靜態的HTML頁面但是能力不及Apache或Nginx,所以Tomcat通常作為一個servlet和JSP容器,單獨運行在後端。
四、JDK軟體簡介
在安裝Tomcat之前必須先安裝JDK,JDK全稱是Java Development Kit,是SUN公司免費提供的java語言的軟體開發工具包,其中包含Java虛擬機(JVM),編寫好的java源程式經過編譯可生產java位元組碼,只要安裝了JDK,就可以利用JVM解釋這些位元組碼文件,從而保證了Java的跨平臺性。
在平臺相容性方面,JDK作為解釋位元組碼文件並根據此調用操作系統的API實現對應功能的java虛擬機,與操作系統位數密切相關,因此存在不同類型的版本,Tomcat也具有上述特征,CentOS7系統中預設已經安裝了JDK
JDK中的Java組件:
-
javac:編譯器,將尾碼名為.java的源代碼編譯成尾碼名為“.class”的位元組碼
- java:運行工具,運行.class的位元組碼
- jar:打包工具,將相關的類文件打包成一個文件
- javadoc:文檔生成器,從源碼註釋中提取文檔,註釋需匹配規範
- jdb debugger:調試工具
- jps:顯示當前java程式運行的進程狀態
- javap:反編譯程式
- appletviewer:運行和調試applet程式的工具,不需要使用瀏覽器
- javah:從Java類生成C頭文件和C源文件。這些文件提供了連接膠合,使Java和C代碼可進行交互。
- javaws:運行JNLP程式
- extcheck:一個檢測jar包衝突的工具
- apt:註釋處理工具
- jhat:java堆分析工具
- jstack:棧跟蹤程式
- jstat:JVM檢測統計工具
- jstatd:jstat守護進程
- jinfo:獲取正在運行或崩潰的java程式配置信息
- jmap:獲取java進程記憶體映射信息
- idlj:IDL-to-Java編譯器。將IDL語言轉化為java文件
- policytool:一個GUI的策略文件創建和管理工具
- jrunscript:命令行腳本運行
五、安裝Tomcat(主機192.168.200.112)
1、關閉防火牆和安全機制
[root@localhost ~]# systemctl stop firewalld [root@localhost ~]# iptables -F [root@localhost ~]# setenforce 0
2、查看JDK是否安裝
[root@localhost ~]# java -version openjdk version "1.8.0_222" OpenJDK Runtime Environment (build 1.8.0_222-b10) OpenJDK 64-Bit Server VM (build 25.222-b10, mixed mode)
3、卸載用rpm方式安裝的JDK
方法一
[root@localhost ~]# rpm -qa | grep -i openjdk java-1.8.0-openjdk-headless-1.8.0.222.b10-0.el7_6.x86_64 java-1.8.0-openjdk-1.8.0.222.b10-0.el7_6.x86_64 [root@localhost ~]# rpm -e java-1.8.0-openjdk --nodeps //有依賴關係,解除依賴關係後面加 --nodeps [root@localhost ~]# rpm -e java-1.8.0-openjdk-headless [root@localhost ~]# rpm -qa | grep -i openjdk
方法二
[root@localhost ~]# which java /usr/bin/java [root@localhost ~]# rm -rf /usr/bin/java [root@localhost ~]# java -version -bash: /usr/bin/java: 沒有那個文件或目錄
4、安裝JDK
[root@localhost ~]# tar -xf jdk-8u191-linux-x64.tar.gz [root@localhost ~]# mv jdk1.8.0_191/ /usr/local/java //將解壓後的包移動到指定目錄下 [root@localhost ~]# /usr/local/java/bin/java -version //此時只有通過絕對路徑才可以查看java的版本號信息 [root@localhost ~]# vim /etc/profile //修改 export JAVA_HOME=/usr/local/java //設置java的根目錄 export PATH=$PATH:$JAVA_HOME/bin //在PATH環境變數中添加java根目錄下的bin子目錄 [root@localhost ~]# echo $PATH //在未執行修改的腳本時查看PATH變數 /usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/root/bin [root@localhost ~]# source /etc/profile //重置一下腳本 [root@localhost ~]# echo $PATH //再查一遍 /usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/root/bin:/usr/local/java/bin
5、Tomcat安裝
[root@localhost ~]# tar -xf apache-tomcat-8.5.16.tar.gz [root@localhost ~]# mv apache-tomcat-8.5.16 /usr/local/tomcat8 [root@localhost ~]# ls /usr/local/tomcat8/bin bootstrap.jar setclasspath.sh catalina.bat shutdown.bat catalina.sh shutdown.sh catalina-tasks.xml startup.bat commons-daemon.jar startup.sh (啟動文件) commons-daemon-native.tar.gz tomcat-juli.jar configtest.bat tomcat-native.tar.gz configtest.sh tool-wrapper.bat daemon.sh tool-wrapper.sh digest.bat version.bat digest.sh version.sh setclasspath.bat //.bat Windows版本 //.sh Linus版本
6、啟動
[root@localhost ~]# /usr/local/tomcat8/bin/startup.sh Using CATALINA_BASE: /usr/local/tomcat8 Using CATALINA_HOME: /usr/local/tomcat8 Using CATALINA_TMPDIR: /usr/local/tomcat8/temp Using JRE_HOME: /usr/local/java Using CLASSPATH: /usr/local/tomcat8/bin/bootstrap.jar:/usr/local/tomcat8/bin/tomcat-juli.jar Tomcat started. [root@localhost ~]# netstat -anpt | grep :8080 tcp6 0 0 :::8080 :::* LISTEN 3226/java
7、測試
六、設置Tomcat網頁存放位置(主機192.168.200.112)
[root@localhost ~]# mkdir -p /web/webapp/ //創建存放網頁的目錄 [root@localhost ~]# vim /web/webapp/index.jsp //添加要存放的網頁 <%@ page language="java" import="java.util.*" pageEncoding="UTF-8"%> <html> <head> <title>JSP test2 page</title> </head> <body> <% out.println("Welcome to test site,http://www.test2.com");%> </body> </html> [root@localhost ~]# vim /usr/local/tomcat8/conf/server.xml <Host name="localhost" appBase="webapps" unpackWARs="true" autoDeploy="true"> <Context docBase="/web/webapp" path="" reloadable="flash"></Context> 註釋:docBase="/web/webapp" //web應用的文檔基準目錄 path=" " //設置預設"類" reloadable="flase" //設置監視"類"是否變化 [root@localhost ~]# /usr/local/tomcat8/bin/shutdown.sh //關一下機 Using CATALINA_BASE: /usr/local/tomcat8 Using CATALINA_HOME: /usr/local/tomcat8 Using CATALINA_TMPDIR: /usr/local/tomcat8/temp Using JRE_HOME: /usr/local/java Using CLASSPATH: /usr/local/tomcat8/bin/bootstrap.jar:/usr/local/tomcat8/bin/tomcat-juli.jar [root@localhost ~]# /usr/local/tomcat8/bin/startup.sh //重新開 Using CATALINA_BASE: /usr/local/tomcat8 Using CATALINA_HOME: /usr/local/tomcat8 Using CATALINA_TMPDIR: /usr/local/tomcat8/temp Using JRE_HOME: /usr/local/java Using CLASSPATH: /usr/local/tomcat8/bin/bootstrap.jar:/usr/local/tomcat8/bin/tomcat-juli.jar Tomcat started.
測試
七、nginx負載均衡配置(主機192.168.200.111)
確保全裝了nginx,80埠已經打開,直接修改配置文件
[root@localhost ~]# vim /usr/local/nginx/conf/nginx.conf upstream tomcat_server { server 192.168.200.112:8080 weight=1; } server { listen 80; server_name localhost; location / { rewrite ^(.*)$ https://$host$1 permanent; } location ~ \.jsp$ { proxy_pass http://tomcat_server; } charset utf-8; [root@localhost ~]# nginx -t nginx: the configuration file /usr/local/nginx/conf/nginx.conf syntax is ok nginx: configuration file /usr/local/nginx/conf/nginx.conf test is successful [root@localhost ~]# nginx nginx: [emerg] bind() to 0.0.0.0:80 failed (98: Address already in use) nginx: [emerg] bind() to 0.0.0.0:80 failed (98: Address already in use) nginx: [emerg] bind() to 0.0.0.0:80 failed (98: Address already in use) nginx: [emerg] bind() to 0.0.0.0:80 failed (98: Address already in use) nginx: [emerg] bind() to 0.0.0.0:80 failed (98: Address already in use) nginx: [emerg] still could not bind() [root@localhost ~]# nginx -s reload
測試