标签 - NodeJS 共找到结果 7 条

alidns-nodejs

阿里云DNS解析API调用

install 安装

npm i alidns-nodejs --save

use 使用

请查看 demo.js

import alidns from "alidns-nodejs";
var DNS = ALIDNS({
  accesskeyId: 'your accesskeyId',
  accesskeySecret: 'your accesskeySecret'
});
DNS.queryData(params,callback);

params 可参考: 阿里云DNS解析 - API概况

文件目录

.
├── README.md
├── alidns.js
├── demo.js
├── index.js
└── package.json

参考地址:

相关代码:

阅读全文

博客每次修改代码需要上传到 git仓库 - nuxt-express-blog,查看了一下 Gogs 使用文档 发现有 web钩子 这个选项,然后发现了本地可实现的 Git钩子.

1.png

有三种状态分别是: pre-receive,update,post-receive分别对应接收前,接收时,接收后三种状态,希望push代码后实现更新部署则会用到post-receive

2.png

这里用到的shell命令是:

#!/bin/bash
unset $(git rev-parse --local-env-vars);
cd /usr/share/nginx/vue-blog
git pull origin master &&  npm i && npm run build

当然,项目运行需要的进程守护进程是pm2,由于nuxt使用npm run build会在本地生成build文件夹,就直接用pm2监听build的改动了:

{
  "name": "blog",
  "script": "/usr/local/bin/npm",
  "args": "start",
  "cwd": "./",
  "watch": [
    "build"
  ],
  "ignore_watch": [
    "node_modules"
  ],
  "watch_options": {
    "followSymlinks": false
  }
}

然后就可以尝试使用git push看看是否会执行Gogs的post-receive钩子事件

相关链接:

阅读全文

阿里云服务器 ECS 实现自定义监控图表,图表实现为百度的 Echarts 图表

效果查看

CPU使用率(%)

公网带宽(bits/s)

安装

npm i -S aliyun-metrics

下面贴出我的实现方式:

const Metrics = require("aliyun-metrics");
const moment = require('moment');

const client = new Metrics({
  accesskeyId: 'your_accesskey_id',
  accesskeySecret: 'your_accesskey_secret',
})

const ECS = params => {
  return new Promise((resolve, reject) => {
    client.queryData({
      project: "acs_ecs_dashboard",
      metric: params.metric,
      period: 60,
      startTime: params.startTime || moment.utc()
        .subtract(1, 'hour')
        .format(),
      endTime: params.endTime || moment.utc()
        .format(),
      dimensions: `{instanceId:'your_instanceId'}`
    }, function(error, data) {
      if (error || !data)
        reject(error || 'data is null');
      else
        resolve(data);
    });
  })
}

module.exports = ECS;

关于 accesskeyId 和 accesskeySecret 请参考:创建AccessKey

client.queryData 参数说明:

名称 类型 是否必须 描述
project String 名字空间,表明监控数据所属产品,如 “acs_ecs_dashboard”,“acs_rds_dashboard”等
metric String 监控项名称,查看预设监控值参考
period String 获取监控数据的间隔时间,单位为秒。取值范围:60,600,3600。默认值:60
startTime String 获取数据的结束时间点。按照 ISO8601 标准表示,并需要使用 UTC 时间,格式为:YYYY-MM-DDThh:mm:ssZ。 如果指定的秒(ss)不是 00,则自动换算为下一分钟。
endTime String 获取数据的结束时间点。按照 ISO8601 标准表示,并需要使用 UTC 时间,格式为:YYYY-MM-DDThh:mm:ssZ。 如果指定的秒(ss)不是 00,则自动换算为下一分钟。
dimensions String json串,例如:{"instanceId":"i-23gyb3kkd"}。

返回值请参考:查看预设监控值参考

参考地址:

阅读全文

后台一直都是密码登录,简直枯燥的没朋友,看见小伙伴的博客设置的是扫描二维码登录,然后请教了一番加上自己的理解,实现了小程序配合扫码登录后台

首先是要理解扫码登录的逻辑,在我看来扫码的小程序就是superadmin,扫码就能实现后台的token生成,保存到redis,发放给前端页面,所以小程序的权限设置是很重要的,这里单独新增一个表:tp_wx,存放微信账号的唯一标识,可读可写:

OPEN_ID字段就是小程序里 wx.login 方法的返回值,用户唯一标识, 数据库里不存在该OPEN_ID的话当然是没有权限的:

下面是简单的思路:

  1. websocket连接服务端之后保存一个自定义的标识,对应相应客户端,下面把这个标识称之为key

  2. 再把这个key通过qrcode生成二维码显示到页面上等待小程序扫码读取

  3. 小程序扫码后,获取到这个key并发送给服务端

  4. 服务端再通过小程序发送的key找到对应的客户端并提示登录成功或者失败

具体代码已上传至github: websocket-wxApp-login

参考地址:

阅读全文

开发环境配置websocket踢人操作已实现,可上传到生产环境却出错了, 出错的原因是生产环境使用的是https,报错如下: 百度了半天找到结局方法是websocket也用SSL协议,即wss, html页面上的ws

var ws = new WebSocket('ws://blog.mrabit.com');

需要替换成wss:

var ws = new WebSocket('wss://blog.mrabit.com');

原以为这样就完工了,结果又出现报错: 再次百度....... 可以通http模块实现wss代理,需要修改nginx的代理配置,新增配置:

    location /wss {
       proxy_pass http://127.0.0.1:8088/;
       proxy_read_timeout 60s;
       proxy_set_header Host $host;
       proxy_set_header X-Real_IP $remote_addr;
       proxy_set_header X-Forwarded-for $remote_addr;
       proxy_http_version 1.1;
       proxy_set_header Upgrade $http_upgrade;
       proxy_set_header Connection 'Upgrade';
    }

html上的websocket连接需要换成:

var ws = new WebSocket('wss://blog.mrabit.com/wss');

重启nginx,完工

参考地址:

阅读全文