1. 程式人生 > >阿里雲中本次專案執行環境安裝與配置遇到的坑點與總結

阿里雲中本次專案執行環境安裝與配置遇到的坑點與總結

由於博主最近剛接手一個其他團隊開發過程中的中間版本的專案,並且整個專案環境需要博主重新在阿里雲上搭建一套,中間也遇到了一些問題,上網求助了一些資料,在這裡,我對此次搭建環境做一個總結。

1、程式碼編譯方面遇到的問題

(1)由於是剛接手另一個團隊交接給我的全新專案工程,所以jar包的依賴管理的特別亂,有一些jar包根本不需要,但是在pom檔案中也添加了該jar包的依賴,並且新增的依賴還無法下載下來。

解決的方法:遇到jar包缺失報錯的,先去程式碼中看看該jar包是否用到,如果沒有用到,直接在pom檔案中去掉該依賴。如果該jar包可以正常使用,但是無法下載下來,要麼更改maven遠端倉庫地址,要麼把jar包自己下載下來,然後新增到本地倉庫中。

(2)專案採用多個模組,多個工程的結構,有些jar包在其中幾個工程使用到,並且也下載下來了,但是在某一個工程中使用到,但是沒有在pom檔案中新增依賴,導致在java檔案中import,報錯。

解決方法:在缺少依賴的工程中的pom檔案中,新增該jar包依賴

2、linux環境搭建遇到的問題

(1)由於博主之前大部分是單純寫後臺java程式碼的,對於linux命令,也只限於簡單的瞭解使用,並沒有很深入的在這方面研究過。

這裡簡單寫幾個我認為安裝環境經常使用的幾個命令:

netstat  -anp  |grep  3306      在啟動某個程式的時候,經常報這個埠已經被佔用,這個命令就是顯示程式埠的佔用情況,其中3306是我這個程式對外開放的訪問埠號,查到該埠的程序號之後,直接kill掉,再重啟

ps -ef | grep quartz  啟動某個程式的時候,有時候會報該程式已經被啟動,這個時候,我們通過程式的名稱,直接用該命令查到這個程式的程序號,然後kill掉程序

(2)由於這個專案使用的是spring boot框架,專案的啟動方式是先把幾個模組的工程打成jar包,然後在linux上直接用jar包啟動,剛開始啟動jar包直接使用:java -jar,我一旦退出後臺(Ctrl+C),或者我的xshell中斷與伺服器的連線,jar包也停止服務執行。

解決方法:採用nohup和&搭配啟動jar包服務

例如,之前我啟動的命令是:java -jar /usr/local/apps/common-business.jar >/dev/null

現在採用:nohup java -jar /usr/local/apps/common-business.jar >/dev/null  &

具體的nohup和&的區別,可以借鑑這兩篇博主的部落格:

https://blog.csdn.net/stpeace/article/details/76389073

https://blog.csdn.net/eager7/article/details/8290937

(3)由於很多的服務程式是第一次安裝,比如mongodb,kafka,svn等等,很多都是先找網上的安裝教程來的,但是安裝完開始配置一些引數的時候,有時候我就按照自己的意願做了一些修改,導致最後雖然安裝完成,但是使用的時候,會出現各種問題。

解決方法:在自己還不熟悉的時候,最好按照人家的步驟來,不要輕易變更一些引數配置,當然等你熟了,想怎麼配置就這麼配置,但是現在不是第一次不熟嘛。如果自己已經變更了,出現問題了,那就把配置改回來,或者重新安裝吧。

3、程式在進行mysql的連線時,由於版本的問題,遇到過不少問題

(1)由於我安裝的版本是5.7版本,所以group by 的新特性會導致一些查詢語句出現錯誤

解決方法:在my.cnf的檔案中,新增這麼一句

sql_mode=STRICT_TRANS_TABLES,NO_ZERO_IN_DATE,NO_ZERO_DATE,ERROR_FOR_DIVISION_BY_ZERO,NO_AUTO_CREATE_USER,NO_ENGINE_SUBSTITUTION

(2)由於多次連線錯誤,導致阻塞

MySql Host is blocked because of many connection errors

解決方案:在伺服器上執行:flush hosts命令

mysqladmin  -uroot -p  -h(ip地址) flush-hosts

(3)mysql連線總是超時

The last packet sent successfully to the server was 0 milliseconds ago. The driver has not received any packets from the server.

mysql連線超時的原因有很多,查看了網上的很多答案,基本都是各種設定連線時長數值增大,我照著修改了,但是還是報相同的錯誤,而且我覺得一味的延長連線時間,沒從根本原因上解決問題,根本問題是連線為什麼會超時?是由於怎麼原因超時的?我們需要找到這個原因

jdbcUrl = jdbc:mysql://47.99.130.20:3306/telephone_robot?characterEncoding=utf8&zeroDateTimeBehavior=convertToNull&useSSL=true

我程式中的資料庫地址是這個,後來我發現這個裡面有:useSSL=true這個屬性,需要SSL驗證,把這個屬性去掉,就可以連線了,把連線地址變成下面這樣

jdbcUrl = jdbc:mysql://47.99.130.20:3306/telephone_robot?characterEncoding=utf8&zeroDateTimeBehavior=convertToNull

接手一個新工程,關注幾點:1、如何部署,2、日誌在哪檢視,3、如何除錯,4、最後才是具體的模組或者業務程式碼。