springboot項目部署到雲服務器上


1.1服務器准備

首先需要購買雲服務器,我這里是白嫖的阿里雲,所以就用阿里雲做演示:
服務器上首先需要配置安全組規則,這里參考配置mysql
然后我們需要安裝數據庫(我這里用的是mysql)和jdk。這里可以使用寶塔進行安裝,比較方便
配置完jdk后可以通過java -version查看是否安裝成功,成功的可以看到如下圖的格式

還需要在本地電腦上安裝xshell和xftp,有免費版的。

輸入用戶名和密碼進行配置。xftp也是一樣 后者是為了快捷傳輸文件。

1.2本地准備

打包方式有兩種,一種是打包成war包,這個時候需要在雲服務器中部署tomcat才能夠運行。第二種是打包成jar包,這種由於springboot內置了tomcat,所以只需要服務器上有jdk就可以了。需要注意的是springboot最低需要jdk1.8及以上版本。我們這里演示的是打包jar包。
首先我們最好在項目配置兩個環境,一個dev環境,一個pro環境。

其中的配置文件大同小異,主要是數據庫的連接配置需要修改,畢竟一般都是一個用的本地的數據庫,一個用的雲服務器上的數據庫。可以先在發布環境中跑一遍項目。
然后再pom中加入依賴

這個是加入的依賴。

		<plugins>
			<plugin>
				<groupId>org.springframework.boot</groupId>
				<artifactId>spring-boot-maven-plugin</artifactId>
			</plugin>
		</plugins>

這個是配置靜態資源

		<resources>
			<resource>
				<!-- 指定resources插件處理哪個目錄下的資源文件 -->
				<directory>${basedir}/src/main/webapp</directory>
				<!-- 需要將資源文件放到該目錄下才能訪問 -->
				<targetPath>META-INF/resources</targetPath>
				<includes>
					<include>**/**</include>
				</includes>
			</resource>

			<resource>
				<directory>${basedir}/src/main/resources</directory>
			</resource>
		</resources>

這個是指定打包jar包

	<!-- 打包成jar包 -->
	<packaging>jar</packaging>

然后進行打包

打包后的結果在target目錄下:

打包完了可以直接在本地先試着運行一下(切換目錄到jar包所處位置,下面代碼運行jar包。xxx.jar是你的Java包全稱)
java -jar xxx.jar
到這里本地准備也完成了。

1.3部署

將jar包通過xftp發送到服務器中:

嘗試運行該xxx.jar包

  • 查看端口使用情況netstat -anp | grep 8800 //netstat -anp | grep <端口號>
    我們要想在linux系統上運行這個項目,就要保證他運行所用的端口沒有被占用,不然運行就會報錯
  • 如果被占用了,(沒被占用的時候不顯示任何東西),查看占用端口的PIDsudo lsof -i:8800 //sudo lsof -i:<端口號>

  • 我們要把它kill掉,留出空位來運行我們的項目。kill后再次查看端口,可以看到這個端口已經騰出來了(查詢為空)sudo kill -9 26191 //sudo kill -9 <PID>
  • 進入xxx.jar包所在的目錄下
  • 然后執行命令:java -jar xxx.jar

  • 這樣就算部署成功了,可以通過http://公網ip:端口號 訪問網站。但是這樣還有一個問題。就是當我們關掉xhell時,我們的網站又訪問不上了。只能再次運行一次。
    我們可以先停掉原來的項目。創建一個start.sh文件。向其中添加字段 : java -jar ***.jar 。按ESC + :wq + 回車鍵保存退出。這是vim的基本操作。
    給這個start.sh 管理員權限,然后用nohup指令不間斷地運行(nohup指令:忽略所有掛斷(SIGHUP)信號,不掛斷地運行命令)
    chmod 777 start.sh //賦予管理員權限
    nohup ./start.sh & //不間斷運行文件內的指令
    把Xshell關掉,在瀏覽器上輸入http://公網IP:8800 發現項目還是可以進入,說明我們已經設置成功了。至此springboot項目部署到阿里雲服務器上完結。

    當然后面還需要我們去申請域名,就是其他人那種www.xxx.com的訪問地址,而不是我們現在這種ip+端口的地址。我這里就不做演示了。

1.4可能遇到的問題

  • mysql的時區問題
    由於我的是寶塔一鍵部署的,好像配置好了的,這個問題倒是沒遇見。遇到了可以通過修改時區解決。
  • 項目在本地可以訪問,到服務器啟動成功了訪問不了。我出現過這個問題。經過各種嘗試有如下幾種可能:
  1. 有種可能是tomcat配置問題。在yml文件中配置:server.address=0.0.0.0。據說是tomcat默認的是172.0.0.0.所以只能本地訪問。
  2. 靜態資源問題。就是靜態資源打包的時候沒有打入jar。所以訪問404. 解決就是上面配置靜態資源那段代碼。
  3. 服務器端口未開啟:
    我最終的問題就出現在這里,我是通過阿里雲的控制台界面開啟的端口。在該界面顯示端口是開啟了的。但是實際上並沒有開啟。需要在命令行界面開啟。
    添加端口:
    firewall-cmd --zone=public --add-port=8080/tcp --permanent (--permanent永久生效,沒有此參數重啟后失效)
    刷新規則:
    firewall-cmd --reload
    查看指定端口
    firewall-cmd --zone=public --query-port=8080/tcp
    刪除指定端口
    firewall-cmd --zone=public --remove-port=8080/tcp --permanent
    查看已開放得所有端口
    firewall-cmd --list-ports
    我們可以先查看所有開放的端口是否存在我們需要開放的端口。沒有的話添加,需要注意的是添加后需要刷新規則。不然不生效。然后通過查看指定端口號如果返回yes就說明開放端口成功。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM