十分鐘搭建centos7+node.js+nest.js+caddy+pm2線上環境

來源:互聯網
上載者:User

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

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.