天天看點

Centos7 Tomcat9 安裝筆記

版權聲明:本文由董可倫首發于https://dongkelun.com,非商業轉載請注明作者及原創出處。商業轉載請聯系作者本人。 https://blog.csdn.net/dkl12/article/details/84140327

我的原創位址:

https://dongkelun.com/2018/10/23/tomcatConf/

前言

有兩個月沒更新部落格,部分原因是這兩月的工作一直沒寫Spark程式,而是在寫前端,是以雖然期間一直想寫但是沒有想出從哪方面入手。後端架構用的SpringBoot,前端用的是JSP、BootStrap、Echarts等,前端主要做成了大屏的樣子,之前寫過一段時間前端,但是沒有整理筆記,導緻現在再寫,有些東西還要去翻原來的代碼,比較麻煩,是以一直想整理一些前端的筆記,但是由于不是專業的前端,不是寫的很深入,隻想把自己實作的的效果對應的代碼總結一下,如果隻寫代碼的話,看起來比較單調,是以我想能有寫一些前端頁面,在部落格裡放上連接配接,這樣看起來會比較直覺。現在的部落格用的是hexo,代碼托管在coding上,有些頁面,比如菜單、整體布局的效果在這上面不太好展現,是以想在自己的伺服器用SpringBoot搭一個完整的系統,那麼就要從頭開始,從搭建SpringBoot程式開始,雖然SpringBoot自身帶了tomcat,但是我感覺自己安裝的tomcat用起來會比較友善,這就是為什麼先寫tomcat的安裝了。

之前用過也配置過tomcat,但是沒有從頭到尾的在伺服器上配置,下面就記錄一下我的安裝過程及碰到的問題,友善後面我在其他的服務上部署。

1、前提

首先安裝配置JDK,我這裡用的是JDK1.8.0_45

2、下載下傳

首先到官網

http://tomcat.apache.org/

下載下傳安裝包,我下載下傳的是最新版的Tomcat9

wget http://mirrors.shu.edu.cn/apache/tomcat/tomcat-9/v9.0.12/bin/apache-tomcat-9.0.12.tar.gz
           

3、解壓并改名

tar -zxvf apache-tomcat-9.0.12.tar.gz 
mv apache-tomcat-9.0.12 tomcat 
           

4、啟動

cd tomcat/
bin/startup.sh 
           

關閉tomcat指令

bin/shutdown.sh
           

5、驗證

在浏覽器裡輸入 ip:8080,如果出現下圖所示的界面就代表啟動成功了。

到這裡其實就可以使用tomcat了,可以将應用程式的war包放到tomcat的webapps目錄下,也可以自己寫一個簡單的頁面進行測試,如:

mkdir webapps/test
vim webapps/test/test.jsp
           
test tomcat
           

然後在浏覽器裡輸入 ip:8080/test/test.jsp,就會看到如下頁面

6、問題及解決

6.1 點選tomcat首頁的Manager App進入管理頁面,報沒有權限的錯誤

bin/shutdown.sh 
vim webapps/manager/META-INF/context.xml
           

将Context裡面的注釋掉即可

<Context antiResourceLocking="false" privileged="true" >
  <!--<Valve className="org.apache.catalina.valves.RemoteAddrValve"
         allow="127\.\d+\.\d+\.\d+|::1|0:0:0:0:0:0:0:1" />
  <Manager sessionAttributeValueClassNameFilter="java\.lang\.(?:Boolean|Integer|Long|Number|String)|org\.apache\.catalina\.filters\.CsrfPreventionFilter\$LruCache(?:\$1)?|java\.util\.(?:Linked)?HashMap"/>-->
</Context>

           

再啟動,驗證問題是否還存在。如果成功了,則會出現輸入使用者名、密碼的驗證彈出框

參考:

https://blog.csdn.net/cai_eternal/article/details/76069314

6.2 增加管理界面的使用者名、密碼

tomcat預設應該是沒有設定使用者、密碼的、那麼需要我們自己改一下配置檔案來添加使用者名、密碼

bin/shutdown.sh 
vim conf/tomcat-users.xml
           

在tomcat-users裡添加

<user username="admin" password="1234" roles="manager-gui"/>
           

參考

https://blog.csdn.net/txwtech/article/details/80013261

然後啟動,就可以出入上面的設定,進入管理頁面了

6.3 關閉tomcat時報錯(jdk1.8.x的bug)

  • 不確定每個jdk1.8版本或者在每個伺服器上都有這個bug

    錯誤如下:

bin/shutdown.sh 
Using CATALINA_BASE:   /opt/tomcat
Using CATALINA_HOME:   /opt/tomcat
Using CATALINA_TMPDIR: /opt/tomcat/temp
Using JRE_HOME:        /opt/jdk1.8.0_45/jre
Using CLASSPATH:       /opt/tomcat/bin/bootstrap.jar:/opt/tomcat/bin/tomcat-juli.jar
Oct 24, 2018 1:42:39 PM org.apache.catalina.startup.Catalina stopServer
SEVERE: Could not contact [localhost:[8005]]. Tomcat may not be running.
Oct 24, 2018 1:42:39 PM org.apache.catalina.startup.Catalina stopServer
SEVERE: Catalina.stop: 
java.net.ConnectException: Connection refused
	at java.net.PlainSocketImpl.socketConnect(Native Method)
	at java.net.AbstractPlainSocketImpl.doConnect(AbstractPlainSocketImpl.java:345)
	at java.net.AbstractPlainSocketImpl.connectToAddress(AbstractPlainSocketImpl.java:206)
	at java.net.AbstractPlainSocketImpl.connect(AbstractPlainSocketImpl.java:188)
	at java.net.SocksSocketImpl.connect(SocksSocketImpl.java:392)
	at java.net.Socket.connect(Socket.java:589)
	at java.net.Socket.connect(Socket.java:538)
	at java.net.Socket.<init>(Socket.java:434)
	at java.net.Socket.<init>(Socket.java:211)
	at org.apache.catalina.startup.Catalina.stopServer(Catalina.java:498)
	at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
	at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
	at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
	at java.lang.reflect.Method.invoke(Method.java:497)
	at org.apache.catalina.startup.Bootstrap.stopServer(Bootstrap.java:403)
	at org.apache.catalina.startup.Bootstrap.main(Bootstrap.java:497)

           

解決辦法,例如我的jdk安裝目錄為:/opt/jdk1.8.0_45

vim /opt/jdk1.8.0_45/jre/lib/security/java.security 
           

找到

securerandom.source=file:/dev/random
           

改為

securerandom.source=file:/dev/./urandom
           

然後關掉tomcat再重新開機就好了

https://stackoverflow.com/questions/33868983/severe-could-not-contact-localhost8005-tomcat-may-not-be-running-error-while