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...