以前作了個公交實時查詢小程序,後臺服務用的是python,前段時間用nest重構了後臺服務,打算服務部署在ubuntu服務器上。node
服務器是ubuntu系統,以前一直使用這個,版本還比較高,若是部署nest項目,須要node環境,因此在部署以前,咱們要把環境弄好。python
1 安裝mvn
nvm是一個node版本管理工具,在你的服務器上能夠切換任意版本的node。git
## curl curl -o- https://raw.githubusercontent.com/nvm-sh/nvm/v0.35.3/install.sh | bash ## wget wget -qO- https://raw.githubusercontent.com/nvm-sh/nvm/v0.35.3/install.sh | bash
我使用的xshell軟件,安裝完成,使用github
nvm --version
查看是否安裝完成,若是出現 Command 'nvm' not found ,關掉當前終端並從新打開一個新的窗口,此問題便可解決。shell
2 安裝nodenpm
nvm命令就過多解釋,先安裝node,因爲個人項目須要node版本比較高,因此安裝v11.11.0ubuntu
nvm install v11.11.0
安裝完成查看已經安裝的node版本小程序
若是隻安裝一個,自動爲默認版本。bash
3 安裝PM2服務器
PM2 是一個帶有負載均衡功能的 Node 應用進程管理器。直接用npm安裝
npm install -g pm2
檢測是否安裝完成
pm2 --help
4 部署
這裏網上我查到的教程比較少,部署也遇到了很多坑,部署的時候要注意,首先,在服務器上找到你要部署項目的目錄,把你的項目整個複製過去(不包括node_modules),若是在庫裏,clone也是能夠的。複製過去進入項目目錄,從新安裝依賴,
npm install
安裝完成後在打包
npm run build
項目目錄大概這個樣子
進入dist目錄,啓動項目
pm2 start main.js
查看是否啓動成功
這種狀況就是已經啓動成功。
關於爲何不在本地打包,而後複製打包文件,以後在部署的問題,這裏作下解釋。本地確實能夠打包,咱們查看打包後的文件,有個tsconfig.build.tsbuildinfo文件:
能夠看到這個文件是項目的依賴,可是若是咱們只上傳dist文件下的,在運行項目的時候,會由於缺乏依賴而報錯,那確定還會有人問,咱們能夠直接把node_modules複製到服務器上不就好了,實際上是能夠的,可是一旦你的項目依賴有變更,仍是須要從新複製的,這就是我爲何是把項目整個複製的緣由。