1. 程式人生 > >node.js專案線上伺服器部署

node.js專案線上伺服器部署

圖1 node.js專案線上部署思路圖

假設我們電腦本地有五個專案:1.靜態網站 2.電影網站 3. 手機app 4.微信小程式 5.微信公眾號

這些應用都是跑在我們電腦本地,誰也看不到。我們需要放到網上供別人使用。

首先我們為這五個專案購買一個域名(當然為每個專案單獨買一個域名也行),一個域名也可以分出5個二級域名來用。

比如我們可以購買imooc.com這個域名。購買域名後需要給域名備案。

其次我們購買一臺伺服器。我們本地電腦可以通過ssh通道連線伺服器。配置使用者許可權,安裝mongoDB,配置nodejs環境,配置nginx前置服務。

為了不讓伺服器受到侵害,我們還需要給伺服器設定IPtables,Fail2Ban防護措施。為了不讓使用者訪問網站時洩露個人資訊或者傷害到伺服器上的資料,我們還得配置SSL證書。

通過SSH通道向伺服器傳輸專案程式碼,不安全而且ssh通道較小。因此我們需要一個程式碼託管倉庫。將我們本地的專案程式碼上傳到私有的git倉庫。如果需要部署的時候,我們可以通知伺服器到git倉庫拷貝專案程式碼。再也不用從本地電腦一個位元組一個位元組地向伺服器傳輸程式碼了。

那麼問題來了,我們需要一個工具通知伺服器去git倉庫拷貝程式碼。我們可以藉助PM2。在本地電腦和伺服器上都安裝PM2工具。我們通過git將專案上傳到私有倉庫。然後我們本地通過PM2通知伺服器上的PM2讓伺服器通過git下載專案。然後PM2會協調node程序。

如果這五個專案都想搶佔80埠。首先我們可以為這五個專案分別分配3000,3001,3002,3003,3004埠。然後讓nginx當伺服器的大門總管,由nginx持有80埠。所有想要訪問伺服器的使用者都需要經過nginx這一關,由nginx識別使用者。如果使用者訪問到的是電影網站,就把這個使用者轉發到3001埠。如果這個使用者訪問的是小程式的,就把這個使用者轉發3003埠。如果使用者訪問的是手機app的,首先也得通過域名,並且是通過https的協議找到伺服器的80埠,nginx會通過ssl證書與它進行握手交流,溝通認證之後,便會把訪客的請求轉發到後臺的3002埠。

埠分配好了,我們需要給這五個專案分配域名,比如可以分配五個二級域名給他們。