hexo butterfly 主题使用记录
开始使用nodejs 使用 v20.17.0 版本包管理使用 npm 123456789101112# 初始化主题,第一次需要执行git submodule initgit submodule update# 安装依赖包npm i## 查看效果npx hexo s# 创建新文章npx hexo new "测试文章" 然后将 source/_posts/测试文章.md 移动到对应的分类目录下。 由于 hexo-abbrlink 和 hexo-auto-category 的冲突,需要执行 2 次 npx hexo g 才能正确生成需要的 front matter这个问题已经解决了, 替换成了包 hexo-abbrlink-iuxt 解决了这个问题, 执行 npx hexo g 即可自动生成固定链接和分类 封面图1280 x 720 或者 3:2 的比例 常用 shortcode 记录标签外挂官方文档:...
一个特殊的空格--硬空格
事情的起因我在测试一个 nginx 配置文件,配置文件来自于印象笔记网页版复制(本人用的 linux,没有印象笔记客户端可用),编辑的时候发现了蹊跷: 不过没有太在意,还有一点蹊跷的是 vim 编辑的时候该高亮的地方也不高亮了,接着改好了配置文件后,发现 nginx -t 怎么测试都不通过。 排查问题当然怀疑是 nginx 配置文件的问题,将配置文件复制到 windows 下,使用 notepad++ 编辑(显示所有符号)发现里面的空格并不是空格 真正的空格应该显示的是 .,tab 显示的应该是 ➡️。将这个 “ 空格 “ 复制出来,然后找个在线转换器http://www.hiencode.com/jinzhi.html转换成 16 进制数据,发现是 a0 然后到https://zh.wikipedia.org/wiki/Unicode%E5%AD%97%E7%AC%A6%E5%88%97%E8%A1%A8搜了下 a0,发现是一个叫做不换行空格的东西,又叫硬空格(hard space、fixed space) 用途是禁止换行,常用于 html,比如地址 xx省xx市...
Linux网络设备命名规则及修改
命名规则centos 从 7 开始网卡名称默认不再是熟悉的 eth0、而是类似于 ens33、enps0f0 等rhel7官方文档 这么做的好处是在 Red Hat Enterprise Linux 7 中,udev 支持大量不同的命名方案。默认是根据固件、拓扑及位置信息分配固定名称。这样做的优点是命名可完全自动进行,并可预期,即使添加或删除硬件后也会保留其名称(不会出现重复枚举的情况),同时可顺利更换损坏的硬件。不足之处是,相比传统的名称,比如 eth0 或 wlan0,这些名称有时会比较难理解。例如:enp5s0。 设备命名的过程 /usr/lib/udev/rules.d/60-net.rules 文件中的规则会让 udev 帮助工具 /lib/udev/rename_device 查看所有 /etc/sysconfig/network-scripts/ifcfg-suffix 文件。如果发现包含 HWADDR 条目的 ifcfg 文件与某个接口的 MAC 地址匹配,它会将该接口重命名为 ifcfg 文件中由 DEVICE...
Puppet Server从部署到上线使用
这是一篇 todo 文章,可以快速将 puppetserver 部署起来,经常遇到的坑也会写出来,但是自己不踩吭记忆是没有成长的(不仅仅是收获经验,重要的是增加了学习的能力),如果不缺时间的话,强烈建议看官方文档:https://puppet.com/docs/puppet/7/server/install_from_packages.html 安装 master通过源来安装12sudo rpm -Uvh https://yum.puppet.com/puppet7-release-el-8.noarch.rpmsudo yum install puppetserver 启动 master 服务1sudo systemctl start puppetserver 如果报错 Found master private key '/etc/puppetlabs/puppet/ssl/private_keys/localhost.localdomain.pem' but master public key...
Linux网络管理命令
2009 年 Debian 开发者邮件列表宣布放弃使用缺乏维护的 net-tools 工具包,net-tools 包含历史悠久的 ifconfig, netstat 等网络相关的命令iproute2 用于取代 net-tools,在大部分的发行版都自带了。命令有 ip, ss, net 等命令替代了之前的网络操作命令。 命令对照表 net-tools iproute2 arp -na ip neigh ifconfig ip link ifconfig -a ip addr show ifconfig -s ip -s link ifconfig eth0 up ip link set eth0 up ipmaddr ip maddr iptunnel ip tunnel netstat ss netstat -i ip -s link netstat -g ip maddr netstat -l ss -l netstat -r ip route route add ip route add route...
我们为什么要用容器(或者说k8s)
起因或现状 公司准备上线 k8s 集群,目前在云上有微软 azure 托管的 aks,aks 上面的用来部署一些对外的业务,数据中心(有两个 - 移动和电信)是我自建的,主要是对内网服务 现在的问题是我们构使用的是 jenkins,构建方式和传统虚拟机发布没什么区别,只是换成了容器,简单来说就是: 传统发布(所有环境流程一致): 拉代码 - 构建 - 可执行文件上传服务器现在发布(所有环境流程一致): 拉容器镜像(基础环境) - 拉代码 - 构建 - 上传镜像仓库 所有环境的发布都需要准备一套环境,也就是说容器并没有解决我们的环境标准化的问题,比如: 我们的 jenkins 的 node 节点在数据中心、办公室内网、azure 云上都有,因为这些环境都需要构建一遍镜像围绕构建需要提供一些基础设施,比如我们 apt、maven、pypi 等的缓存服务(用的 nexus),容器镜像仓库(用的 jfrog)这些都需要在每个环境准备一套,每个服务还需要做高可用,简单算下来也有 6 个 nexus 和 4 个 jfrog 如果我们换成办公室构建完成,上传到公网的 jfrog...
使用 docker buildx 构建不同平台的镜像
一直使用 oracle 提供的免费 arm 云服务器,自己的 pc 又是 x86 架构,x86 构建出来的镜像不能在 arm 平台使用 使用 buildx 可以生成跨平台镜像,跨平台镜像就是同一个镜像名称,同一个 tag,但是 arm 机器和 amd64 机器拉下来的镜像 hash 是不一样的 创建 docker buildx 构建环境 这里的 driver 有两种,一种是 docker-container,一种是 docker,构建多平台版本只能使用 docker-container, –use 是将切换为默认 1docker buildx create --use --name buildx --node buildx --driver-opt network=host 准备 qemu 模拟器构建不通架构的镜像是通过 qemu 来模拟的,你会发现构建过程中,和 build 机器同架构的会构建很快,不同架构构建很慢。 12345678# 安装全部模拟器docker run --privileged --rm tonistiigi/binfmt --install...
使用certbot自动申请ssl证书
certbot 可以自动申请 let’s encrypt https 证书, 并且可以自动续期,另见:使用acme.sh来自动更新https证书 申请证书前准备添加 DNS 解析域名为你需要申请 https 证书的域名,添加 A 记录到服务器 IP 安装 certbot 和 certbot nginx plugin12sudo apt install certbotsudo apt install python3-certbot-nginx 申请证书1sudo certbot --non-interactive --redirect --agree-tos --nginx -d password.zahui.fan -m captain@zahui.fan 以上操作除了申请证书外,还可以自动添加 https 配置到 nginx,很方便。 证书续期1sudo certbot renew 添加到 root 用户的 crontab 里面就可以实现自动续期,距离到期时间太长会自动跳过续期 删除证书1sudo certbot delete
Systemd入门教程all in One
参考自https://www.ruanyifeng.com/blog/2016/03/systemd-tutorial-commands.html,感谢阮一峰老哥。同样可以看 Arch Wiki:systemd ,Arch Wiki 真的不错。 由来历史上,Linux 的启动一直采用 init 进程。 下面的命令用来启动服务。 123sudo /etc/init.d/apache2 start# 或者service apache2 start 这种方法有两个缺点。 一是启动时间长。init 进程是串行启动,只有前一个进程启动完,才会启动下一个进程。 二是启动脚本复杂。init 进程只是执行启动脚本,不管其他事情。脚本需要自己处理各种情况,这往往使得脚本变得很长。 systemd 的诞生Systemd 就是为了解决这些问题而诞生的。它的设计目标是,为系统的启动和管理提供一套完整的解决方案。systemd 成为系统的第一个进程(也就是 PID=1),其他进程都是它的子进程。 systemd 包括的命令 systemd 不是一个命令,而是一组命令。比如...
Nginx反向代理wordpress并启用https
反向代理 wordpress 遇到了问题,nginx 不启用 https,反向代理没问题(wordpress 和 nginx 之间走 http),但是 nginx 启用了 https,页面上的样式就没有了,f12 查看,发现 js 和 css 走的还是 http,所以 404 根本原因:wordpress 代码里没有开启 https,(wordpress 认为自己是被 http 访问的,毕竟 nginx 是通过 http 来访问它的) 修改 wordpress 配置 感觉这种方案最靠谱,谁的债谁来还。。 在 wp-config.php 的 if ( ! defined( ‘ABSPATH’ ) ) 前面添加: 123$_SERVER['HTTPS'] = 'on';define('FORCE_SSL_LOGIN', true);define('FORCE_SSL_ADMIN', true); 如果是官方 Docker 容器的话强烈建议 Nginx 的 location...