centos7+node.js+nest.js+caddy+pm2安裝及線上環境配置
node.js安裝
官方安裝說明地址 https://github.com/nodesource/distributions
執行命令
curl -sL https://rpm.nodesource.com/setup_8.x | bash -
sudo yum install -y nodejs
至此,noded.js安裝完成
版本查看
node -v
npm -v
nest.js安裝
官方文檔地址 https://github.com/nestcn/docs/blob/master/5.0/firststeps.md
首次安裝執行命令
npm i -g @nestjs/cli
以後建立項目只需在你需要的路徑下執行
nest new project
開發測試環境下直接執行以下命令啟動項目,start後面加上:dev可以在修改現有檔案後自動進行重啟
npm run start:dev
瀏覽器輸入 localhost:3000 即可訪問,連接埠修改在src/manin.ts中
由於node.js環境下,每個項目啟動都需要佔用一個連接埠,所以要想實現多網站,多網域名稱綁定訪問就需要使用nginx,caddy之類的web service來做代理這裡我們選用簡單強大的caddy來實現
安裝caddy
官方文檔地址 https://caddyserver.com/tutorial
在 https://caddyserver.com/download 頁面中根據自己伺服器和所需外掛程式勾選後會產生安裝命令
無需外掛程式情況下,直接執行下面的命令即可
curl https://getcaddy.com | bash -s personal
安裝完成後如果是靜態網站可以直接在網站根目錄執行以下命令即可啟動
caddy
瀏覽器輸入 localhost:2015 即可訪問
下面主要針對nest.js項目多網站的情況進行配置說明
在你希望的路徑下建立 一個 Caddyfile 檔案
vi Caddyfile
配置內容樣本如下
比如你的網域名稱是 www.google.com ,你需要通過該網域名稱訪問你的 localhost:6000 這個項目,同理,其它項目同樣配置
www.google.com { proxy / localhost:6000}www.facebook.com { proxy / localhost:6001}
注意:在上面的配置中切記 '{' 和 '/' 左右的空格,否則將會引起錯誤
配置完以後按 esc 鍵再輸入 :wq 儲存退出
然後執行以下名來來告訴 caddy 你的設定檔在哪,並載入啟動
caddy -conf /路徑/Caddyfile
這時可能會讓你輸入郵箱地址,這是caddy為了給你自動申請配置SSL認證,然後你會看到輸出了你配置的網域名稱,
分別有http和https的地址,直接存取即可
以上配置完基本就完成了;但是放你重啟伺服器後就會發現網站不能訪問了,伺服器上查看你會發現node.js的web server 和 caddy 都沒有自動啟動,還需要手動執行上面步驟中的啟動命令才行,這時就需要使用pm2這個強大的工具了
安裝pm2
官方文檔地址 https://pm2.io/doc/en/runtime/guide/installation/
執行以下命令開始安裝
npm install pm2 -g
一個命令安裝完成,是不是很簡單?
下面使用pm2來啟動管理node.js啟動並執行項目,這裡以nest.js開發的項目為例,這部分由於資料有限,找不到pm2啟動nest.js項目的說明,由於我自己也是初次接觸pm2,整整折騰了8個小時才搞定,最後google找到瞭解決方案,如下:
比如你的nest.js項目路徑是 cd /data/www/project01 則進入該項目根目錄下執行以下命令
pm2 start npm --name project01 -- start
執行完會出現一個名為project01的項目online的table,表示該項目通過pm2啟動成功,如果你還有其它項目可執行同樣的操作來啟動
將你需要通過pm2來啟動管理的項目都通過pm2啟動後,執行以下開機自啟動命令來實現開機自啟動這些項目
pm2 startup
執行以下命令來儲存當前應用列表
pm2 save
到此,通過pm2來啟動管理的項目在伺服器重啟後都會自動啟動,是不是很方便?
但是還有個問題,因為這些項目都使用了caddy代理,所以caddy也需要實現開機自啟動才行,否則外網仍然無法通過你的網域名稱來訪問這些項目,由於我們已經安裝了pm2,他方便強大的特性可以免去我們去配置systemd來實現caddy的開機自啟動了,我們執行以下命令即可
pm2 start caddy --name caddyStart -- -conf /你的Caddyfile路徑/Caddyfile
通過以上命令我們就實現了pm2啟動管理caddy了,然後我們依然要執行一下開機自啟動命令和儲存命令,如下
pm2 startup pm2 save
重啟你的伺服器,你會發現在沒經過任何手動操作的情況下你已經可以通過項目所綁定的網域名稱來訪問你的網站了,是不是很爽?
到此所有配置操作全部完成! 你可以通過強大的pm2來監測你伺服器上的項目
附上pm2常用的命令
$ pm2 list # 顯示所有進程狀態$ pm2 monit # 監視所有進程$ pm2 logs # 顯示所有進程日誌$ pm2 stop all # 停止所有進程$ pm2 restart all # 重啟所有進程$ pm2 reload all # 0 秒停機重載進程 (用於 NETWORKED 進程)$ pm2 stop 0 # 停止指定的進程$ pm2 restart 0 # 重啟指定的進程$ pm2 startup # 產生 init 指令碼 保持進程活著$ pm2 web # 運行健壯的 computer API endpoint (http://localhost:9615)$ pm2 delete 0 # 殺死指定的進程$ pm2 delete all # 殺死全部進程
有喜歡kotlin的同學加下QQ群 26588774
有喜歡nest.js的同學加下QQ群 732189938
有喜歡golang的同學加下QQ群 598189791
有喜歡laravel的同學加下QQ群 212423075
歡迎來群裡聊美女,談人生,當然還有聊技術O(∩_∩)O