之前做專案都是在本地跑,最近遇到需要在在雲伺服器(阿里雲或者騰訊雲都可以,差不多)上部署Java Web專案的問題,一路上遇到了好多坑,在成功部署上去之後寫一下部署的步驟與過程,一是幫助自己總結記憶,二是希望能幫到有同樣需求的小夥伴。話不多說,下面開始。
首先,我的Java Web專案是一個很簡單的學生管理系統(相信很多人都做過吧,挺簡單的),基於Tomcat和MySQL,所以這次在雲伺服器上部署也是基於這兩個的,在開始之前,你本地首先要有一個能跑起來的專案,例如下面這樣:
在有了本地專案之後,下面就是開始部署了。-
第一步,你需要購買一個雲伺服器
騰訊雲或者阿里雲都可以這兩個在國內都不錯,阿里雲可能更好一些(雖然我用的是騰訊雲2333),如果你是學生的話,購買還有學生優惠,每個月只要10元錢差不多,這裡是騰訊雲學生優惠地址和阿里雲學生優惠地址
在你購買了你想要的伺服器後,就可以進入控制檯檢視你購買的伺服器了,我購買的雲主機的系統的Ubuntu,當然選擇其他系統也可以,比如聽說比較火的CentOS:
在上圖中,就可以看到雲伺服器的詳細資訊了,並且騰訊雲或者阿里雲會給每個雲伺服器提供一個公網IP和內網IP(比如我的公網IP就是123.207.64.17
),當你把專案部署到雲服務時,其他人就可以通過公網IP來訪問,在購買了之後,一般伺服器就會自動開始執行,你可以在本地開啟CMD命令列,輸入ping 你的公網IP
來測試是否可以訪問,如果出現下面的提示,就說明可以訪問: 在購買了雲服務後,你需要設定你雲伺服器的使用者名稱和登入密碼,就相當於你開啟本地電腦還需要使用者名稱和密碼一樣(登入名一般都是它提供好的,比如騰訊雲Ubuntu就預設是ubuntu,阿里雲CentOS預設是root),之後你就可以在下面的步驟中,通過使用者名稱和密碼來登入你的雲伺服器。 -
WinSCP 是一個 Windows 環境下使用的 SSH 的開源圖形化 SFTP 客戶端。同時支援 SCP 協議。它的主要功能是在本地與遠端計算機間安全地複製檔案,並且可以直接編輯檔案。說白了就是可以在你本地計算機和雲伺服器之間傳輸檔案的東西,可以讓你把本地專案放到雲伺服器上面去。WinSCP介面如下:
在第一張圖中,你需要選擇SCP協議,主機名就是騰訊雲或阿里雲給你提供的公網IP,埠號選擇22,使用者名稱密碼就是你上一步中設定的使用者名稱和密碼,之後點選登入就可以,登入成功後就是第二張圖,分為左右兩欄,左邊是你本地計算機,右邊是雲服務的目錄,把左邊的檔案往右邊拖就是上傳到雲伺服器,從右邊往左邊拖動檔案就是從雲伺服器下載到本地。PuTTY是一個用來遠端管理雲伺服器的東西,類似於一個遠端Linux終端,可以進行各種命令列操作,專案的部署大部分操作都是通過這個軟體進行的。
在第一張圖中,HostName就是公網IP,埠號選擇22,協議選擇SSH,在SaveSessions裡面給你的這個會話起個名字比如我的TencentWebServer,點選Sava儲存,然後Open(之後再次登入時就可以直接雙擊儲存過的那個名字就行了),登入成功後在終端輸入使用者名稱密碼就是第二張圖中的樣子。
-
第三步,雲伺服器上安裝jdk,Tomcat,MySQL
在上面的步驟完成後,接下來就是安裝配置伺服器上的專案環境了,因為我部署的這個專案是基於Java+Tomcat+MySQL的,所以需要安裝上面那幾個。
在進行下面的步驟之前,先更新源
sudo apt-get update 複製程式碼
-
雲伺服器安裝jdk
在網上搜了好久,很多都很麻煩,其實可直接一條命令搞定,直接在PuTTY終端裡面輸入
sudo apt-get install openjdk-8-jdk 複製程式碼
(我安裝的是jdk8,你也可以安裝別的版本,和你本地專案用的版本一樣就行),之後也不用配置環境變數(雖然我看到有的部落格裡寫要配置環境變數),之後通過
java 複製程式碼
和
javac 複製程式碼
這兩個命令來測試是否安裝成功了即可:
如果下面出現一大堆選項,就說明成功了。
-
雲伺服器安裝Tomcat
安裝Tomcat有好多種方式,可以在本地去Tomcat官網下載再用WinSCP上傳到雲伺服器上,也可以直接在雲伺服器上命令列下載,本地下載再上傳比較簡單,就不多說了,說說用命令列操作。我是通過
wget
命令來下載的,在終端輸入wget https://www.apache.org/dist/tomcat/tomcat-8/v8.5.35/bin/apache-tomcat-8.5.35.tar.gz 複製程式碼
然而由於眾所周知的原因,在國內直接從官網下載速度很慢,推薦用國內映象,國內有很多映象(例如,清華映象站、華科映象站),我用的是清華的映象,所以命令變為
wget https://mirrors.tuna.tsinghua.edu.cn/apache/tomcat/tomcat-8/v8.5.35/bin/apache-tomcat-8.5.35.tar.gz 複製程式碼
下載完之後你就可以在你輸入命令時所在的路徑下找到下載好的壓縮包,你可以使用
pwd
命令來檢視當前的路徑,執行解壓命令:
sudo tar -xvzf apache-tomcat-8.5.35.tar.gz 複製程式碼
解壓之後是個資料夾,可以將這個資料夾移到其他位置,我是在usr目錄下新建了個Tomcat目錄,之後放了進去。
命令列進入apache-tomcat-8.5.35目錄下的bin目錄,執行
ls
命令,可以看到下面這些檔案:有時候進入bin目錄會提示沒有許可權
Permission denied
,這時可以獲取root許可權,之後再進入,就可以看到裡面的檔案了。這裡面有兩個會比較經常用到,分別是startup.sh
和shutdown.sh
,分別用來開啟Tomcat服務和關閉。 執行./startup.sh 複製程式碼
這樣就是開啟Tomcat服務了,這時候你在瀏覽器位址列輸入
http://你的公網IP:8080
(比如我的就是http://123.207.64.17:8080)就可以看到Tomcat服務的初始介面:如果你看到了這個介面,Tomcat服務就算是成功開啟了,之後想要關閉可以執行
./shutdown.sh
。有的人在這裡可能會遇到一些問題,就是命令列中以及顯示Tomcat started,但是在瀏覽器中還是訪問不了頁面,那麼可能是因為你的雲服務的埠沒有開放,需要去雲伺服器安全組中設定訪問規則。
騰訊雲:進入控制檯 → 選擇左邊側欄的安全組 → 點選新建 → 如下圖所示配置即可
阿里雲:進入控制檯 → 選擇左邊側欄的安全組 → 配置規則 → 快速建立規則 → 如下圖所示配置即可
其他一些參考:Linux Ubuntu 安裝Tomcat
-
雲伺服器安裝MySQL
Ubuntu上安裝MySQL其實挺簡單的,只需要下面幾條命令:
sudo apt-get install mysql-server 複製程式碼
sudo apt-get isntall mysql-client 複製程式碼
sudo apt-get install libmysqlclient-dev 複製程式碼
在執行完畢之後,就會安裝,安裝過程可能會提示讓設定MySQL登入密碼什麼的,這個密碼就是你Java Web專案裡連線資料庫時用到的密碼,在安裝完之後,可以通過下面這個命令來檢查是否安裝成功
sudo netstat -tap | grep mysql 複製程式碼
如果出現下面的,就表示成功了,MySQL的socket處於listen狀態
這個時候MySQL服務已經啟動了(如果之後需要開啟或關閉的話可以用service mysql start
和service mysql stop
)然後你需要在命令列登入MySQL,可以用下面的命令來登入mysql -u root -p 複製程式碼
之後用
show databases;
就可以看到你的資料庫了,可以看到圖中,student這個資料庫就是我新建的用來存放學生管理系統這個專案的資料庫。之後,你需要新建你的JavaWeb專案所需的資料庫。
-
-
第四步,將JavaWeb專案打包成war包
在上面幾個步驟都完成之後,就只需要把本地專案放上去就可以了,首先需要將專案打包成war包,我使用的IDE是IntelliJ IDEA,打包其實很簡單,這裡就不再說了(其實是打字打累了233333),給幾個我當時參考的連結吧:
Idea將javaweb專案打包成war包並部署到伺服器的Tomcat上,
使用IneliJ IDEA 2016將Java Web專案匯出為War包
在打包完成之後,使用WinSCP伺服器圖形化檔案管理工具,把這個war包拖拽到雲伺服器的
tomcat/webapps/
目錄下,之後重啟Tomcat(先./shutdown.sh
再./startup.sh
),之後這個war包就會自動解壓好了,如下圖:有時候可能會出現訪問時沒有許可權的問題,無法進入那個資料夾,如下圖:
這時候可以退出WinSCP,重新登入,在登入時點進去高階選項,按照下圖設定即可:
-
第五步,在瀏覽器輸入url訪問你的Java Web專案
如果上面幾部都成功的話,現在你就可以在瀏覽器中訪問你部署在雲伺服器上的專案了,在瀏覽器位址列中輸入
http://公網IP:8080/專案路徑
,其中專案路徑一般就是你放入tomcat/webapps/
下面解壓後的資料夾名,比如我的就是http://123.207.64.17:8080/StudentManager/
經過上面幾個步驟,我們就成功地把基於Tomcat和MySQL的Java Web專案部署到的雲伺服器上。如果你按照上面的步驟來做遇到了什麼問題,歡迎在下面留言交流。