十分鐘搭建centos+nodejs+nestjs+caddy+pm2線上環境

centos+node.js+nest.js+caddy+pm2安裝及線上環境配置node

node.js安裝

官方安裝說明地址 https://github.com/nodesource...nginx

執行命令laravel

curl -sL https://rpm.nodesource.com/setup_8.x | bash -
sudo yum install -y nodejs

至此,noded.js安裝完成git

版本查看github

node -v
npm -v

nest.js安裝

官方文檔地址 https://github.com/nestcn/doc...golang

首次安裝執行命令web

npm i -g @nestjs/cli

之後建立項目只需在你須要的路徑下執行npm

nest new project

開發測試環境下直接執行如下命令啓動項目,start後面加上:dev能夠在修改現有文件後自動進行重啓centos

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/zh/runtime...

執行如下命令開始安裝

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
有喜歡nodejs+koa2的同窗加下QQ羣 732189938
有喜歡golang的同窗加下QQ羣 598189791
有喜歡laravel的同窗加下QQ羣 212423075

歡迎來羣裏聊美女,談人生,固然還有聊技術O(∩_∩)O

相關文章
相關標籤/搜索