Ubuntu 18服務器配置jdk 11和Tomcat 9

一、Ubuntu 18服務器配置jdk 11

1.1 jdk版本選擇

JDK8 終止更新,JDK9, 10都是短期支持版本,只有最新的JDK11纔是一個長期支持版本,所以大家直接用JDK11即可。

Oracle 將發佈兩個不同版本,分別爲 Oracle JDK 和 OpenJDK 「除了所附帶的許可文件不一樣,剛發佈的版本幾乎完全相同」。

  • 對於 Oracle JDK 來說,支持 BCL 協議,開發人員可以免費使用,但不能用於生產,如果全額付費的話,可支持到 2026 年 9 月。
  • 對於 OpenJDK 來說,支持 GPL 協議「一般只支持到發佈的前 6 個月內」,可以用於公司使用。

開源選擇就是OpenJDK了,以後商務及開源的區別會越來越明顯。此外,Android已開始採用OpenJDK。

參考jdk各個版本的區別介紹:https://www.jianshu.com/p/38985b61ea83

1.2 JDK 11配置

(1)將下載的壓縮包移動到用戶主文件夾,解壓縮,並移動到/usr/java目錄下。

tar -zxvf jdk-11.0.1_linux-x64_bin.tar.gz
sudo mkdir /usr/java
sudo mv jdk-11.0.1_linux-x64_bin /usr/java

 (2)JDK 11 修需要配置的內容如下:

JAVA_HOME jdk目錄

Path %JAVA_HOME%\bin;

Linux打開環境變量方法:

(1)用戶主目錄下的配置文件,該方式添加的變量只對當前用戶有效:沒有gedit,肯定有vim或vi。

sudo gedit ~/.bashrc

sudo gedit ~/.profile

export JAVA_HOME=/usr/java/jdk-11.0.1 
export PATH=${JAVA_HOME}/bin:$PATH

環境變量生效:

source~/.profile

source ~/.bashrc 

(2)系統目錄下的配置文件

sudo gedit /etc/profile 

source /etc/profile 

同上述用法。

sudo gedit /etc/environment

找到以下的 PATH 變量: 
PATH="<......>" 
修改該 PATH 變量,在其中加入自己的path即可,例如: 
PATH="<......>:your path1:your path2 …" 
各個path之間用冒號分割。該文件也是重啓生效,影響所有用戶。 注意這裏不是添加export PATH=… 。 

(3) 終端添加臨時環境變量

sudo export PATH="$PATH:your path1:your path2 …" 
這種方式變量立即生效,但用戶註銷或系統重啓後設置變成無效,適合臨時變量的設置。 

注:

(1)JDK11不需要設置jre環境變量,JRE包含在JDK中,另外如果有需求的話(比如運行在JAVA虛擬機的app需要指定jre路徑),JDK專門提供工具jlink用於在JDK中提取JRE。也可以單獨再下載一個jre更方便版本管理(推薦穩定版的jre8)。

(2)實際上,JDK 1.4之前版本的JDK編譯和運行才需要設置CLASSPATH環境變量,但是1.5及以後的版本都不需要配置。

.;%JAVA_HOME%\lib;%JAVA_HOME%\lib\tools.jar

 dt.jar和tools.jar位於:{Java_Home}/lib/下,而rt.jar位於:{Java_Home}/jre/lib/下,其中:

rt.jar是JAVA基礎類庫,也就是你在java doc裏面看到的所有的類的class文件;dt.jar是關於運行環境的類庫;

tools.jar是工具類庫,編譯和運行需要的都是toos.jar裏面的類,分別是sun.tools.java.*; sun.tols.javac.*。

1. rt.jar
    rt.jar 默認就在Root Classloader的加載路徑裏面的,而在Claspath配置該變量是不需要的;同時jre/lib目錄下的

    其他jar:jce.jar、jsse.jar、charsets.jar、resources.jar都在Root Classloader中

2. tools.jar

    tools.jar 是系統用來編譯一個類的時候用到的,即執行javac的時候用到

    javac XXX.java

    實際上就是運行

    java -Calsspath=%JAVA_HOME%\lib\tools.jar xx.xxx.Main XXX.java

    javac就是對上面命令的封裝 所以tools.jar 也不用加到classpath裏面

3. dt.jar
    dt.jar是關於運行環境的類庫,主要是swing的包   在用到swing時最好加上。

二、Ubuntu 18服務器配置Tomcat 9

2.1 Tomcat 配置 

(1)下載Tomcat 9,如上圖所示。

(2)解壓壓縮文件,並移動到/usr/tomcat9

tar -zxvf apache-tomcat-9.0.14.tar.gz
sudo mkdir /usr/tomcat9
sudo mv apache-tomcat-9.0.14 /usr/tomcat9

(3)配置環境變量(好像沒啥用,不配置也能用)

(4)配置腳本文件

tomcat有兩種啓動和關閉方式。

1、catalina.sh

sudo ./bin/catalina.sh start

sudo ./bin/catalina.sh stop

調試

catalina.sh debug

2、startup.sh和shutdown.sh

sudo ./bin/startup.sh

sudo ./bin/shutdown.sh

其中需要修改這幾個腳本文件:

sudo vi ./bin/startup.sh

sudo vi ./bin/shutdown.sh

或者

sudo vi ./bin/startup.sh

好像配置CATALINA_HOME也沒啥用,不配置也能用。

(5)啓動和關閉

啓動和關閉方式如第四步所示,如果不配置腳本,則會提示錯誤。

三、 部署web項目

在Tomcat中部署Java Web應用程序有兩種方式:靜態部署和動態部署。

3.1  靜態部署

靜態部署指的是我們在服務器啓動之前部署我們的程序,只有當服務器啓動之後,我們的Web應用程序才能訪問。

3.1.1 利用Tomcat自動部署(項目直接放入 webapps 目錄中)

這種方式不被推薦,項目不好管理,而且需要鏈接加上項目名才能正常訪問。

1、直接將web項目文件拷貝到webapps目錄下
       可以直接將web項目下WebRoot目錄( 標準web應用根目錄下的所有文件:如果IDE是eclipse,內容默認是WebContent目錄下的所有文件,如果是myeclipse,默認是WebRoot目錄下的所有文件)下所有內容複製到tomcat安裝目錄下的webapps目錄,這個webapps目錄是Tomcat目錄的默認應用目錄,webapps目錄下的每個文件夾都是一個應用可以直接放一個index.html作爲靜態網頁),當tomcat服務器啓動時候,會加載webapps目錄下所有應用。比如一個web項目TT,直接將TT項目的WebRoot目錄下所有內容複製,然後在webapps目錄下新建一個TT目錄,然後將複製的內容粘貼到webapps目錄下新建的TT目錄下。 

或1、將編寫並編譯好的web項目(注意是編譯好的),放入到 webapps 中。

war包的生成:

  • 如果是idea中,使用maven project中的install命令(一般可以先clean一下)
  • 如果是 eclipse,可以將項目打成 war 包放入

2、啓動tomcat服務器(雙擊 bin 目錄下的 startup.bat,啓動服務器)。Tomcat啓動時將自動加載應用。

3、在瀏覽器輸入:http://localhost:8080/項目名/訪問的文件名即可。

        對於webapps這個tomcat默認的應用存放的目錄是可配置的但必須是啓動Tomcat之前才行),打開Tomcat安裝目錄下conf目錄下server.xml文件找到的如下代碼:

 <Host name="localhost"  appBase="webapps"
            unpackWARs="true" autoDeploy="true">

       將appBase修改即可,改寫tomcat的默認應用目錄。比如改變爲webs,那麼啓動Tomcat後立即在tomcat安裝目錄下新建一個叫webs的文件夾作爲tomcat 應用目錄,原來的部署在webapps目錄下的應用都訪問不到了,比如講web應用複製到webs目錄下才能訪問到。

       這種方式比較簡單,但是web應用程序必須在webapps目錄下。Tomcat的Webapps目錄是Tomcat默認的應用目錄,當服務器啓動時,會加載所有這個目錄下的應用。

注: Web應用以.war文件的形式部署

       將JSP程序打包成一個war包放在目錄下,服務器會自動解開這個war包,並在這個目錄下生成一個同名的文件夾。一個war包就是有特性格式的jar包,它是將一個Web程序的所有內容進行壓縮得到。

打包請參考如下步驟: 
    1、打開命令提示符(cmd) 
    2、設置jdk環境變量  
    3、在命令提示符中進入項目文件夾F:/PetWeb後,鍵入如下命令:jar cvf Pet.war */ .   (注意最後有個“. ”)。這樣在F:/PetWeb下應該有Pet.war文件。 (也可以打包到指定的地方,命令如下:jar cvf d:/Pet.war */ . 

       部署Pet.war文件非常簡單,將剛纔xml文件中的docBase ="F:/PetWeb" 更改爲docBase ="F:/Pet.war" 或者直接將其拷貝到webapps目錄下就可以。然後重新啓動服務器就可以將Pet.war部署爲一個Web應用程序了。服務器將Pet.war文件解開,並且在webapps下面又生成了一個Pet文件夾,然後把Pet.war的內容拷貝到裏面去了。我們可以通過以下方式取消自動解壓縮,將xml配置文件中的unpackWAR 屬性設置爲"false" 即可。

3.1.2 修改 conf/server.xml 文件(官方不推薦)

在Tomcat的配置文件中,一個Web應用就是一個特定的Context,可以通過在server.xml中新建Context裏部署一個JSP應用程序。這種方式可以不必將web目錄拷貝到webapps下,直接在當前目錄即可部署。方法如下:

1、打開tomcat下conf/server.xml(也可以修改默認端口號等),在<Host> </Host>標籤節點之間輸入項目配置信息

<Context path="/WebProject" docBase="D:/WebProject" reloadable="true" workDir ="D:/temp" />

  • path:瀏覽器訪問時的路徑名(虛擬路徑)。是訪問時的根地址,表示訪問的路徑:http://localhost:8080/WebProjec/
  • docBase:web項目的WebRoot所在的路徑,注意是WebRoot的路徑(物理路徑),不是項目的路徑。其實也就是編譯後的項目。表示應用程序的路徑,注意斜槓的方向“/”。 docBase可以使用絕對路徑,也可以使用相對路徑,相對路徑相對於webapps。
  • workdir:表示緩存文件的放置地址。工作目錄,存放運行時與工程相關的文件
  • reloadble:設定項目有改動時,tomcat是否重新加載該項目。表示可以在運行時在classes與lib文件夾下自動加載類包。其中reloadable="false"表示當應用程序 中的內容發生更改之後服務器不會自動加載,這個屬性在開發階段通常都設爲true,方便開發,在發佈階段應該設置爲false,提高應用程序的訪問速度

    爲true時,支持熱部署,會自動檢測應用程序的/WEB-INF/lib 和/WEB-INF/classes目錄的變化,自動裝載新的應用程序。
    antiResourceLocking和antiJARLocking: 熱部署是需要配置的參數,默認false避免更新了某個webapp,有時候Tomcat並不能把舊的webapp完全刪除,通常會留下WEB-INF/lib下的某個jar包,必須關閉Tomcat才能刪除,這就導致自動部署失敗。設置爲true,Tomcat在運行對應的webapp時,會把相應的源文件和jar文件複製到一個臨時目錄裏。

2、雙擊 startup.bat,啓動 tomcat 服務器,然後在瀏覽器輸入訪問的項目名稱路徑

3.1.3 增加自定義web部署文件(推薦使用,不需要重啓Tomcat )

        以上兩種方法,Web應用被服務器加載後都會在Tomcat的conf\catalina\localhost目錄下生成一個XML文件,其內容如下:
<Context path="/admin" docBase="${catalina.home}/server/webapps/admin" debug="0" privileged="true"></Context>  

       這種方式和方法2差不多,但不是在Server.xml文件中添加Context標籤,而是在$CATALINA_HOME/conf /Catalina/localhost中添加一個xml文件,如Pet.xml。在Tomcat安裝目錄conf/Catalina /localhost下,裏面有Tomcat自帶的三個應用,隨意複製其中的一個XML文件,然後修改docbase指向你自己的應用程序,並把文件名改名,各參數參見方法2中的<Context>標籤的參數,或者你也可以自己新建一個XML文件。(注意此文件名將作爲Context中的path屬性值,不管文件裏的path屬性值如何設置也是無效的 ),將以下內容複製過去,修改相應路徑即可。

1、進入到conf\Catalina\localhost 目錄,新建一個 項目名.xml 文件

2、在 那個新建的 xml 文件中,增加下面配置語句(和上面的是一樣的,但是不需要 path 配置,加上也沒什麼用)

<Context  docBase="D:/WebProject" reloadable="true" />

3、在瀏覽器輸入路徑:localhost:8080/xml文件名/訪問的文件名 

說明Catalina\localhost目錄tomcat下載下來默認是沒有的,首次啓動會自動創建,也可以手動創建;配置中去掉path屬性,因爲配了也沒用,訪問項目時的根路徑只取決於XML文件的名稱;如果沒有WebContent目錄,內容直接放在項目根目錄下,那這個xml文件按理就需要命名爲“.xml”,要是人爲這麼命名,操作系統是不允許的,但是用tomcat插件部署確可以做到,比較神奇。

總結:

①、第一種方法比較普通,但是我們需要將編譯好的項目重新 copy 到 webapps 目錄下,多出了兩步操作

②、第二種方法直接在 server.xml 文件中配置,但是從 tomcat5.0版本開始後,server.xml 文件作爲 tomcat 啓動的主要配置文件,一旦 tomcat 啓動後,便不會再讀取這個文件,因此無法再 tomcat 服務啓動後發佈 web 項目

③、第三種方法是最好的,每個項目分開配置,tomcat 將以\conf\Catalina\localhost 目錄下的 xml 文件的文件名作爲 web 應用的上下文路徑,而不再理會 <Context>中配置的 path 路徑,因此在配置的時候,可以不寫 path。

而且不需要修改tomcat默認配置,並且如果想取消部署,直接刪除xml配置文件即可。

④、種方法有個優點,可以定義別名。服務器端運行的項目名稱爲path,外部訪問的URL則使用XML的文件名。這個方法很方便的隱藏了項目的名稱,對一些項目名稱被固定不能更換,但外部訪問時又想換個路徑,非常有效。

種還有優點,可以定義一些個性配置,如數據源的配置等。

⑤、Tomcat中的Context元素代表一個web應用,運行在某個特定的虛擬主機上。一個Host元素中嵌套任意多的Context元素。每個Context的路徑必須是惟一的,由path屬性定義。另外,你必須定義一個context路徑長度爲0的Context,這個Context稱爲該虛擬主機的缺省web應用,用來處理那些不能匹配任何Context的Context路徑的請求

通常我們使用第三種方法。

注意:刪除一個Web應用同時也要刪除webapps下相應的文件夾中內容,配置文件server.xml中相應的Context,還要將Tomcat的conf\catalina\localhost目錄下相應的xml文件刪除。否則Tomcat仍會按照配置去加載。

3.1.4 配置 conf/context.xml

但 tomcat 5.5之後獨立出了context.xml,並且官方不再提倡修改server.xml。打開conf/context.xml可以看到裏面已經配置了一個Context。如果一個Tomcat只配置一個Web應用程序, 則可以直接修改這裏的代碼:

<Context path="/hello" docBase="war包解壓路徑" reloadable="true" privileged="true">
    <WatchedResource>WEB-INF/web.xml</WatchedResource>
    <WatchedResource>${catalina.base}/conf/web.xml</WatchedResource>
</Context>

3.2 動態部署

動態部署是指可以在服務器啓動之後部署web應用程序,而不用重新啓動服務器

3.2.1 在 http://localhost:8080 裏管理應用並動態發佈

       動態部署要用到服務器提供的manager.war文件,如果 在$CATALINA_HOME/webapps/下沒有該文件,你必須去重新下載tomcat,否則不能完成以下的功能。要想使用該管理程序必須首先編輯$CATALINA_HOME/conf/tomcat-users.xml文件,內容如下:

<tomcat-users> 
<role rolename="tomcat"/> 
<role rolename="role1"/> 
<role rolename="manager"/> 
<user username="coresun" password="coresun" roles="manager"/> 
<user username="tomcat" password="tomcat" roles="tomcat"/> 
<user username="both" password="tomcat" roles="tomcat,role1"/> 
<user username="role1" password="tomcat" roles="role1"/> 
</tomcat-users>

然後在瀏覽器中鍵入如下地址:http://localhost:8080/ ,應該看到一個加菲貓了吧。點擊左邊的Tomcat Manager鏈接,提示輸入用戶名和密碼,本文都是coresun ,然後可以看到以下頁面:

(1)Context Path(option): 中輸入/Pet
(2)XML Configration file URL 中要指定一個.xml文件,比如我們在F:/下建立一個Pet.xml文件,內容如下:<Context  reloadable ="false" 。docBase 不用寫了,因爲要在下一個文本框中填入。或者更簡單點,這個文本框什麼都不填。
(3)WAR or Directory URL: 中鍵入F:/PetWet或者F:/Pet.war都可以,然後點擊Deploy按鈕,看看上面是不是已經看到了你web應用程序,名字就是你Context Path(option):中的名字。
(4)如果你部署.war文件還有更加簡單的方式,下面還有個Select WAR file upload 點擊瀏覽選擇.war文件,然後點擊Deploy也可以。

讓tomcat只運行conf/server.xml中指定的web應用

可以有以下2種辦法:

實現一: 

1)將要部署的WEB應用放在webapps以外的路徑, 並在server.xml相應的Context  中的docBase 指定. 

2)刪除webapps中的所有文件夾, 以及conf/catalina/localhost下所有xml文件. 
注: webapps是server.xml中的Host  元素的appBase 屬性的值.

實現二: 

修改server.xml中Host  元素的屬性, 添加或修改: deployXML ="false" deployOnStartup ="false" autoDeploy="false"

含義: 
     deployXML ="false" : 不部署conf/catalina/localhost下的xml相應的WEB應用

     deployOnStartup ="false" :tomcat啓動時, 不部署webapps下的所有web應用

     autoDeploy ="false"  :避免tomcat在掃描改動時, 再次把webapps下的web應用給部署進來.

注:

Tomcat中webapps目錄下不能直接存放網頁格式的文件,否則無法訪問到該文件,必須有子目錄才能訪問該網頁文件。
例如:我們直接將index.html放在webapps目錄中,通過瀏覽器http://localhost:8080/index.html 是無法訪問到index.html的。而必須要webapps/petweb/index.html纔可以通過http://localhost:8080/petweb/index.html 訪問到index.html頁面。

3.3 注意

       配置war包名稱。默認的war包名是構件id加上版本號。如果要改成其他名字可以在pom.xml的<build>標籤下加上<finalName>name</finalName> 其中填寫的name就是最終生成的war包名,如此例子下爲name.war

       在windows服務器上將tomcat註冊成系統服務。用命令行窗口進入到tomcat bin目錄下,這個目錄下有個service.bat文件,這個文件就是爲了將tomcat註冊成系統服務準備的。執行
service.bat install Tomcat8 後面的Tomcat8是服務的名稱,可以自己取。如果取消服務,可以
service.bat remove Tomcat8。註冊成系統服務後就可以用net start Tomcat8和net stop Tomcat8來啓動或關閉Tomcat。

三、結果

windows系統的配置更爲簡單,只需要解壓,設置環境變量即可。

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