Linux Server JavaEE配置心得以及踩坑

前言

不知不覺來到大三,今年的J2EE課程要求開發(fā)基于手機和平板的Web端應(yīng)用,最后展示需要多臺手機平板同時進行。那么對我們而言,配置一臺支持遠程連接的服務(wù)器非常重要,我也希望將整個配置過程中遇到的重要地方記錄下來,以供以后參考或分享給他人

起始環(huán)境

  • 服務(wù)器來源:阿里云ECS
  • 系統(tǒng)環(huán)境:Ubuntu16.04 64位
  • JDK:1.8.0_181
  • 已完成Tomcat等組件安裝
  • 內(nèi)容:配置Tomcat,配置MySQL

配置Tomcat

基礎(chǔ)參數(shù)

  • Tomcat版本:apache-tomcat-9.0.12
  • Tomcat路徑:/home/server/apache-tomcat-9.0.12

詳細過程

詳細配置外鏈

基礎(chǔ)配置

IDEA路徑配置

  • ?。。?/strong>
  • ?。。?/strong>
  • ?。?!
    注意Mapped as路徑的配置為war所在的路徑,可為絕對路徑,也可為相對路徑!

端口映射HTTP

  • 作用:修改訪問端口為HTTP默認端口80,可省略訪問端口號如:8080
  • 步驟
  1. 打開配置文件server.xml
/home/server/apache-tomcat-9.0.12# vim conf/server.xml
  1. 修改server.xml
    在server.xml中尋找一個Connector,最初狀態(tài)其屬性port為8080,同時應(yīng)含有一個屬性為protocol其值包含HTTP,將8080改為80
<Connector port="80" protocol="HTTP/1.1"
               connectionTimeout="20000"
               redirectPort="8443" />
  1. 保存退出

基于IDEA遠程部署

  • 作用:在使用IDEA完成編碼后,運行Web項目使得IDEA自動將Web項目部署到遠程服務(wù)器上
  • 前言:網(wǎng)絡(luò)上關(guān)于遠程部署的客戶端也就是IDEA配置教程特別多,而且也基本一致,本文不做贅述
  • 原理分析
      IDEA的Remote Tomcat Server遠程部署功能是基于Java的RMI功能,關(guān)于RMI不做贅述,我們只需要知道這個名字就行。但需要說明的是,RMI實際上有三個隨機端口,對我們遠程部署來說,需要使用其中的兩個端口。對于IDEA而言,其Remote Tomcat Server配置需指定JMX端口(對應(yīng)遠程RMI端口),那么我們需要在遠程服務(wù)器上指定安全組開放RMI端口,使得IDEA能訪問遠程服務(wù)器RMI服務(wù)。
      然而,包括官方教程在內(nèi)幾乎所有的的網(wǎng)絡(luò)教程都到此為止,對有些人有用,對我們沒用。這里我們需要回到上一段我提到的RMI在這個過程中需要開放兩個端口,都是隨機端口,那么僅對第一個RMI端口進行了指定安全組開放,則第二個RMI端口仍然隨機開放,但我們卻沒有在安全組內(nèi)對其開放使得外網(wǎng)能訪問該端口,客戶端IDEA便會出現(xiàn)Connection Refused異常。
      于是,我們現(xiàn)在知道了,需要對兩個隨機端口進行指定安全組開放
  • 步驟
  1. 安全組開放端口


    RMI端口開放
  2. 配置$Tomcat$/bin/catalina.sh,在腳本代碼前加入以下代碼,建議剛好在代碼前。
export CATALINA_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=<你的服務(wù)器公網(wǎng)IP>"
  1. 重啟Tomcat服務(wù)
    1. 這里與大多數(shù)教程不一樣的地方在于第三行,我們同時指定了額外的端口Dcom.sun.management.jmxremote.rmi.port=1099
    2. 該額外端口與第二行端口均為1099,這里必須使兩者相等,我試過很多組合并同時開放端口,都無法連接。這里以我目前的測試結(jié)果而言,唯有同時讓兩個端口被指定并且一致才能成功在IDEA上進行連接。因為RMI我暫時并用不到,故并不會去深究其機理,能用就夠。

問題解決

無法關(guān)閉tomcat服務(wù)器

  • 描述:使用sudo ./bin/catalina.sh stop命令關(guān)閉,得到報錯,且查看進程情況tomcat服務(wù)8005端口未開啟。
SEVERE: Catalina.stop: 
java.net.ConnectException: Connection refused (Connection refused)
  • 原因:tomcat服務(wù)8005端口未開啟,導(dǎo)致catalina無法經(jīng)由端口訪問tomcat關(guān)閉服務(wù),進而Connection refused。此外,在多次測試中,8005端口有時會開啟成功有時開啟失敗,導(dǎo)致該報錯并非一定出現(xiàn)。
  • 解決方案
    分析:網(wǎng)絡(luò)上對于該問題的解決方案在我少量的閱讀下,感覺上大多數(shù)方案均為更改非常重要的代碼。其中有修改$JAVA_HOME$/jre/lib/security/Java.security/securerandom.source配置項等方案,本著盡量不修改原生配置項的原則,我從tomcat沒有成功在8005端口開啟著手,得到了一個親測能夠解決的方案。
    方案:首先通過startup.sh再次啟動tomcat服務(wù),再通過catalina.sh stop關(guān)閉(或者,等待tomcat啟動完成亦可)
sudo ./bin/startup.sh
sudo ./bin/catalina.sh stop
    1. 如果通過sudo ./bin/startup.sh也無法開啟tomcat服務(wù),則請忽略該方法
    2. 還有其他的問題是在tomcat服務(wù)8005端口已開啟的情況下,發(fā)生Connection refused異常,我暫時沒遇到。但有個可能有用的方案:解決方案
    3. 查看tomcat服務(wù)是否開啟的命令:netstat -an --ip
    4. ./bin/startup.sh./bin/catalina.sh start功能一致
      ./bin/shutdown.sh./bin/catalina.sh stop功能亦一致
      原因在于startup.shshutdown.sh相當于是封裝了上述后者的功能

配置MySQL

基礎(chǔ)參數(shù)

  • MySQL版本:MySQL 5.7.23-0
  • 路徑:Ubuntu安裝好后有全局變量配置,不需要了解安裝路徑

基礎(chǔ)配置

數(shù)據(jù)庫遠程連接

  • 作用:能使位于其他主機上的相關(guān)軟件如IDEA能通過網(wǎng)絡(luò)訪問服務(wù)器上的MySQL服務(wù),簡化開發(fā)期間操作(其實就是不愿在服務(wù)器上手寫SQL代碼,自動完成都沒有)
  • 步驟
  1. 開放ECS端口
    在服務(wù)器對應(yīng)的安全組加入如下內(nèi)網(wǎng)入方向規(guī)則


    安全組配置
  2. 開放MySQL服務(wù)端口至公網(wǎng)
/etc/mysql/my.cnf
/etc/mysql/mysql.conf.d/mysqld.cnf

上圖有兩個文件,按順序查看并尋找bind-address項,從127.0.0.1改至0.0.0.0,保存并重啟MySQL。通過netstat -an --ip | grep 3306查看當前網(wǎng)絡(luò)活動,當出現(xiàn)下述項,:3306前IP為0.0.0.0時,表示設(shè)置成功

tcp        0      0 0.0.0.0:3306            0.0.0.0:*               LISTEN 
  1. 開放MySQL遠程連接用戶
    本處建議新建供遠程連接使用的用戶而不是直接修改root用戶信息
grant all privileges on *.* to 'username'@'%' identified by 'password' with grant option;
flush privileges;

其中usernamepassword自填希望使用的遠程用戶名與密碼,當成功執(zhí)行后,進入MySQL查看用戶信息,此時應(yīng)可以看到host%的用戶

select user, host from mysql.user
查看用戶表結(jié)果
  1. 成功完成服務(wù)器配置,接下來以IDEA為例截圖演示成功連接結(jié)果


    成功連接遠程MySQL服務(wù)器

結(jié)語

配環(huán)境真的很難,還需要耐心與細心,盡量要保證不中途放棄,才能在最后配置出成功的運行環(huán)境。歡迎大家關(guān)注或在下評論,指出我的問題或與我討論

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容