sudo

1
2
3
4
5
6
7
8
vim /etc/sudoers

# %开头为组,若当前用户为管理员组,只需要将%admin该行添加NOPASSWD: ALL即可
# 像这样
# 原来:%admin          ALL = (ALL) ALL
# 改后:%admin          ALL = (ALL) NOPASSWD:ALL

# 如果不是管理员组,则按格式新建一行(未验证)
linux  sudo 

Let's Encrypt - Free SSL/TLS Certificates

1. 获取证书:

先停Nginx

1
docker stop nginx

生成证书

1
./certbot-auto certonly --standalone --email chrislu.name@gmail.com -d ichris.info -d www.ichris.info -d api.ichris.info -d console.ichris.info

创建符号链接,可选操作,建议做。因为生成证书后,复制证书麻烦,而且每次更新后都需要复制一次;配置指向/etc目录可能会没有权限,符号链接是最简单高效的办法。

1
2
ln -s /etc/letsencrypt/live/[path]/fullchain.pem /[path]/[to]/[web]/[certs]/fullchain.pem
ln -s /etc/letsencrypt/live/[path]/privkey.pem /[path]/[to]/[web]/[certs]/privkey.pem

启动Nginx

1
docker start nginx

2. 更新证书:

1
certbot-auto renew --pre-hook "docker stop nginx" --post-hook "docker start nginx"

3. 添加到调度中,每周1凌晨3点检测一次

1
0 3 * * 1 /opt/service/certbot-0.28.0/certbot-auto renew --pre-hook "docker stop nginx" --post-hook "docker start nginx"

参考

[阅读全文]

MySQL主从延迟解决方案

版本:5.7.23

现象

过一段时间会发现从库追不上主库,而且差距越来越大

此时通过在主从库上分别查询:select * from information_schema.processlist where info is not null order by host 得知:

  1. 主库一直有不断的增删改操作
  2. 从库一直只有查询操作

查从机:show slave status,得知:

[阅读全文]

AWS-EC2搭建hugo+caddy,安装shadowsocks手记

关于购买预留实例

老外们的思维方式不同,在中国其实就是购买实例的时候,选择费用方式为包月包年 预留实例在左边菜单的入口处购买

初始化服务器

原来的服务器到期了,去年mysql+go+vue架构换成了github+caddy+hugo,配置要求不那么高,所以换了个便宜点新实例(2vcpu+2G+8G,这么低的配置都感觉有些浪费了),初始化过程如下:

[阅读全文]

关于mysql驱动的DSN字符问题

此次重构发现之前的loc参数一直为空,不太记得是当时刻意为之,还是当时发生了错误未解决 所以在生产上就加了配置asia/shanghai,报错了:invalid DSN: did you forget to escape a param value? 这个好办,转换一下就行了,改成:asia%2Fshanghai

[阅读全文]
golang  mysql  DSN 

MySQL中间件选择

MyCAT(1.6.5)

先天不足,发现部分应用有兼容性问题

  1. XXL-JOB官方文档有说明:如果mysql做主从,调度中心集群节点务必强制走主库
  2. flyway也不支持!

TiDB(2.0版)

对运行环境硬件配置要求高得变态,某公司的服务器上了高性能SSD仍然不能满足IOPS要求(<40000)

[阅读全文]

Twitter snowflake算法

算法原理

  • 1位符号位,始终为0;
  • 41位时间戳,一般实现上不会存储当前的时间戳,而是时间戳的差值(当前时间-固定的开始时间),这样可以使产生的id从更小值开始;41位时间戳可以使用69年,1L«41/(1000L*60*60*24*365) = 69年
  • 10位节点位,前五位数据中心标识,后五位机器标识,可以部署1024个节点
  • 12位序列号,支持同一个节点同一毫秒可以生成4069个ID

golang learning

一个有关Golang变量作用域的坑

对于使用:=定义的变量,如果新变量p与那个同名已定义变量 (这里就是那个全局变量p)不在一个作用域中时,那么golang会新定义这个变量p,遮盖住全局变量p

[阅读全文]
golang 

使用Nexus3搭建docker registry

Nexus 3.0 的三种docker仓库:

  1. docker (proxy) 代理和缓存远程仓库 ,只能pull
  2. docker (hosted) 托管仓库 ,私有仓库,可以push和pull
  3. docker (group) 将多个proxy和hosted仓库添加到一个组,只访问一个组地址即可,只能pull

前提:安装配置好了Java运行环境

[阅读全文]

cmd+h和cmd+m

  • cmd + m:是对「窗口」的操作,cmd + m是最小化窗口
  • cmd + h:是对「应用程序」的操作,cmd + h是隐藏当前程序
  • cmd + m:最小化当前窗口
  • cmd + option + m:会最小化当前程序所有窗口
  • cmd + h:隐藏当前程序
  • cmd + option + h:隐藏除当前应用程序之外所有程序窗口