letsencrypt的ACME规范开发折腾记

前言 https是一种互联网趋势,说到https就离不开ssl证书的申请,那么国外有个组织为了解决ssl证书申请的问题开放了互联网申请api接口,而且是全免费的,这就是letsencrypt,那么有了这个api接口接下来做的就是要去看方法调用对吧。然而你找到的只能是一份超级长的规范定义,当然这份规范定义基本上大家都是太长不看的。所以基本上大家都会去找现成的库。那么实现了amce协议的库很多ACME协议客户端,各种各样的,比如最常见的Certbot,网上的教程大多也是针对Certbot的,不过有个缺点就是,如果走的是dns认证,尤其是通配符证书申请,基本上国内比如阿里云的dns还需要自己手动去设置,不过网上已经有相关的插件可以支持阿里云dns了。不过我个人并不喜欢Certbot,尤其是需要传递一堆的参数,当配置的域名一多的时候就很难管理,那么出于以上的考虑就开始写了一个符合自己业务需求的小教本 基于node-acme-client的脚本实现 node-acme-client 本来打算自己去实现一个符合acme规范的客户端,不过时间不允许,而且不太想重复造轮子,所以翻了一下nodejs的库,发现还是有一个完全实现了acme规范的。于是打算基于上述去开发。虽然说是基于轮子去造车,但是有一些概念还是需要了解的。

  • soul
    soul
8 min read
记一次Blog迁移到Ghost
js

记一次Blog迁移到Ghost

之前的用了Hexo搭建了Blog,不过由于某次的操作失误导致Hexo本地的source源文件全部丢失.留下的只有网页的Html文件,众所周知,Hexo是一个本地编译部署类型的Blog系统,个人感觉这种类型的Blog特别不稳定,如果本地出了一些问题那么线上就GG了,当然,使用git是可以管理源文件,但是源文件里又包含很多图片的情况下,download和upload一次的时间也会比较长,虽然说这几年都流行这种类型的Blog,但个人看来还是WEB比较实在。

  • soul
    soul
14 min read

InterceptorCompontent-组件注入概念

前言 本来想定义为拦截器概念的…后来想想好像不对..应该是注入器概念..不过组件名都写好了 就懒得改了. 写这个小功能的原因很简单 目前开发方式都是所有的js放一个文件里了,那么如果我有多个页面,每个页面执行不同的函数 实现方式是不是很简单? function indexCompontent(){ console.log('index') } if($('js-index').length>0){ indexCompontent(); } 用es6的语法写起来就更爽了,可以把每个函数拆开,但是如果我后台想传递一些参数…那是不是很蛋疼了,估计要绑定在html上 然后通过函数主动去获取.. div.js-index(data-user='{"

  • soul
    soul
6 min read

记一次nginx反向代理内网wordpress

记一次nginx反向代理内网wordpress 参考 nginx反向代理wordpress nginx反向代理wordpress.conf Nginx proxy_set_header 理解 说明 公网ip为 233.233.233.233代理服务器内网ip为 10.10.10.10wordpress内网服务器ip为 10.0.0.1其中nginx代理服务器可以访问内网.需要绑定的域名为abc.com,但是目前域名未备案 所以只能绑定公网ip也就是233.233.233.233 第一种解决方案 不更改wordpress的home_

  • soul
    soul
1 min read

nodejs微服务设计笔记

前言 豆瓣读书 这本书简单的介绍了如何使用nodejs来搭建微服务,一本实践与理论结合的书籍,如果对于微服务有比较深刻的了解就可以不用看这本书了,但是对于门外汉来说这本书还是有比较大的价值. seneca github 本书大半部分都围绕这个框架来写的. 这个框架就是实现微服务的一个工具罢了.框架使用了匹配模式来触发函数,从而细粒化函数,比如. seneca.add({role:"math",cmd:"sum"},function(msg,res){ var sum=msg.left+msg.right res(

  • soul
    soul
2 min read
js

常用的js(nodejs)库整理

说明 本文为整理自己的github常用star. 免得到时候找个库都不知道找哪个. 本文包含了nodejs和js.可能还含有一些其他语言的库 详情的可以参考我githubStart uppy : 强大的WEB前端上传库 material-dashboard : mater风格的后端控制面板 dayjs : 类似于moment,但是更加精简的日期格式化 yapi : 可部署的 mock,等接口管理平台 taro : 京东开源的小程序REACT框架 rrweb : 在web中记录你的行为, mobiledoc-kit : mobiledoc格式的编辑器 nconf : nodejs实现线下线上使用不同的配置文件 certbot-letencrypt-wildcardcertificates-alydns-au : 通过DNS自动续期let encrypt申请的SSL证书 dzzoffice : Dzzoffice是一套开源办公套件 owncloud / core : owncloud

  • soul
    soul
15 min read

手把手教你如何利用nodejs+es6+co写一个爬虫

注意事项: 这里的爬虫不做太复杂的处理.. 考虑到并发问题.这里的爬虫仅仅是爬完上一个后再爬下一个. 爬完当页后再去爬取下一页,效率虽然低..但是胜在不用同一时间发请大量请求避免被ban 本文以admin5.com为案例来爬取200页的文章title和content 本文涉及到的es6语法这里只会简单的说明一下.如果看不懂…来打我啊(笑) 涉及框架 crawler co cheerio crawler:为一个封装好的nodejs爬虫库,免去你用request框架发请请求然后处理一大堆的返回代码问题.本文只把crawler当做请求工具用.内容的处理将会用cheerio框架来完成 co:能够把异步代码写成跟同步一样,号称es6的async. cheerio:nodejs版的jQuery 分析目标网站url 目标网站的url都是 http://www.admin5.com/

  • soul
    soul
7 min read
SEO

SEO实战密码-入门SEO

SEO常用指令 *通配 比如搜索某些词 李就代表通配符. 李力冰,李五冰 之类的都会出现在搜索词中 inurl inurl用来搜索url中出现的关键词. 比如我的url是 http://baidu.com?a=我是搜索词那么我搜索 inurl:我是搜索词 那么这个条目就会出现在搜索中。不过百度貌似已经不支持此搜索了 inanchor 搜索 inanchor:理财 的时候.比如s网站有个a标签,里面的文字是理财 比如 <a href='http://c.com'&

  • soul
    soul
3 min read
个人

记一次服务器迁移记录

记一次服务器迁移记录 最近emufan.com的备案被注销了.而且部署在github上访问和收录都有点不稳定.于是想搬个服务器. 一来是备案不太方便.年初的时候在阿里云备案还不需要邮寄资料.这次还需要邮寄资料.太麻烦了.而且目前并不太在意访问速度..话说目前访问速度很慢么? 挑选服务器 一开始选择了香港的服务器.但是后来想想.香港服务器又贵.性能又不太好.带宽低.而且速度访问有时候还是挺慢的(通常都不错).结合自己的开发和需求最终选择了国外.那么问题来了.选择国外如何选择最优质的服务器?这里去网上查询了一下 发现大家都首推linode..不过不支持PayPal付款..这点就蛋疼了..后来再三挑选下终究选择了digitalocean 点我送$10 因为是点击朋友的注册.所以送了$10.再加上自己购买的是服务器,

  • soul
    soul
3 min read

Generator控制sprity合并

Generator控制sprity合并 gulp-sprity是一个不错的插件.但是有一点问题 1.生成sass与less的时候所有的变量都在一个less/sass里面.不太好控制和引入 解决方案问题一 一开始是打算直接用for of循环读取数组内容然后直接生成的.但是这样会带来一点问题.如果上一次的内容没有生成,立即执行下一次内容生成会导致出现1.的情况..虽然你生成了两个文件.但是两个文件都是一样的内容.. 控制异步流程 其根本问题在于异步的流程控制.那么如何控制数组中的异步流程?其实就是.你想要函数执行第一次后再去执行接下来的.那么这里就可以用Generator来控制数组是自带了Symbol.iterator 这个Symbol.iterator实际上就是一个Generator那么就可以写一个函数每次结束后再去next. 如何监听gulp.pipe结束 一开始是打算使用.on(‘end’)事件..结果毛用都没.仔细研究和翻阅文档下.

  • soul
    soul
2 min read

邮箱发送html案例

邮箱发送案例笔记 今天在做邮箱发送案例的时候发现有一些问题需要处理 这里的邮箱指的是QQ邮箱 避免使用*zoom,*display,*xxx 避免使用css样式选择器 规定宽度如650px 利用margin居中 所有样式内联 避免使用复杂样式 1.则是因为邮箱在处理的时候会把不标准的css样式给屏蔽掉.所以导致xxx 以后的样式全部无效.如果要用请把xxx放在最后进行处理 2.和4.可以先利用选择器写好然后再利用gulp脚本自动生成,这里给出一段,所需模块已经require,需要的可以直接去npm进行下载 const gulp=require("gulp"); const inlineCss=require("

  • soul
    soul
1 min read
mongodb

mongodb3.0配置权限漏洞修复方案

阿里云中的mongodb配置漏洞 在阿里云看到的mongodb配置漏洞其中的手动解决方案已经不适用于目前的3.x版本的mongodb.于是这边找了一下资料写一个简单的教程 原因 mongodb之所以会产生的原因还是在于平时我们启动mongodb都是直接mongod –dbpath启动的. 这种启动方式是没有用户名和密码验证的.所以会导致某些用户可以不经过授权直接访问数据库内容.解决方案也很简单 加上-auth即可 mongodb3.0添加auth用户 参考官方案例 和推酷案例 的添加用户先添加一个用户.因为我们这边只想单纯的添加一个root用户并且他拥有管理所有库的权限权力所以我们可以这样 mongo use admin; db.createUser({ user:"root", pwd:"rootpassword", roles:[{role:"

  • soul
    soul
2 min read