天天看點

在Linux系統配置Nodejs環境的最簡單步驟,部署多個thinkjs(nodejs)項目

發現一台伺服器部署管理多個nodejs服務,可以采用二級域名weekly.mwcxs.top,也可以采用固定字尾www.mwcxs.top/weekly的方式,本文先從固定字尾的方式部署管理多個nodejs服務。

以下詳細的介紹,以周報企業管理系統為例進行部署,歡迎fork和start,源碼位址:https://github.com/saucxs/weekly,展示位址:http://weekly.mwcxs.top有問題一起交流。

1、去官網下載下傳和自己系統比對的檔案:

 英文網址:https://nodejs.org/en/download/

 中文網址:http://nodejs.cn/download/

建議去英文網站下載下傳 ,因為中文這邊沒有給出穩定版,目前穩定版8點多。最新版是10點多

2、檢視linux系統的位數 

通過  uname -a  指令檢視到我的Linux系統位數是64位(備注:x86_64表示64位系統, i686 i386表示32位系統),如圖

在Linux系統配置Nodejs環境的最簡單步驟,部署多個thinkjs(nodejs)項目
選擇64位
在Linux系統配置Nodejs環境的最簡單步驟,部署多個thinkjs(nodejs)項目

3、下載下傳下來的tar檔案上傳到伺服器并且解壓

我使用的xshell中的rz指令來上傳檔案

在xshell中輸入rz指令,看是否已經安裝了lrzsz,如果沒有安裝則執行  yum   -y  install  lrzsz指令進行安裝。

在Linux系統配置Nodejs環境的最簡單步驟,部署多個thinkjs(nodejs)項目
安裝成功後,輸入rpm -qa lrzsz 指令确認是否正确安裝
在Linux系統配置Nodejs環境的最簡單步驟,部署多個thinkjs(nodejs)項目
輸入rz或者re -y,選擇剛才下的壓縮包
在Linux系統配置Nodejs環境的最簡單步驟,部署多個thinkjs(nodejs)項目
在Linux系統配置Nodejs環境的最簡單步驟,部署多個thinkjs(nodejs)項目
現在開始解壓

tar -xvf node-v8.12.0-linux-x64.tar.xz         
在Linux系統配置Nodejs環境的最簡單步驟,部署多個thinkjs(nodejs)項目

修改檔案夾(目錄)的名字

mv node-v8.12.0-linux-x64 nodejs      
在Linux系統配置Nodejs環境的最簡單步驟,部署多個thinkjs(nodejs)項目

4、執行軟連接配接

注意:确認一下nodejs下bin目錄是否有node 和npm檔案,如果有執行軟連接配接,如果沒有重新下載下傳執行上邊步驟

在Linux系統配置Nodejs環境的最簡單步驟,部署多個thinkjs(nodejs)項目

确認有node和npm檔案了

執行軟連結

ln -s /home/cxs/install/nodejs/bin/npm /usr/local/bin/ 

ln -s /home/cxs/install/nodejs/bin/node /usr/local/bin/      

發現自己沒有權限,然後找老大要來root賬号

在Linux系統配置Nodejs環境的最簡單步驟,部署多個thinkjs(nodejs)項目

下面是root權限下執行

在Linux系統配置Nodejs環境的最簡單步驟,部署多個thinkjs(nodejs)項目

ok了,回到自己使用者下

在Linux系統配置Nodejs環境的最簡單步驟,部署多個thinkjs(nodejs)項目

ok了

 5、安裝pm2,通過pm2啟動node可以使關閉終端時node依然運作。

在Linux系統配置Nodejs環境的最簡單步驟,部署多個thinkjs(nodejs)項目

進入後端代碼的跟目錄,通過npm i 安裝後端代碼需要的庫,啟動node

pm2 start index.js      
在Linux系統配置Nodejs環境的最簡單步驟,部署多個thinkjs(nodejs)項目

說明,沒有配制到全局,雖然安裝到全局,不知道為啥,linux下不像windows下能自動創造一個環境變量去實作我們的全局。是以我們需要建立一個linux下的軟連接配接。

下面紅框就是pm2的安裝路徑,連接配接到全局環境路徑

在Linux系統配置Nodejs環境的最簡單步驟,部署多個thinkjs(nodejs)項目

下面出現的都是全局環境路徑,選哪一個都可以,我選的是紅框的全局環境變量/usr/local/bin

在Linux系統配置Nodejs環境的最簡單步驟,部署多個thinkjs(nodejs)項目

 建立連接配接

ln -s /home/cxs/install/nodejs/bin/pm2 /usr/local/bin/      

使用pm2 list驗證是否成功建立連接配接

pm2 list      
在Linux系統配置Nodejs環境的最簡單步驟,部署多個thinkjs(nodejs)項目

說明pm2全局安裝成功,并且可以随處通路pm2,我試試我的賬号是不是也可以使用pm2指令

在Linux系統配置Nodejs環境的最簡單步驟,部署多個thinkjs(nodejs)項目

出現這個,說明其他賬号也可以全局都可以使用pm2

 5、thinkjs項目,使用

pm2 start pm2.json

 來啟動項目

切換到自己的賬号上,需要全局變量時候沒有權限的時候采用root賬号

上傳項目代碼,使用xshell的rz -y來

在Linux系統配置Nodejs環境的最簡單步驟,部署多個thinkjs(nodejs)項目

執行

pm2 start pm2.json      
在Linux系統配置Nodejs環境的最簡單步驟,部署多個thinkjs(nodejs)項目

出現上圖應該就算啟動起來了

但是我想看一下項目啟動之後通路情況,怎麼搞,這時候需要祭出nginx

6、nginx使用

 已經部署完成,但是公網通路出現問題,出現502,

在Linux系統配置Nodejs環境的最簡單步驟,部署多個thinkjs(nodejs)項目

發現是nginx配置的問題,

方案一:把nginx的實際通路位址172.31.231.103:8362修改為127.0.0.1:8362

upstream weekly_node {
        server 172.31.231.103:8362;
    }            

方案二:把項目node的啟動主機host(127.0.0.1)修改為0.0.0.0

在Linux系統配置Nodejs環境的最簡單步驟,部署多個thinkjs(nodejs)項目

附上完整的nginx服務配置

user  root;
worker_processes  1;

#error_log  logs/error.log;
#error_log  logs/error.log  notice;
#error_log  logs/error.log  info;

#pid        logs/nginx.pid;


events {
    worker_connections  1024;
}


http {
    include       mime.types;
    default_type  application/octet-stream;

    sendfile        on;
    
    keepalive_timeout  65;

    upstream weekly_node {
        server 172.31.231.103:8362;
    }          
    server {
        listen  80;
        server_name  localhost;
        charset utf-8; 
        
        #weekly static
        location /weekly/ {
            #root   /home/fastdfs/nginx/weekly/dist;
            alias /home/fastdfs/nginx/weekly/dist/;
            index  index.html index.htm;
            try_files $uri $uri/ /index.html last;
            #root  html;
            #index   index.html;
        }
    #nodejs服務方向代理
        location /weekly_node/ {
            proxy_pass http://weekly_node;
            proxy_redirect off;
            proxy_set_header Host $host;
            proxy_set_header X-Real-IP $remote_addr;
            proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
            client_max_body_size 10m;
            client_body_buffer_size 128k;
            proxy_connect_timeout 90;
            proxy_send_timeout 90;
            proxy_read_timeout 90;
            proxy_buffer_size 4k;
            proxy_buffers 4 32k;
            proxy_busy_buffers_size 64k;
            proxy_temp_file_write_size 64k;
            
        }

    }   

}      

文中有錯誤的地方希望指出,共同進步

繼續閱讀