ThinkJS 線上部署

2021-09-17 14:27 更新

線上部署

使用 pm2 管理服務(wù)

pm2 是一款專業(yè)管理 Node.js 服務(wù)的模塊,非常建議在線上使用。使用 pm2 需要以全局的方式安裝,如:sudo npm install -g pm2。安裝完成后,命令行下會(huì)有 pm2 命令。

創(chuàng)建項(xiàng)目時(shí),會(huì)在項(xiàng)目目錄下創(chuàng)建名為 pm2.json 的配置文件,內(nèi)容類似如下:

{
  "apps": [{
    "name": "demo",
    "script": "www/production.js",
    "cwd": "/Users/welefen/Develop/git/thinkjs/demo",
    "max_memory_restart": "1G",
    "autorestart": true,
    "node_args": [],
    "args": [],
    "env": {

    }
  }]
}

將 cwd 配置值改為線上真實(shí)的項(xiàng)目路徑,然后在項(xiàng)目目錄下使用下面的命令來(lái)啟動(dòng)/重啟服務(wù):

pm2 startOrGracefulReload pm2.json

pm2 詳細(xì)的配置請(qǐng)見(jiàn) http://pm2.keymetrics.io/docs/usage/application-declaration/。

使用 nginx 做反向代理

創(chuàng)建項(xiàng)目時(shí),會(huì)在項(xiàng)目目錄創(chuàng)建一個(gè)名為 nginx.conf 的 nginx 配置文件。配置文件內(nèi)容類似如下:

server {
    listen 80;
    server_name localhost;
    root /Users/welefen/Develop/git/thinkjs/demo/www;
    set $node_port 8360;

    index index.js index.html index.htm;
    if ( -f $request_filename/index.html ){
        rewrite (.*) $1/index.html break;
    }
    if ( !-f $request_filename ){
        rewrite (.*) /index.js;
    }
    location = /index.js {
        proxy_http_version 1.1;
        proxy_set_header Connection "";
        proxy_set_header X-Real-IP $remote_addr;
        proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
        proxy_set_header Host $http_host;
        proxy_set_header X-NginX-Proxy true;
        proxy_set_header Upgrade $http_upgrade;
        proxy_set_header Connection "upgrade";
        proxy_pass http://127.0.0.1:$node_port$request_uri;
        proxy_redirect off;
    }
    location ~ /static/ {
        etag         on;
        expires      max;
    }
}

將 server_name localhost 里的 localhost 修改為對(duì)應(yīng)的域名,將 set $node_port 8360 里的 8360 修改和項(xiàng)目里監(jiān)聽(tīng)的端口一致。

修改完成后,將該配置文件拷貝到 nginx 的配置文件目錄中,然后通過(guò) nginx -s reload 命令 reload 配置,這樣就可以通過(guò)域名訪問(wèn)了。

線上建議開(kāi)啟配置 proxy_on,這樣就可以禁止直接通過(guò) IP + 端口來(lái)訪問(wèn)。修改配置文件src/common/config/env/production.js,如:

export default {
  proxy_on: true
}

關(guān)閉靜態(tài)資源處理的配置

為了方便開(kāi)發(fā),ThinkJS 是支持處理靜態(tài)資源請(qǐng)求的。但代碼部署在線上時(shí),是用 nginx 來(lái)處理靜態(tài)資源請(qǐng)求的,這時(shí)可以關(guān)閉 ThinkJS 里處理靜態(tài)資源請(qǐng)求的功能來(lái)提高性能。

可以在配置文件 src/common/config/env/production.js 中加入如下的配置:

export default {
  resource_on: false
}

使用 cluster

線上可以開(kāi)啟 cluster 功能達(dá)到利用多核 CPU 來(lái)提升性能,提高并發(fā)處理能力。

可以在配置文件 src/common/config/env/production.js 中加入如下的配置:

export default {
  cluster_on: true
}
以上內(nèi)容是否對(duì)您有幫助:
在線筆記
App下載
App下載

掃描二維碼

下載編程獅App

公眾號(hào)
微信公眾號(hào)

編程獅公眾號(hào)