版權聲明:本文由董可倫首發于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/760693146.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