Nodejs專案部署與踩過的那哪些坑

2021-07-16 21:49:04 字數 2316 閱讀 5561

nodejs專案部署與踩過的那哪些坑

一、專案背景

團隊中基於nodejs開發的專案,由於專案需要,要部署一套測試開發環境,之前正式線是一位大牛部署,由於某些原因這塊現在需要自己處理部署。本人之前完全沒接觸過linux,所以在部署測試開發環境過程中也是踩了好多坑,寫篇雜記做個記錄。

二、部署準備

1.linux系統

2. svn客戶端

3. nodejs

4. pm2

5. nginx

6. mongodb

7. mysql

這裡做個簡單的介紹,為什麼要以上這些東西。專案的**是屬於svn管理的,專案是基於nodejs開發的,node服務應用程序使用pm2管理,資料庫使用mongodb,由於我們有和其他系統互動所以又用到了乙個其他系統的資料庫mysql, nginx是web

伺服器/反向**

伺服器的**伺服器。

另外由於我們的資料庫之前有部署在其他的伺服器上,所以這裡先介紹1-4的過程,執行4後,專案就可以啟動執行,完全滿足可以測試的需求,後期再做資料庫遷移和反向**。

三、實施過程

1.linux系統

linux比較流行的髮型版本有還有其他的:ubuntu、debian、fedora

2.svn客戶端

2.1 svn客戶端安裝,直接使用yum方式安裝,命令如下:

yum install -y subversion  

安裝完成,輸入名稱 svn –h 測試成功

2.2安裝完成svn,檢出**

svn checkout  --username=***x --password=***

./casemanage_test

3.3 踩第乙個坑

svn checkout  --username=***x --password=*** svn: ./casemanage_test

按照這樣格式,死活無法檢出**,提示錯誤,後面檢視提示研究,多次折騰然後把svn:去掉,同時帶上https,終於解決問題。所以不能一味照抄,要根據實際情況去解決問題。

3.2解壓安裝  sudo tar --strip-components 1 -xzvf node-v*-c /usr/local

3.3踩過的二坑

一開始至今使用yum的方式安裝,然後專案工程包無法npm install 安裝依賴包,最後排查原因發現,安裝的nodej和npm的版本與開發環境不一致,導致install。解決辦法從官方

4. 安裝webpack

全域性安裝npm install –g webpack

5.安裝pm2

全域性安裝  npm install –g pm2

檢視全域性安裝的包

npm list -g --depth 0

6.上傳部署檔案deploy.sh

上傳完部署檔案,發現無法執行,然後修改許可權 :sudo chmod 777 deploy.sh

再次執行發現報錯

報錯「build.sh  /bin/bash^m: 壞的直譯器:沒有那個檔案或目錄」

然後替換編譯解決:

sed -i 's/\r$//' deploy.sh 

6.1踩過的三坑

發布成功,pm2各種狀態值都正常,其他電腦就是無法訪問

經常入坑的排查,center os的防火牆沒有開啟對應的3000埠,同時center os開啟埠方法跟其他系統不同,具體如下

centeros 7 防火牆使用 - firewall

開啟埠

firewall-cmd --zone=public--add-port=80/tcp --permanent

firewall-cmd --zone=public--add-port=3000/tcp --permanent

命令含義:

--zone #作用域

--add-port=80/tcp  #新增埠,格式為:埠/通訊協議

--permanent   #永久生效,沒有此引數重啟後失效

重啟防火牆

firewall-cmd --reload

重新設定完埠後,解決問題,訪問專案**正常。

後期待續~~

7.nginx

8.mongodb

9.mysql

專案部署的幾個概念

準備2個集群,乙個集 新 乙個集 老 新 集群部署好後,直接線上流量切新集群,跑一段時間驗證,如果有問題,把流量切回老版本集群,回滾速度非常快。指的是上線不滾動全部發布到所有機器,一般先在一台機器上發布,然後切比如10 的流量過去,觀察那台機器執行一段時間,觀察日誌 異常 資料是否正常,如果驗證發現...

django專案部署 部署前的準備

修改時區和資料庫設定 time zone asia shanghai databases 關閉debug 和 template debug django 的 debug 和 template debug 預設是開啟的,因為以下原因,我們必須在正式環境中關閉他們 1 debug開啟會使用更多資源 2 ...

Vue專案踩過的坑

vue cli vue腳手架 的好處就在於使用 vue ui在vue的ui上直接配置依賴 安裝外掛程式 啟動服務。很舒適。如果你發現安裝總失敗 大概率vue.js或者node.js版本不行。echarts官網直接搞個example下來放在mounted 鉤子函式中用是沒問題的。但是你會發現在elem...