前言
不知不覺來到大三,今年的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
- 步驟:
- 打開配置文件server.xml
/home/server/apache-tomcat-9.0.12# vim conf/server.xml
- 修改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" />
- 保存退出
基于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)在知道了,需要對兩個隨機端口進行指定并安全組開放 - 步驟:
-
安全組開放端口
RMI端口開放 - 配置
$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>"
- 重啟Tomcat服務(wù)
-
注:
- 這里與大多數(shù)教程不一樣的地方在于第三行,我們同時指定了額外的端口
Dcom.sun.management.jmxremote.rmi.port=1099 - 該額外端口與第二行端口均為1099,這里必須使兩者相等,我試過很多組合并同時開放端口,都無法連接。這里以我目前的測試結(jié)果而言,唯有同時讓兩個端口被指定并且一致才能成功在IDEA上進行連接。因為RMI我暫時并用不到,故并不會去深究其機理,能用就夠。
- 這里與大多數(shù)教程不一樣的地方在于第三行,我們同時指定了額外的端口
問題解決
無法關(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
-
注:
- 如果通過
sudo ./bin/startup.sh也無法開啟tomcat服務(wù),則請忽略該方法 - 還有其他的問題是在tomcat服務(wù)8005端口已開啟的情況下,發(fā)生
Connection refused異常,我暫時沒遇到。但有個可能有用的方案:解決方案 - 查看tomcat服務(wù)是否開啟的命令:
netstat -an --ip -
./bin/startup.sh與./bin/catalina.sh start功能一致
./bin/shutdown.sh與./bin/catalina.sh stop功能亦一致
原因在于startup.sh與shutdown.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代碼,自動完成都沒有)
- 步驟:
-
開放ECS端口
在服務(wù)器對應(yīng)的安全組加入如下內(nèi)網(wǎng)入方向規(guī)則
安全組配置 - 開放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
- 開放MySQL遠程連接用戶
本處建議新建供遠程連接使用的用戶而不是直接修改root用戶信息
grant all privileges on *.* to 'username'@'%' identified by 'password' with grant option;
flush privileges;
其中username與password自填希望使用的遠程用戶名與密碼,當成功執(zhí)行后,進入MySQL查看用戶信息,此時應(yīng)可以看到host為%的用戶
select user, host from mysql.user

查看用戶表結(jié)果
-
成功完成服務(wù)器配置,接下來以IDEA為例截圖演示成功連接結(jié)果
成功連接遠程MySQL服務(wù)器
結(jié)語
配環(huán)境真的很難,還需要耐心與細心,盡量要保證不中途放棄,才能在最后配置出成功的運行環(huán)境。歡迎大家關(guān)注或在下評論,指出我的問題或與我討論


