美文网首页熊爸的学习时间
koa-generator创建koa2项目

koa-generator创建koa2项目

作者: 熊爸天下_56c7 | 来源:发表于2020-11-09 22:33 被阅读0次

    一. 使用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项目

        本文链接:https://www.haomeiwen.com/subject/ovkbmktx.html