koa-generator创建koa2项目

一. 使用koa-generator生成koa2项目

1.首先安装koa-generator

npm install -g koa-generator

建立软连接

ln -s /opt/nodejs/node-v10.9.0-linux-x64/bin/koa2 /usr/local/bin/koa2
  1. 在你想创建工程的目录里执行
koa2 myKoa2
  1. 成功创建项目后,进入项目目录,并执行npm install命令
$ cd myKoa2
$ npm install
  1. 启动项目
    这个命令使用nodemon实现里即时更新
npm run dev

如果是生产环境可以用 (不带即时更新)

npm start

默认端口: http://localhost:3000

调试信息看上去很舒服

二. 目录结构

.
+-- bin
|   +-- www               // 项目启动必备文件,配置端口等服务信息
+-- node_modules          // 项目依赖,安装的所有模块都会在这个文件夹下
+-- public                // 存放静态文件,如样式、图片等
|   +-- images            // 图片
|   +-- javascript        // js文件
|   +-- stylesheets       // 样式文件
+-- routers               // 存放路由文件,如果前后端分离的话只用来书写api接口使用
|   +-- index.js
|   +-- user.js
+-- views                 // 存放存放模板文件,就是前端页面,如果后台只是提供api的话,这个就是备用
|   +-- error.pug
|   +-- index.pug
|   +-- layout.pug
+-- app.js                // 主入口文件
+-- package.json          // 存储项目名、描述、作者、依赖等等信息
+-- package-lock.json     // 存储项目依赖的版本信息,确保项目内的每个人安装的版本一致

三. 配置文件 /bin/www

#!/usr/bin/env node

/**
 * Module dependencies.
 */

//引入app.js
var app = require('../app');
//引入debug模块
var debug = require('debug')('demo:server');
//引入http模块
var http = require('http');

/**
 * Get port from environment and store in Express.
 */
//初始化端口 3000端口
var port = normalizePort(process.env.PORT || '3000');
// app.set('port', port);

/**
 * Create HTTP server.
 */
//创建服务
var server = http.createServer(app.callback());

/**
 * Listen on provided port, on all network interfaces.
 */
//服务绑定port端口
server.listen(port);
//服务绑定onerror事件
server.on('error', onError);
//服务绑定onListening监听事件
server.on('listening', onListening);

/**
 * Normalize a port into a number, string, or false.
 */

function normalizePort(val) {
  var port = parseInt(val, 10);

  if (isNaN(port)) {
    // named pipe
    return val;
  }

  if (port >= 0) {
    // port number
    return port;
  }

  return false;
}

/**
 * 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);
}

四. 强杀node

有时候, 我们无意间断开了远程服务器链接, 当我们再重新链接时, koa2项目其实还在运行, 如果我们想更新项目(比如使用git), 当我们使用npm start时,会出现端口被占用错误, 这是因为之前的koa2 nodejs进程还在运行, 此时使用以下方式杀死进程

killall node

五. 使用PM2启动koa2项目

首先确保自己全局安装好了 PM2, 然后:

在koa2中需要这样启动:

pm2 start ./bin/www --name="www"

六. 在宝塔面板中启动PM2来启动KOA2项目

在商店中下载安装PM2工具包(nodejs, npm , nvm , pm2会一并安装)

安装完成后,进入设置页面

这里要说声抱歉, 我尝试了很多方法没解决 端口OFF 的问题
索性还是通过上一节的语句启动一次, 当使用代码第一次启动完成后, 宝塔会监测到这个进程, 之后就可以使用宝塔pm2插件接管了

七. PM2主要命令

对koa2来说,还是要把app.js 换成 ./bin/www

$ pm2 start app.js # 启动app.js应用程序

$ pm2 start app.js -i 4 # cluster mode 模式启动4个app.js的应用实例. 4个应用程序会自动进行负载均衡

$ pm2 start app.js --name="api" # 启动应用程序并命名为 "api"

$ pm2 start app.js --watch # 当文件变化时自动重启应用

$ pm2 start script.sh # 启动 bash 脚本

$ pm2 list # 列表 PM2 启动的所有的应用程序

$ pm2 monit # 显示每个应用程序的CPU和内存占用情况

$ pm2 show [app-name] # 显示应用程序的所有信息

$ pm2 logs # 显示所有应用程序的日志

$ pm2 logs [app-name] # 显示指定应用程序的日志

$ pm2 flush # 清空所有日志文件

$ pm2 stop all # 停止所有的应用程序

$ pm2 stop 0 # 停止 id为 0的指定应用程序

$ pm2 restart all # 重启所有应用

$ pm2 reload all # 重启 cluster mode下的所有应用

$ pm2 gracefulReload all # Graceful reload all apps in cluster mode

$ pm2 delete all # 关闭并删除所有应用

$ pm2 delete 0 # 删除指定应用 id 0

$ pm2 scale api 10 # 把名字叫api的应用扩展到10个实例

$ pm2 reset [app-name] # 重置重启数量

$ pm2 startup # 创建开机自启动命令

$ pm2 save # 保存当前应用列表

$ pm2 resurrect # 重新加载保存的应用列表

$ pm2 update # Save processes, kill PM2 and restore processes

$ pm2 generate # Generate a sample json configuration file

pm2文档地址:http://pm2.keymetrics.io/docs/usage/quick-start/

你可能感兴趣的:(koa-generator创建koa2项目)