/images/avatar.jpg

我用Github Action为自己网站做了定时快照

,‘2021-09-15 17:24:29’,’本篇文章预计阅读时间 6 分钟,使用技术包含: - Github Action - Nodejs - Puppeteer+Chromium

最近有空闲,做了一个有意思的小玩意,通过Github Action能定时对我的网站首页做截图并保存起来,具体是怎么实现的呢?这就不得不介绍一个非常实用的插件Puppeteer 了。

Puppeteer is a Node library which provides a high-level API to control Chrome or Chromium over the DevTools Protocol. Puppeteer runs headless by default, but can be configured to run full (non-headless) Chrome or Chromium. 摘自 puppeteer 官方介绍

Puppeteer 是一个针对Chromium API进行封装的Node包,其可以通过几个简单的函数就实现对网页的操作,而且因为使用的是Chromium内核,所以使用ReactVueAngularJS等前端渲染的页面,也能完全载入不受影响,可以说和我们用浏览器访问的效果是一样的。

安装

安装puppeteer,安装时需要注意,是需要将对应版本的Chromium也安装的。

npm i puppeteer

然后需要进入puppeteer包内安装下依赖,这样对应版本的chromium就安装上了。

centos7升级openssh以及openssl

背景

在开发过程中,需求甲方提供的服务器还是用的是Centos7系统,其openssh以及openssl版本还很低,安全方面有很多问题,而yum又无法升级,因此我们需要通过下载源码来安装,本文就一步一步教大家如何通过源码升级最新的openssh以及openssl

升级openssl

首先,我们需要去openssl官网下载最新的版本源码包

作者当前最新稳定版本为 openssl-1.1.1k.tar.gz

cd /root
curl -o openssl.tar.gz https://www.openssl.org/source/openssl-1.1.1k.tar.gz
tar xzf openssl.tar.gz

下载之后,我们进入目录

cd openssl-1.1.1k/

查看下安装说明

more INSTALL

现在我们先安装依赖

yum instal -y gcc zlib-devel pam pcre-devel perl autoconf

如果不需要安装pam和zlib的话可以不安装这两个

推荐一个golang的tcp处理包

在做物联网设备对接中,我们常常要用到TCP长连接来交互数据,而Golang的设计理念,天生适合做TCP连接的处理。

今天推荐一个开源包 github.com/shootingfans/socket 来更方便的处理TCP连接操作。

这个包中,首先将处理连接分为两种

  • AsyncProcessor 异步处理器
    • SyncProcessor 同步处理器

其中异步处理器会在处理连接时,分为读协程、写协程以及工作协程,同时工作协程是可以配置多个的,数据流转为

连接 -> 读取协程 --Worker通道--> 多个Worker处理 --> 调度器 --写通道--> 写协程--> 连接

调度器则作为一个协调器使用,调取内存取了连接、写入通道等,其结构定义如下

// Scheduler
// 调度器
type Scheduler struct {
    // 连接
    Conn            *Connection
    // 上下文
    Ctx             context.Context
    // 写入通道
    WriteChan       chan<- []byte
    rw              sync.RWMutex
    values          map[interface{}]interface{}
}

同时调度器还提供了存、读、删,以及自增、自减几个功能用于在多个Worker内共享数据

使用openssl生成自签证书

在grpc微服务集群中,我们常常使用自签证书来做服务加密,那如何生成自签证书呢?下面就使用openSSL来生成自签证书

首先我们需要生成服务私钥

openssl genrsa -out server.key 1024

通过私钥生成证书签名文件

openssl req -new -key server.key -out server.csr

现在按照提示,需要按提示输入Country Name 再按照提示,输入State or Province Name 按提示输入Locality Name 再输入Organization Name 再输入Organizational Unit Name 输入Common Name,此处可以写交互的域名 输入Email Address 之后会提示输入一个密码,对证书做保护 再按提示输入一个可选的公司名 这时可以看到生成了一个server.csr

现在我们已经有了证书签名文件,再使用命令申请一个证书

openssl x509 -req -in server.csr -out server.crt -signkey server.key -days 365

这样就生成一个有效期一年的证书,也可以更改365来变更有效期

修改docker的默认存储目录

docker的默认存储

目前docker默认是在/var/lib/docker下存储运行时等数据,当运行容器较大,时间很长时,这个目录会很大,仅做测试还好,当真正去跑的时候,会很大,因此需要我们去修改docker的默认存储位置

如何修改docker的默认存储位置

使用systemctl启动的docker

使用systemctl启动的docker服务,我们需要修改器服务的service配置

mkdir /mnt/docker-runtime
vi /etc/systemd/system/multi-user.target.wants/docker.service

找到 ExecStart 这行,我们在启动参数中增加 -g /mnt/docker-runtime,然后保存退出,使用命令刷新服务

systemctl enable docker

这样就刷新了服务,再使用命令重启

systemctl restart docker

直接修改docker的配置

此方法对systemctl启动的docker不起作用

首先找到docker的配置文件

  • Ubuntu 中的位置是:/etc/default/docker
  • CentOS 中的位置是:/etc/sysconfig/docker

键入配置