Study hard and make progress every day!

2023-01-21
如何在aliyunLinux 17.1中添加Let's Encrpyt访问根证书

背景

有几台2019年开的阿里云服务器,当时系统选择了Aliyun Linux 17.1 64位, 因为Let’s Encrypt证书DST-Root-CA-X3过期的原因,访问Let’s Encrypt网站会报SSL错误。

1
ERROR: cannot verify gems.ruby-china.com's certificate, issued by ‘/C=US/O=Let's Encrypt/CN=R3’:

过程

如果是CentOS 7系统,直接有现成补丁,直接yum update ca-certificates就可以升级系统证书来应对该问题。

搜了一下,Aliyun Linux 17.1的系统说明,在阿里云官网上已经找不到了,现存的只有Alibaba Cloud Linux 2Alibaba Cloud Linux 3。 只有在CSDN的一篇文章中找到了一些描述,说Aliyun Linux 17.1是兼容CentOS 7.2的。

Aliyun Linux 17.1系统中,敲yum update ca-certificates,直接提示No packages marked for update
yum install ca-certificates, 提示Package ca-certificates-2015.2.6-73.4.al7.noarch already installed and latest version
官方yum源中的 ca-certificates 包居然还是2015.2.6的。

阅读此文

2022-12-05
MacOS使用Preview合并PDF和图片到PDF中

合并多个pdf文件

转自苹果官网: 在 Mac 上的“预览”中合并 PDF

将两个或多个 PDF 的全部内容或部分内容合并到单个 PDF。

【警告】你对“预览”文稿所做的更改会自动存储。如果你想保留原始 PDF(除了新合并的 PDF 之外),请在合并前选取“文件”>“复制”来为每个 PDF 创建一个副本。

一个 PDF 的页面缩略图拷贝到另一个 PDF 的边栏。

阅读此文

2022-10-29
【转载】使用Mac预览合并多张图片

以下文字转自: 无需第三方,使用Mac预览合并多张图片 图片另外制作。

作者:路过mac
来源:稀土掘金


在制作文章配图时,有时需要截取多层窗口的屏幕截图。

在这里,我会使用“预览”来完成这个操作。

  • 将需要合并的图片选中,用预览打开(假设三张图片为 1、2、3)。
  • 由于在实际操作中,图 2 和图 3 所示窗口的位置会超出图 1 窗口,也就是会超出图1 的画布边缘,这样会导致 2 和 3 显示不完整,所以在合并图片之前需要先调整图 1 的画布大小。

在 1 的画布上用「Command+A」「Command+X」全选图片并剪切,然后通过「工具-调整大小」来调整画布尺寸,调整成功后用「Command+V」将图 1 粘贴上去。

preview_scale_size

阅读此文

2022-10-28
Jenkins常用插件Publish Over SSH介绍

本文插件介绍,插件安装和插件使用章节中大多数内容参考转自: Jenkins常用插件Publish Over SSH

插件介绍

可以实现不同节点之间传递文件,比如A节点将代码编译打包好,然后通过ssh发送到目标节点上,配置相应的命令完成项目的部署,目标节点无需是是一个slave,只要A节点能够通过ssh连接到B节点即可。

插件安装

插件市场搜索Publish Over SSH,然后安装它

publish_over_ssh_plugin.png

插件主页:https://plugins.jenkins.io/publish-over-ssh

插件使用

配置远程主机

  1. 依次点击-“系统管理(Manage Jenkins)”-“系统配置(Configure System)”,找到”Publish over SSH”;
  2. 在”Passphrase”输入框中填写通用密码,也可以指定私钥路径,私钥可以使用路径也可以直接粘贴key的内容;
  3. 在”SSH Servers”处点击”新增按钮(Add)”,新增一个远程主机;
  4. 在”Name”输入框中填写这个远程主机的名称;
  5. 在”Hostname”输入框中填写IP地址,或者节点能够解析的主机名称;
  6. 在”Username”输入框中填写用于远程登录的用户名;
  7. 在”Remote Directory”输入框中填写远程主机存放文件的目录,这个目录必须已存在;
  8. 如果当前的远程主机密码不是第二步配置的通用密码,可以点击右下角的”高级”,在Password输入框中填写这个远程主机的密码;
  9. 点击”Test Configuration”测试配置,如果报错,根据错误提示进行相应的更改。
阅读此文

2022-10-27
JetBrains IDE设置tips

RubyMine中设置全局搜索结果数

默认情况下,RubyMine的“在文件中搜索”的搜索结果最多只显示100条。

可通过更改设置来显示更多的记录条数。

设置方法:

  • 英文:Settings (Preferences on macOS) | Advanced Settings | Maximum number of results to show in Find In Path/Show Usages preview
  • 中文: 设置(macOS下是Preferences) | 高级设置 | 查找/替换 | 在”在文件中查找/显示用法“预览中显示的最大结果数

将对应的数值修改为100以上,比如1000。

有一个提示说:修改这个限值可能会显著增加IDE内存使用量

max_search_num_setting_of_rubymine.png

参考自: Find in Path shows max 100 results

阅读此文

2022-10-26
使用journalctl来查看systemd的日志

journalctl来查看systemd日志

当我们使用systemd来运行service时,脚本中echo输出的内容不会显示在Terminal中,我们需要使用systemctl status service-name来查看service的日志。

systemctl status输出的日志信息并不够详细,而且当service的脚本中运行了两个Process,日志比较多时,可能只够显示最后一个Process的日志。

我们可以使用journalctl来查看完整的使用systemctl启动的service的日志。几个典型的用法如下:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
# 查看最近的systemctl服务日志, 多个服务混在一起的
journalctl -f
# 不分页显示日志
journalctl --no-pager
# 指定某个服务来显示日志
journalctl -u service-name.service
# 开机后某个服务的日志
journalctl -u service-name.service -b
# 显示从某个时间点开始的日志
journalctl --since "2018-08-30 14:10:10"
# 显示到某个时间点截止的日志
journalctl --until "2018-09-02 12:05:50"
# 开始和结束和合起来使用
journalctl --since "2018-08-30 14:10:10" --until "2018-09-02 12:05:50"
阅读此文

2022-10-21
如何迁移jenkins数据

背景

服务器上运行jenkins的服务一直临时使用的是个人的账号,现在统一要求使用固定的发布账号来进行管理。因此需要将个人账号下的jenkins数据迁移到发布账号下。

一些基本信息:

  • 服务器系统: CentOS 7.x

  • 原账号: carl.shen

  • 新发布账号: deployer-jenkins
  • 发布模式: 在官网手动下载的war包运行部署,不是yum方式。

准备

jenkins的数据是通过自己目录下的xml来进行管理的,没有用到数据库。因此迁移时,只需要将对应的数据文件迁移到新账号指定的目录即可。

为了避免重新配置各个job,因此整个文件夹进行迁移是比较好的方法。

迁移过程

迁移步骤

由于是war包运行的方式,因此所有的jenkins数据默认都保存在家目录的~/.jenkins目录下。因此迁移步骤如下:

  • 在旧账号中停止jenkins服务。
  • 打包旧账号中的~/.jenkins的内容,拷贝到新账号的~/.jenkins目录中。
  • 新账号中修改~/.jenkins的文件读写权限为新账号。
  • 新账号中运行jenkins服务。

阅读此文

2022-10-11
【转载】如何定义systemd全局变量,以及systemd介绍

以下文字全部转载自如何定义systemd全局变量,以及systemd介绍

systemd的全局配置项,涉及这两个conf文件:

  1. 系统配置文件: /etc/systemd/system.conf
  2. 用户配置文件: /etc/systemd/user.conf

以下是来自archlinux网站文章“systemd/User/User_(简体中文))”的介绍解释, 讲的比较详细

systemd 用户实例不会继承类似 .bashrc 中定义的环境变量。systemd 用户实例有三种设置环境变量的方式:

  1. 对于有 $HOME 目录的用户,可以在 ~/.config/systemd/user.conf 文件中使用 DefaultEnvironment 选项,这些设置只对当前用户的用户单元有效。
  2. /etc/systemd/user.conf 文件中使用 DefaultEnvironment 选项。这个配置在所有的用户单元中可见。
  3. /etc/systemd/system/user@.service.d/ 下增加配置文件设置。 这个配置在所有的用户单元中可见。
  4. 在任何时候, 使用 systemctl --user set-environmentsystemctl --user import-environment. 对设置之后启动的所有用户单元有效,但已经启动的用户单元不会生效。
    提示: 如果想一次设置多个环境变量,可以写一个配置文件,文件里面每一行定义一个环境变量,用 “key=value” 的键值对表示,然后在你的启动脚本里添加xargs systemctl --user set-environment < /path/to/file.conf

可以使用DefaultEnvironment项定义多个全局变量,使用空格分隔开,比如:

DefaultEnvironment=”SYSTEMD_PAGER=cat” “LD_LIBRARY_PATH=/oemapp/lib” “PATH=/oemapp/bin:/usr/sbin:/usr/bin:/sbin:/bin”

另外,网络上这篇文章,也讲的不错: https://www.it610.com/article/1292039680300228608.htm

以上是定义全局环境变量的方法;接下来,参考下述链接文章,对systemd做个摘录介绍。

http://www.ruanyifeng.com/blog/2016/03/systemd-tutorial-commands.html

阅读此文

2022-10-09
在systemd服务中使用环境变量

问题起源

systemd中使用脚本配置一个自有java程序的自启动时,发现一个自定义的环境变量无法在systemd中读取,在shell中手动启动就可以正常工作。

上网查了一下systemd读取环境变量的相关知识,最终选择在脚本中source了对应的环境变量文件,解决了问题。

systemd读取环境变量的机制和几种方法整理罗列如下,以作备忘。

systemd 读取环境变量的机制

根据systemd/User中的说明如下:

Environment variables

The user instance of systemd does not inherit any of the environment variables set in places like .bashrc etc. There are several ways to set environment variables for the systemd user instance:

  • For users with a $HOME directory, create a .conf file in the ~/.config/environment.d/ directory with lines of the form NAME=VAL. Affects only that user’s user unit. See environment.d(5) for more information.
  • Use the DefaultEnvironment option in /etc/systemd/user.conf file. Affects all user units.
  • Add a drop-in configuration file in /etc/systemd/system/user@.service.d/. Affects all user units; see #Service example
  • At any time, use systemctl --user set-environment or systemctl --user import-environment. Affects all user units started after setting the environment variables, but not the units that were already running.
  • Using the dbus-update-activation-environment --systemd --all command provided by dbus. Has the same effect as systemctl --user import-environment, but also affects the D-Bus session. You can add this to the end of your shell initialization file.
  • For “global” environment variables for the user environment you can use the environment.d directories which are parsed by some generators. See environment.d(5) and systemd.generator(7) for more information.
  • You can also write a systemd.environment-generator(7) script which can produce environment variables that vary from user to user, this is probably the best way if you need per-user environments (this is the case for XDG_RUNTIME_DIR, DBUS_SESSION_BUS_ADDRESS, etc).

One variable you may want to set is PATH.

After configuration, the command systemctl --user show-environment can be used to verify that the values are correct.

搜刮网上的一些说法后,总结如下:

  • /etc/profile或者/etc/security/limit.d这些文件中配置的环境变量仅对通过pam登录的用户生效,而systemd是不读这些配置的,所以这就造成登录到终端时查看环境变量和手动启动应用都一切正常,但是systemd无法正常启动应用
  • 如果需要给systemd配置默认参数,全局的配置在/etc/systemd/system.conf/etc/systemd/user.conf中。同时还会加载两个配置文件对应的目录中所有的.conf配置文件/etc/systemd/system.conf.d/*.conf/etc/systemd/user.conf.d/*.conf,一般的服务单元使用system.conf即可。加载优先级system.conf最低,所以system.conf.d目录中的配置会覆盖system.conf的配置
  • 目前已知的是更改system.conf配置,需要重启系统才能生效,还没找到如何重新加载此配置
阅读此文

2022-09-28
键盘上的标点符号的中英文名称对照表

键盘上的标点符号的中英文名称对照表, 转载自:键盘上的标点符号的中英文名称对照表

符号 英文名 中文名
~ tilde or swung dash 波浪字符或代字号
! exclamation mark 惊叹号
@ at sign or commercial at 爱特或小老鼠
# number sign 井号
$ dollar sign 美元符
% percent sign 百分号
^ caret 脱字符
& ampersand 与和符
* asterisk 星号
() parentheses, round brackets, soft brackets, or circle brackets 小括号,圆括号
[] brackets (US), square brackets, closed brackets or hard brackets 中括号,方括号
{} braces (UK and US), French brackets, curly brackets 大括号,花括号
<> angle brackets or chevrons 尖括号
_ underscore 下划线
+ plus sign 加号
minus sign 减号
= equals sign 等号
< less-than sign 小于号
> greater-than sign 大于号
. period, full stop or dot 句号,点
, comma 逗号
: colon 冒号
; semicolon 分号
? question mark 问号
- hyphen 连字符
ellipsis 省略号
dash 破折号
/ slash, forward slash 斜线
\ backslash 反斜线
竖线 vertical bar 竖线
quotation mark 双引号
apostrophe 单引号,省略符号
阅读此文