上一篇:在遠端Linux伺服器上安裝部署Tamcat及web項目(一)
這部分是将本地編寫好的代碼部署到Tomcat遠端伺服器中(linux)
如果要在遠端服務其中安裝JDK,Mysql,Tomcat可以通路下面位址
在遠端Linux伺服器上安裝部署Tamcat及web項目(一)
參考連結:
https://www.cnblogs.com/jpfss/p/9023591.html
https://blog.csdn.net/kevin_virus/article/details/81388525
在idea中部署遠端Tomcat
1. 服務端的配置
1.1 tomcat安裝路徑
/usr/local/tomcat8.5/apache-tomcat-8.5.43
1.2 我們在bin目錄下找到catalina.sh
使用指令
vi catalina.sh
在檔案中加入
#我是加的這個,這個可以成功!
JAVA_OPTS="-Dcom.sun.management.jmxremote=
-Dcom.sun.management.jmxremote.port=1099
-Dcom.sun.management.jmxremote.rmi.port=1099
-Dcom.sun.management.jmxremote.ssl=false
-Dcom.sun.management.jmxremote.authenticate=false
-Djava.rmi.server.hostname=47.93.254.64"
JAVA_OPTS="$JAVA_OPTS -Xdebug -Xrunjdwp:transport=dt_socket,server=y,suspend=n,address=5005"
export JAVA_OPTS
#這是其他的方法
CATALINA_OPTS="-Dcom.sun.management.jmxremote
-Dcom.sun.management.jmxremote.port=1099
-Dcom.sun.management.jmxremote.ssl=false
-Dcom.sun.management.jmxremote.authenticate=false
-Djava.rmi.server.hostname=47.93.254.64"
JAVA_OPTS="-Dcom.sun.management.jmxremote
-Dcom.sun.management.jmxremote.port=1099
-Dcom.sun.management.jmxremote.ssl=false
-Dcom.sun.management.jmxremote.authenticate=false
-Dcom.sun.management.jmxremote.rmi.port=1099"
1.3 配置好後,儲存,啟動伺服器
#之前啟動的是
./startup.sh
#現在要啟動
./catalina.sh run
#上面這樣啟動的話會導緻目前終端被阻塞,并且關閉終端後無法繼續背景運作
#可以将上面的指令改為下面的
./catalina.sh run > /dev/null 2>&1 &
1.4 mysql5.7以上版本需要設定一下
報錯:Expression #1 of SELECT list is not in GROUP BY clause and contains nonaggregated column ''
進入mysql
mysql -uroot -p
然後執行下面兩個步驟就可以了,注意這裡重新開機mysql後,還需要重新進行設定
select @@global.sql_mode
可以看到模式中包含了ONLY_FULL_GROUP_BY,隻要沒有這個配置即可。
set @@sql_mode='STRICT_TRANS_TABLES,NO_ZERO_IN_DATE,NO_ZERO_DATE,ERROR_FOR_DIVISION_BY_ZERO,NO_AUTO_CREATE_USER,NO_ENGINE_SUBSTITUTION';
1.5 出錯排除
https://www.cnblogs.com/rogear/p/7435074.html
https://blog.csdn.net/synchro2014/article/details/87944665
1.6 ./catalina.sh 出錯
1.7 1099端口出錯
intellij idea部署ssm/web項目到遠端tomcat遇到的1099端口問題
也有可能程式出錯!
可以檢視tomcat安裝路徑下的logs檔案下catalina.xxx.log檔案,cat 檢視
2. 配置IDEA
2.1 加包
如果沒有這一步,後面可能會報錯:java.lang.IllegalStateException: Illegal access: this web application instance has been stopped alr
出現這個錯誤的原因是找不到相應的jar包。
配置:可是用idea明明已經幫我們導入了呀?原來是,idea建立的jar包放在src目錄下的lib檔案夾裡。而運作伺服器時,需要在WEB-INF下找到lib目錄。這裡要點選在左上角的file,program structure,artifact中,點選相應的包右鍵,選擇put into web-INF lib。這樣,再重新部署一下,就不會報錯了。圖中是已經添加完了的
2.2 伺服器配置
2.3 增加遠端伺服器
2.4 配置頁面
2.5 點選 上圖中Host 後面的 ...,配置如下
2.6 添加war包
完成以上步驟,基本就可以完成相關的準備工作了,然後部署就可以了,不過這中間可能會出現很多錯誤。
3. 出錯情況
3.1 描述當使用IDEA連接配接之後,IDEA顯示錯誤,然後在伺服器上操作,進入
/usr/local/tomcat8.5/apache-tomcat-8.5.43/bin/
中,使用指令 ./shutdown.sh
報錯:
Aug 12, 2019 7:42:00 AM org.apache.catalina.startup.Catalina stopServer
SEVERE: Could not contact [localhost:[8005]]. Tomcat may not be running.
Aug 12, 2019 7:42:00 AM org.apache.catalina.startup.Catalina stopServer
SEVERE: Catalina.stop:
java.net.ConnectException: Connection refused (Connection refused)
at java.net.PlainSocketImpl.socketConnect(Native Method)
at java.net.AbstractPlainSocketImpl.doConnect(AbstractPlainSocketImpl.java:350)
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:504)
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:498)
at org.apache.catalina.startup.Bootstrap.stopServer(Bootstrap.java:406)
at org.apache.catalina.startup.Bootstrap.main(Bootstrap.java:498)
3.2 解決方法:
(1)使用
修改$JAVA_HOME/jre/lib/security/Java.security 檔案中 securerandom.source 配置項:
将
securerandom.source=file:/dev/random
修改為:
securerandom.source=file:/dev/urandom
或者
securerandom.source=file:/dev/./urandom
都沒有解決!
(2)在檔案catalina.sh中添加
JAVA_OPTS="-Dcom.sun.management.jmxremote=
-Dcom.sun.management.jmxremote.port=1099
-Dcom.sun.management.jmxremote.rmi.port=1099
-Dcom.sun.management.jmxremote.ssl=false
-Dcom.sun.management.jmxremote.authenticate=false
-Djava.rmi.server.hostname=47.93.254.64"
JAVA_OPTS="$JAVA_OPTS -Xdebug -Xrunjdwp:transport=dt_socket,server=y,suspend=n,address=5005"
export JAVA_OPTS
添加位置
然後查找tomcat程序并殺死程序
ps -ef | grep tomcat
kill -9 程序号
開啟tomcat
./startup.sh
(3) 也有可能是沒有開啟tomcat也會報這個錯誤