初学nodejs+express,打造cms系统(6)补充运行环境优化

野生程序猿-杂烧4年前案例分享713

本来主要功能完成了,但是感觉少了点什么,其实就是自创(或许也有别人想到吧)了一套运行环境方案。

实际部署的时候,我们是需要与nginx结合的,使用nodejs来提供静态资源的web服务非常的不nice,必须专业的人干专业的事情。开发的时候我们就得整一套贴合实际生产环境的开发调试环境。集成一套nginx

在bin目录下复制 一个nginx,“nginx.exe”重命名为“nginx_my.exe”,调整启动脚本start.js

#!/usr/bin/env node


var app = require('../app');
var debug = require('debug')('demo1:server');
var http = require('http');
var config = require('../config/config');
var fs = require("fs");  // 加载fs文件系统模块

var exec = require('child_process').exec;
var port = config.port; //从配置文件读取到端口号
var port_nginx= config.port_nginx; // nginx端口


var www_path=__dirname+'/wwwroot';
www_path=www_path.replace(/\\/g,'/');

var nginx_conf=`

  server {
    listen      ${port_nginx};
    server_name _;	# 域名 "_" 代表获取匹配所有

    charset     utf-8;
    client_max_body_size 500M;

    root ${www_path};# 站点根目录
    index index.html index.htm;

    location /${config.admin_dir}/ {
      proxy_pass http://127.0.0.1:${port}/${config.admin_dir}/;  # nginx代理的服务
      proxy_set_header Host $host;
      proxy_set_header X-Real-IP $remote_addr;
      proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
    }
    location /api/ {
      proxy_pass http://127.0.0.1:${port}/api/;  # nginx代理的服务
      proxy_set_header Host $host;
      proxy_set_header X-Real-IP $remote_addr;
      proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
    }
    

  }
`;

var nginx_conf_path=__dirname+'/nginx/conf/my.conf';
nginx_conf_path=nginx_conf_path.replace(/\\/g,'/');
console.log(nginx_conf_path);

fs.writeFileSync(nginx_conf_path, nginx_conf);


//处理批处理命令
var nginx_path=__dirname+'/nginx/';
nginx_path=nginx_path.replace(/\\/g,'/');

var nginx_path_arr=nginx_path.split('/');
var disk_dir=nginx_path_arr[0];

var nginx_bat=`
cd ${disk_dir}
cd ${nginx_path}
nginx_my.exe -g "daemon off;"
`;

var nginx_bat_path=`${nginx_path}nginx_my.bat`;
fs.writeFileSync(nginx_bat_path, nginx_bat);

var nginx_cmd=`${nginx_bat_path}`;
console.log(nginx_cmd);

//杀死nginx 进程 taskkill /f /im **.exe
var nginx_exe=config.nginx_exe;
var nginx_kill_cm=`taskkill /f /im ${nginx_exe}`;

exec(nginx_kill_cm, function(error, stdout, stderr) {
  // 获取命令执行的输出
  var exec_pid=exec(nginx_cmd, function(error, stdout, stderr) {
    // 获取命令执行的输出
    //console.log(error, stdout, stderr);
  });
  
  console.log('************exec_pid***********');
  console.log(exec_pid.pid);
});



app.set('port', port);

/**
 * Create HTTP server.
 */

var server = http.createServer(app);

/**
 * Listen on provided port, on all network interfaces.
 */

server.listen(port);
server.on('error', onError);
server.on('listening', onListening);

/**
 * Event listener for HTTP server "error" event.
 */

function onError(error) {
  if (error.syscall !== 'listen') {
    throw error;
  }

  var bind = typeof port === 'string'
    ? 'Pipe ' + port
    : 'Port ' + port;

  // handle specific listen errors with friendly messages
  switch (error.code) {
    case 'EACCES':
      console.error(bind + ' requires elevated privileges');
      process.exit(1);
      break;
    case 'EADDRINUSE':
      console.error(bind + ' is already in use');
      process.exit(1);
      break;
    default:
      throw error;
  }
}


/**
 * Event listener for HTTP server "listening" event.
 */

function onListening() {
  var addr = server.address();
  var bind = typeof addr === 'string'
    ? 'pipe ' + addr
    : 'port ' + addr.port;
  debug('Listening on ' + bind);
}

测试了几天整体运行还好。


相关文章

初学nodejs+express,打造cms系统(2)

先安装需要的组件,主要是express脚手架,deasync,mysql,cookie-parserpackage.json{   "name": ...

初学nodejs+express,打造cms系统(4)

前面已经改造了基础模块,下面到了页面制作环节。先前的脚手架已经支持ejs了,在views文件夹里出现了测试ejs,下面基本上是锻炼自己仿写能力了。【routes/api.js】var exp...

初学nodejs+express,打造cms系统(5)

今天来尝试做上传功能,其实就是一个上传接口。已经跟php完全两样了,两眼一抹黑,直接百度搜索出来拿过来用,也不知道性能如何,反正可以跑通,需要找机会验证一下。【upload.js】//api库&nbs...

初学nodejs+express,打造cms系统(3)

上次聊到了我的base.js 插入式编程,接着聊编程正题首先是数据库操作类【db_mysql.js】var mysql=require('mysql');  va...

初学nodejs+express,打造cms系统(1)

初学nodejs+express,打造cms系统(1)

先前php开发了一套cms系统,算半个框架吧,自己常年敏捷开发项目用,先给大家介绍一下。主要包含以下功能先介绍一下我原先的php系统包含哪些功能?1、模型管理。建立个模型,给模型建立字段如:姓名、身份...