📝 NodeJS安装配置

← 返回笔记列表

NodeJS安装配置

2026年05月20日 08:56

下载安装包

cd /app/
wget https://registry.npmmirror.com/-/binary/node/v16.13.2/node-v16.13.2-linux-x64.tar.gz
tar -xvf node-v16.13.2-linux-x64.tar.gz
mv node-v16.13.2-linux-x64 node

配置环境变量

将nodejs的命令node、npm等添加到PATH环境变量中

# 方法1: 配置环境变量
export NODE_HOME=/app/node
export PATH=$PATH:${NODE_HOME}/bin
# 方法2: 为node和npm建立软链接
ln -s /bin/node /app/node/bin/node
ln -s /bin/npm /app/node/bin/npm

设置镜像

# 查看源
npm get registry
# 官方源
npm config set registry https://registry.npmjs.org/
# 命令行临时使用指定镜像(淘宝)
npm --registry https://registry.npm.taobao.org install express
# 命令行永久更改使用指定镜像(淘宝)
npm config set registry https://registry.npm.taobao.org

安装cnpm

npm install -g cnpm --registry=https://registry.npm.taobao.org

检验是否安装成功

# 运行如下命令查看node、npm、cnpm的版本号
node -v
npm -v
cnpm -v

# 查看node_modules、可执行文件的目录
npm root -g|head -n 1
npm bin -g|head -n 1

Http服务同步gitbook

app.js

const http = require('http')
const url = require('url');
const cdprocess = require('child_process')

// 校验token
var checkToken = function(request) {
  var token = request.headers['x-codeup-token'];
  if(token=='riRu******'){
    return true;
  }
  return false;
};

// 同步gitbook文档
var syncGitbook = function() {
  // 异步处理,如果要同步处理可以用execSync
  cdprocess.exec('bash /opt/gitbook/build.sh /opt/gitbook/', function (error, stdout, stderr) {
    if(error) {
        console.error('\n' + error);
    }
    console.log('\n' + stdout);
    console.log('\n' + stderr);
  });
  return true;
};

// 更新serverslist文件
var updateServersList = function(n,u,h,p) {
  // 异步处理,如果要同步处理可以用execSync
  var cmds = "sed -ri 's/^.*:"+n+"/"+u+"@"+h+":"+p+":"+n+"/g' /opt/files/servers.list";
  // console.log('\n' + cmds);
  cdprocess.execSync(cmds, function (error, stdout, stderr) {
    if(error) {
        console.error('\n' + error);
        return false;
    }
    console.log('\n' + stdout);
    console.log('\n' + stderr);
  });
  return true;
};

// httpserver对象
const server = http.createServer()
// request请求事件处理函数需要接收俩个参数
// request请求对象 请求对象可以获取客户端的一些请求信息,例如请求路径
// response响应对象 响应对象可以用来给客户端发送响应消息
server.on('request',function(request,response){
  // console.log('收到客户端的请求路径:'+request.url)
  // console.log('收到客户端的请求头:'+JSON.stringify(request.headers))
  
  response.writeHead(200,{'Content-Type':'application/json;charset=utf-8'})
  var result = {code:"200", message:"SUCCESS"}
  
  // 判断请求路径
  var requrl = request.url;
  var reqpath = url.parse(requrl,true).query
  if(requrl.startsWith('/gitbook')){
      console.log('开始处理Gitbook同步!')
    if(checkToken(request)){
      if(syncGitbook()){
        response.end(JSON.stringify(result));
      }else{
        result = {code:"500", message:"process failed!"};
        response.end(JSON.stringify(result));
      }
    }else{
      console.log('=====Token校验失败!===============')
      result = {code:"500", message:"check sign failed!"};
      response.end(JSON.stringify(result));
    }
  }else if (requrl.startsWith('/serverlist')){
      console.log('开始处理ServerList同步!')
      if(updateServersList(reqpath.n,reqpath.u,reqpath.h,reqpath.p)){
      response.end(JSON.stringify(result));
    }else{
      result = {code:"500", message:"process failed!"};
      response.end(JSON.stringify(result));
    }
  }
  else{
    response.end("Hello, World!")
  }

})
server.listen(3000,()=> {
  console.log("服务器启动成功了,可以通过http://127.0.0.1:3000/")
})

启动Node服务

forever启动应用

#安装forever
npm install forever -g
#启动服务 -w监控文件变化重启应用
forever -w start -l httpserver.log app.js
#停止服务
forever stop -a app.js
#查看应用列表
forever list
#查看应用日志
tail -f /root/.forever/httpserver.log

快速启动应用

# 启动 app.js,pm2 会自动给它分配一个名字(通常是文件名)
pm2 start app.js

# 指定应用名称(推荐,方便管理)
pm2 start app.js --name my-api

# 指定节点数(集群模式,利用多核 CPU,强烈推荐生产环境使用)
# "max" 表示根据 CPU 核数自动开启相应数量的进程
pm2 start app.js -i max --name my-api-cluster

# 传递参数给应用
pm2 start app.js --name worker -- arg1 arg2

查看状态

# 查看所有运行中的应用状态、内存占用、重启次数等
pm2 list
# 或者简写
pm2 l

停止/重启/删除

# 重启应用(代码更新后常用,支持零停机重载)
pm2 restart my-api

# 停止应用
pm2 stop my-api

# 删除应用(从列表中移除,但不会删除文件)
pm2 delete my-api

# 一次性操作所有应用
pm2 restart all
pm2 stop all
pm2 delete all
返回顶部 ← 返回笔记列表