用 git 来 对letsencrypt 证书管理

在做 https 的时候,使用了 letsencrypt 的证书,letsencrypt 的证书 90 天更新一次,正常情况下,只有一个域名就很方便处理,写一个 crontab 就搞定了。

letsencrypt 出了泛域名后,泛域名只支持 1 级的匹配。当有多个子域名使用的时候,管理起来就很难受。

所幸的是,acme.sh 支持 deploy_hook 来自行调用一个 shell 脚本。所以用不到10行的代码,做了一个利用 git 来管理域名证书。

  1. 首先在acme.sh里面配置一个 git 的地址。
  2. 申请泛域名时同时申请泛域名的主域名
  3. hook 提交按照域名提交到不同的分支
  4. 线上对应的域名只需要配置一个 crontab 来定时拉 git ,重启服务。

思路虽然简单粗暴,这样做的好处是可以很清楚的在git上面看到证书的更新,同时更新也可以利用 gitlab 的 hook 通知到 钉钉。

阅读更多

android,不折腾

在最开始的时候是打算写 andoird 相关的内容

然而发现其实能够写的东西其实没那么多

对于 android 的一些玩机技巧,在 android 5 的时候

能够说的是什么呢,刷机 、supersu、 xposed 还有一些貌似黑科技的软件

当这些说完了后呢,只能推荐一些好用的软件

作为个人来讲,推荐软件是个很无趣的活

市面上有一大堆的软件推荐网站、公众号、APP

想要选一些小众的,最后会变成效率软件推荐集合

实际上对于刷机和root来说,热情过后就很无趣

在安全的角度来讲,所有需要手机授权root的软件都是流氓软件。

所有自称如何优化了官方软件,改进有多么大的,实际上都没有想象的那么大。

而以牺牲系统安全性为代价的特性,都是不值得的。

为什么你的安全软件需要root权限?

因为如果没有root权限就什么也干不了。

那既然没有root权限什么都干不了

你还要安全软件干什么呢。

曾经就有安全软件利用系统漏洞来标榜自己是不需要root权限的安全软件。

当时觉得很牛逼。真的是牛逼,不需要root系统。小白用户也能很好的使用的安全软件。

只需要一键开启就 ok 了。

实际上呢,作为一个安全软件,不是应该想办法来修复系统漏洞吗。

利用系统漏洞和流氓软件有什么区别。

android 5 的时候,很多地方做的不够好

我们需要去下载一些优化软件,但是现在已经不需要了

你所需要的东西大部分系统厂商都能够提供

你所追求的所谓的效率,仔细统计一下,其实是一个低频的需求

能够花20分钟去打王者,却不能花几秒钟来多做一步操作

人有时候会高估自己的时间价值,有时候又会低估

对于自己手机系统安全性不在意,随意乱给root权限

当然国产软件随意乱索取权限

系统的权限管理已经能够满足我们绝大部分人的需求。

我们在玩机的时候,玩的是什么呢,玩的是折腾

折腾呢很多的Rom,玩了很多的app

最后发现不折腾却是最好的选择

在安卓圈里有魔改系统看不清厂商出品

原始安卓看不起魔改系统

实际上大部分的原生安卓都是魔改的

总是需要这样的或者那样的插件支持

找桌面,找辅助插件,找同步通讯录,找备份

反正就是要吧系统上所有的自带app都要替换掉。

最后还要吧google全家桶也装上

管他有没有用

管他速度怎么样,能不能连上

信仰嘛

我也用google的输入法,chrome

但是 google 只是个商业公司

并不是所有的东西都香

看看 google 关掉的产品

read 、chat、G+ 等待

还是不要折腾,适当替换部分软件

不要用root类的软件

不要乱授权通讯录、电话等权限

好好用厂商提供的版本

节约的时间

去读读书、谈谈朋友

岂不美哉

ps. 看到很多公众号一句话换一行,在这里尝试一下,这种风格很适合杠。想到哪,杠到哪 。

Jenkins-docker-ansible自动化上线

从11月开始到现在,项目开始从 php 转换到 nodejs + 后端服务,相应的部署环境转换到docker。

在使用纯php环境,上线比较简单,主要是代码拉取,拷贝和软链切换。 运行环境使用docker后相应的需要引入一个打包的过程,所以前面所依靠的上线部署系统无法满足当前的需求。

目前来说,Jenkins 作为自动化的流水线工具,几乎是不二的选择。

将 Jenkins 作为流水线工具,在打包阶段依赖 docker-compose。 上线阶段依赖 ansible 。

阅读更多

nginx中gzip和cache配置

gzip

1
2
3
4
5
6
7
8
9
10
11
gzip on;         #开启 gzip      
gzip_min_length 1k;    # 最小压缩字节
gzip_buffers 16 64k;   # 16 *64k 内存
gzip_http_version 1.1;  #识别协议版本
gzip_comp_level 6;      # 压缩比率
gzip_types text/plain application/javascript text/css application/xml; # 指定压缩的头
gzip_vary on;    # 给代理服务器使用  

gzip_proxied any; #代理结果压缩


阅读更多

jenkins钉钉机器人

dingding-notifications

https://plugins.jenkins.io/dingding-notifications
jenkinsfile 代码

1
2
3
4
5
6
7
8
9
10
post {
success{
dingTalk( accessToken: '7d7acde934be6177bb813100396a34e35ec2a84',
imageUrl: 'http://xxxx.oss-cn-beijing.aliyuncs.com/success.png',
jenkinsUrl: 'http://192.168.0.89:8080',
message: "${currentBuild.fullDisplayName} \nJOB NAME: ${env.JOB_NAME} \nBUILD NUMBER ${env.BUILD_NUMBER}\nDeploy SUCCESS",
notifyPeople: '')
}
}

阅读更多

jenkins git 配置大意错误

Jenkins新建项目中源码管理使用Git时遇到如下问题:

Failed to connect to repository : Error performing command: git ls-remote -h git@192.168.199.89:zhangwei/jenkins-test.git HEAD

解决:

1.Jenkins服务器上查看git是否已安装及安装位置

git version

whereis git

阅读更多

Harbor配置-DockerRegistry私有镜像仓库

Harbor简介

HarborVMware公司开源的企业级Docker Registry项目,其目标是帮助用户迅速搭建一个企业级的Docker registry`服务。

它以Docker公司开源的registry为基础,提供了管理UI,基于角色的访问控制(Role Based AccessControl),AD/LDAP集成、以及审计日志(Auditlogging) 等企业用户需求的功能,通过添加一些企业必需的功能特性,例如安全、标识和管理等,扩展了开源 Docker Distribution

环境准备

  • Ubuntu 14.04
  • Docker and Docker Compose

Docker Compose 安装

1
2
3
4
5
6
7
```shell
sudo curl -L "https://github.com/docker/compose/releases/download/1.22.0/docker-compose-$(uname -s)-$(uname -m)" -o /usr/local/bin/docker-compose

sudo chmod +x /usr/local/bin/docker-compose

$ docker-compose --version
docker-compose version 1.22.0, build f46880fe
1
2
3
4
5
6
7
8
9
10
11
12
13

- python

# <a name="9qd2rr"></a>Harbor下载


下载Harbour版本的二进制文件 [https://github.com/vmware/harbor/releases](https://github.com/vmware/harbor/releases)


```shell
wget https://storage.googleapis.com/harbor-releases/release-1.6.0/harbor-offline-installer-v1.6.0.tgz
tar -zxvf harbor-offline-installer-v1.6.0.tgz

官方的链接正常无法下载,感谢戴亚同学帮忙。

下载解压后进入解压的文件夹

Harbor配置

解压后目录下生成 harbor.conf 文件,根据需要修改配置文件。

Harbor启动

1
2
./install.sh

1
2
3
4
5
6
7
8
9
10
11
12
/home/zhangwei# docker ps -a
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
136373bd5377 goharbor/harbor-jobservice:v1.6.0 "/harbor/start.sh" 2 days ago Up 2 days harbor-jobservice
e593d2a724de goharbor/nginx-photon:v1.6.0 "nginx -g 'daemon of…" 2 days ago Up 2 days (healthy) 0.0.0.0:443->443/tcp, 0.0.0.0:4443->4443/tcp, 0.0.0.0:1080->80/tcp nginx
f29c2341d237 goharbor/harbor-ui:v1.6.0 "/harbor/start.sh" 2 days ago Up 2 days (healthy) harbor-ui
a03a1bab796f goharbor/harbor-adminserver:v1.6.0 "/harbor/start.sh" 2 days ago Up 2 days (healthy) harbor-adminserver
c11b5b108311 goharbor/redis-photon:v1.6.0 "docker-entrypoint.s…" 2 days ago Up 2 days 6379/tcp redis
6d95f6c0aaf3 goharbor/harbor-db:v1.6.0 "/entrypoint.sh post…" 2 days ago Up 2 days (healthy) 5432/tcp harbor-db
2fa99bb3d06c goharbor/registry-photon:v2.6.2-v1.6.0 "/entrypoint.sh /etc…" 2 days ago Up 2 days (healthy) 5000/tcp registry
da21879d2dd1 goharbor/harbor-log:v1.6.0 "/bin/sh -c /usr/loc…" 2 days ago Up 2 days (healthy) 127.0.0.1:1514->10514/tcp harbor-log


根据需要修改docker-compose.yml 文件的端口

1
2
3
4
5
6
7
8
9
10
11
12
13
proxy:
image: goharbor/nginx-photon:v1.6.0
container_name: nginx
restart: always
volumes:
- ./common/config/nginx:/etc/nginx:z
networks:
- harbor
ports:
- 1080:80
- 443:443
- 4443:4443

Docker私有源配置

基本命令

1
2
3
4
sudo docker run -d -p 5000:5000 --restart=always  --name registry \
-v /home/docker/registry:/var/lib/registry registry:2 # 加入restart=always 跟随docker启动时自启动
# 本地启动后镜像服务器的地址为 localhost:5000

运行后会自动到docker hub 上拉取

1
2
3
4
sudo docker images
REPOSITORY TAG IMAGE ID CREATED SIZE
registry 2 2e2f252f3c88 4 weeks ago 33.3MB

阅读更多