acme.sh 免费泛解析证书生成

环境准备

本篇文章使用的 ACME 客户端是基于 Docker 容器使用的,所以需要准备 Docker 运行环境。本文使用的是 CentOS 7.x 与 Docker CE - 19.03.13,且已经安装了 Docker Compose 工具。

我已经参考官方的 GitHub 文章编写了 acme.sh 需要的 Docker Compose 文件,标准模版如下:

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
version: "3"

services:
  acme.sh:
    image: neilpang/acme.sh:latest
    container_name: acme.sh
    command: daemon
    volumes:
      - "<ACME 证书文件的生成目录>:/acme.sh"
      - "/var/run/docker.sock:/var/run/docker.sock"
    environment:
      - Ali_Key=<填写阿里云的 Access Key>
      - Ali_Secret=<填写阿里云的 Access Secret>
      - DEPLOY_DOCKER_CONTAINER_LABEL=__nginx__
      - DEPLOY_DOCKER_CONTAINER_RELOAD_CMD="nginx -s reload -c /etc/nginx/nginx.conf"
    restart: always
    networks:
      - internal-network

networks:
  internal-network:
    external: true

参数配置

针对 ACME 的默认参数,我们只需要提供 DNS 服务商的 API 访问密钥即可,acme.sh 会自动对我们的域名进行配置验证,我这里以阿里云的为例,其他受支持的 DNS 服务商可以前往 Github 文档 查看。

除开环境变量的配置参数以外,针对 Acme 的证书文件生成目录也需要单独进行配置,这块可以用于。

Harbor 2.1.2 安装部署

环境

首先需要准备好 Docker + Docker-Compose 环境,Docker 在 CentOS 7.x 的安装教程请参考 这篇文章,后续文章假设你已经安装好了上述环境。

安装

标准安装

首先从 Harbor 的官方 GitHub Relase 下载最新的安装包,Harbor 本身的运行也是依赖于 Docker Compose ,整个压缩包本质上就是一系列离线镜像,执行安装脚本就是执行 docker load 命令将需要的镜像直接加载。

  1. 下载安装包,请访问 https://github.com/goharbor/harbor/releases/tag/v2.1.2 下载 tgz 压缩包。

  2. 将文件移动到安装文件夹,这里我建立了一个 /opt/harbor 文件夹。

  3. 运行 tar -xvf harbor-offline-installer-v1.10.1.tgz 解压文件包。

  4. 移动到解压完成的文件夹,编辑对应的 harbor.yml 文件,设置域名、SSL 证书等信息。

    注意⚠️:

    这一步的证书文件必须是全链证书(fullchain),否则后续 docker login 的时候会提示 X509 错误。

  5. 执行 ./install.sh --with-clair 开始安装 Harbor。

完成上述步骤以后 Harbor 就安装成功了。

ASP.NET Core 移除已注册的过滤器

背景

ABP vNext 默认对异常响应进行了处理,现在某个项目需要自定义异常响应结果。

问题

在 ABP vNext 的 MVC 模块当中,可以看到是通过 AddService(typeof(AbpExceptionFilter)) 添加的过滤器。最初我的想法是在 ConfigureService() 生命周期方法内,使用 Configure<MvcOptions> 移除已经注册的过滤器。 找到对应的 Remove() 方法,发现需要提供一个 IFilterMetadata 对象,顿时懵逼。

Abp vNext 源码分析 - 21. 界面与文字的本地化

一、简介

ABP vNext 提供了全套的本地化字符串支持,具体用法可以参考官方使用文档。vNext 本身是对 Microsoft 提供的本地化组件进行了实现,通过 JSON 文件提供本地化源,这一点与老 ABP 不太一样,老 ABP 框架是全套自己手撸。vNext 针对服务端和客户端都提供了文字本地化的工具类,这样开发人员可以很快速地开发支持多语言的网站程序。

二、源码分析

本地化涉及的主要模块有 Volo.Abp.Localization.AbstractionsVolo.Abp.Localization,可以看到 Volo 针对包的结构也逐渐向 Microsoft 的构建方式靠拢。有直接依赖的模块是 Volo.Abp.VirtualFileSystem,之所以会引用到这个模块,是因为默认的本地化数据源是通过内嵌 JSON 文件实现的,所以会用到虚拟文件系统读取数据。

CefSharp 开发触屏终端遇到的问题记录

一、背景

最开始准备使用的 Chromely 做一个终端机项目,本来以为挺顺利的一个事情折腾了两天半。由于无法直接控制窗体的属性,最后还是切换到 .NET Framework 4.8 + CefSharp,记录一下遇到的坑和问题。

二、问题

2.1 输入法无法弹出

终端机系统最开始是 Windows 7,系统自带的输入法无法输入中文,后面使用的多文输入法有时候能够输入有时候不能够输入。最后折腾了半天,咨询厂家可以安装 Windows 10,安装后系统自带输入法可以输入中文。

新的问题又出现了,如果窗口没有全屏的情况下,输入法是可以将内容输入到网页的文本框。但是窗口置顶且全屏,触摸 输入的内容就像无法获取焦点一样,无法输入。 QQ–20210428214909

爬了很多网站,都没有给出个明确的答案,最后在 某篇 Issue 里面说将 browser.FocusHandler 属性设置为 null,解决该问题。

Built with Hugo
主题 StackJimmy 设计