項目部署到服務器過程記錄


  本文記錄項目部署過程,邊做邊記錄,邏輯可能不太順。

一、服務器准備

// 未做這部分操作,直接用的已有環境,jetty和tomact也是直接從其他服務器上復制的壓縮包解壓就用的

服務器環境搭建、工具安裝....(如windows/Linux、tomcat、jetty、mysql.....)

 

二、DB整理

1、本地連接服務器DB

     打開Navicat(或SQLyog),點擊“連接”打開新建連接界面:

    

2、DB遷移

  • 在服務器上新建一個DB

          

  • 將開發時用的DB遷移到服務器上,需要對DB表進行整理 —— 保留需要的表,保留某些表需要的初始數據,不需要的一律清理掉。

  

三、項目打包

1、從 git 上取項目最新代碼

     【加載項目依賴,如 #npm install 、maven update等】

2、修改項目配置(版本號、DB連接等),備份本次配置文件

  • 前端:

      如 /config/prod.env.js: 把開發時用的IP改成服務器IP

module.exports = merge(prodEnv, {
  NODE_ENV: '"development"',
  BASE_API: '"http://部署后台的服務器IP:端口號"', 
  WS_BASE_URL: '"ws://部署前端的服務器IP:端口號"'
})

  注意:不能用本地localhost或者127.0.0.1,因為當客戶端在訪問服務器前端項目時,會把打包好的包全部導入客戶端本機(因為相當於靜態資源了,那時候讀取的 localhost 就不是服務器,而是請求服務器的客戶端本機了。)

  • 后台:

         pom.xml: 修改版本號,將 <version>0.1.7-alpha</version> 改為 <version>0.1.8-alpha</version>

        nedbp.ds.conf.js: 修改數據庫連接。改成服務器上配置的DB。即修改url,username,password。

 

3、打war 包

  • 前端 vue-webpack 項目:

         #npm run build

         打包失敗報錯:     

ERROR in static/js/0.2b8a753690da2cc50594.js from UglifyJs
Unexpected token: punc (() [./~/element-ui/packages/col/src/col.js:24,0][static/js/0.2b8a753690da2cc50594.js:47057,10]

ERROR in static/js/4.60a7fcad606a094e54fc.js from UglifyJs
Unexpected token: punc (() [./~/element-ui/packages/col/src/col.js:24,0][static/js/4.60a7fcad606a094e54fc.js:1875,10]

ERROR in static/js/7.2cc5e2f4dddd35f75507.js from UglifyJs
Unexpected token: punc (() [./~/element-ui/packages/col/src/col.js:24,0][static/js/7.2cc5e2f4dddd35f75507.js:1327,10]

ERROR in static/js/12.42ab5fab9d6091c32782.js from UglifyJs
Unexpected token: punc (() [./~/element-ui/packages/col/src/col.js:24,0][static/js/12.42ab5fab9d6091c32782.js:1061,10]

  Build failed with errors.

  >> 解決:修改 /build/webpack.base.conf.js

        注意: '/node_modules/element-ui/src' 及 ‘/node_modules/element-ui/packages’ 中的 ‘element-ui’ 可能還有版本號,具體名稱對應node_modules目錄下的elment-ui目錄名。

        參考的是:element-ui打包的坑爹之處 !!!必看三遍!!!

        重打包:#npm run build ,打的包在項目根目錄的‘dist’目錄下,如下圖所示

        

  • 后端 java-maven 項目:

         >> 准備工作:

              在打包前,先刪除上次打包發布編譯生成的class類文件等,避免發生此次改動未生效的情況。

              主要是刪除項目中 “target/classes/" 以及 “src/main/webapp/WEB-INF/{classes,lib}”,不要刪除 WEB-INF 下的 web.xml!

       >>  打開Maven Projects:

    在IDEA中,選擇菜單工具 View/Tool Windows/Maven Projects,即可打開Maven Projects:
           

          Maven Projects目錄結構如下圖所示:

          

       clean后,再deploy,控制台出現“BUILD SUCCESS”即打包成功。

    >> 找到 war包

  • 打好的 war包會放在 target目錄下,包名是根據pom.xml 中的配置自動生成: ${artifactId}-${version}.war
  • 也可以在配置的 maven倉庫(pom.xml中配置)中去找打好的 war包:${url}/${groupId}/${artifactid}/${version}

          直接復制 url 就可以在瀏覽器中訪問maven倉庫,再根據 groupId 去到對應的目錄(以點為分界符隔開目錄名,如<groupId>AAA.BBB.CCC</groupId>,那么就應該在url/AAA/BBB/CCC/下找),再根據 artifactId (項目名)找到項目目錄,那之下再根據版本號version找到本次發布的版本就行了,里面就有war包。

  • 關於如何配置maven中央倉庫:

          

            

      原文連接:

         Maven pom.xml中添加指定的中央倉庫

         pom.xml中直接添加阿里雲Maven中央倉庫配置: http://www.違zui規dai違ma規.com/blog/3517822264314880.htm

  

四、war包部署到服務器

1、遠程連接服務器

     可以遠程連接桌面,可以用WinSCP等連接服務器。

2、將war包放到對應的容器下:

  • 復制一份 jetty 和 tomacat(壓縮包,解壓即可)到服務器(如“E:\deploy\newproject\jetty-admin“ 和 “E:\deploy\newproject\tomacat-web”);

        

  • 后台:

      將后台maven project打的war包從maven倉庫下載下來,放置到服務器"E:\deploy\newproject\jetty-admin\webapps\"下,並重命名為ROOT.war

      >> 為什么改名為ROOT.war:以便外部通過  域名或IP  +端口號訪問服務器該 newproject 項目時,不用再在url后追加參數(war包名)。如你的包為“A.war”,那么訪問地址就是“http://IP:port/A”,用“ROOT.war”就只需要輸入“http://IP:port”

     

    打開webapps:

    

 

  • 前端:

      將前端npm run build打的包(在前端項目根目錄/dist/),放置到服務器“E:\deploy\newproject\tomacat-web\webapps\ROOT\”

       

     打開webapps:

     

     打開ROOT:

     

 

3、運行起來

  • 前端 tomcat:    

         雙擊“startup.bat”’,啟動tomacat服務器。

        

                 

  • 后台 jetty:

         打開cmd,轉到“"E:\deploy\newproject\jetty-admin\”,輸入以下命令啟動jetty:

         >> #java -jar start.jar

         >> 報錯:java.net.BindException: Address already in use: bind

         >> 出錯原因: A.端口被其他應用占用; B.已經開啟了一個Tomcat 

          由於我之前都沒修改過 tomacat 或 jetty 的端口號,而它們默認的端口號都是8080,部署在同一台服務器上就造成了端口號沖突,即不能同時啟動這兩個服務。要滿足兩個服務都能啟動,需要修改 tomacat 或 jetty的端口號。

         >> 解決:修改端口號,注意端口號不要和服務器上已有項目的端口號重復!!

   停掉前端的tomcat服務器,修改E:\deploy\newproject\ tomcat-web\conf\ ???? 里面的端口號為8088,外部訪問時就瀏覽器地址欄就應該輸入“ IP:8088”

           或者修改jetty端口號,然后修改前端包中的配置文件(修改static\ js\ app....里面部署好的的basePath、localhref)。

        

 

其它:

   1、解壓war包

   當 jetty 啟動 war包報錯時,可以去查看log 找錯(如報數據庫連接失敗),此時需要解壓打好的war包,查看代碼方便修改,重打包.....

   但是war包用WinRAR是沒法解壓的,用360解壓工具倒是可以,我不想安裝其它工具,就把 ROOT.war 導入了虛擬機(centos7),用以下命令解壓即可:
   #jar xvf ROOT.war   

   【maven project 解壓后的項目文件在 /WEB-INF/classes/ 目錄下,因為maven打包時會先把編譯好的文件放到 /WEB-INF/ 以及 targets/classes目錄下,所以在重打包前一定要將這兩個目錄的對應的文件給清理掉,不然很可能發生執行的版本還是上次的文件的情況。】

   2、 復制文件夾及其下的所有文件到另一個文件夾

   #cp -ri dir1 dir2        // 有重復文件要提示用戶確認是否覆蓋

   #cp -rf dir1 dir2        // 不提示,直接覆蓋

 

參考資料:

1. Jetty使用教程(一)——開始使用Jetty(2.2.2)

2. Tomcat 部署項目的三種方法

 


免責聲明!

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



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