给你的网站加上https

如今网络安全越来越重要了,各大浏览器已经开始限制用户访问非https网站了,如果你的网站现在还没配置支持https,那么你的访问量将极大受到影响。

说起https,最让人头痛的就是要申请证书和生成公钥和秘钥,如今,随着科技的发展,这些繁琐的事情都成为过去,今天我就来为大家介绍最简便和免费的方法。

首先,你得有一个网站服务器和域名,网站我们使用nginx提供http/https服务,https证书我们使用Let’s encrypt提供的免费证书,这个证书有效期为90天,所以我们需要定时去renew这个证书确保他有效。

在Debian 9下,我们先su root到root管理员权限下安装nginx

$ sudo apt update
$ apt install nginx

随后安装Certbot’s Nginx包,这个包会自动帮我们获取指定域名的证书,还会自动帮我们配置好nginx的ssl证书部分,具体后面会介绍。
$ apt install python-certbot-nginx -t stretch-backports

修改nginx配置文件example.com为你的网站域名。

$ vi /etc/nginx/sites-available/example.com
$ ln -s /etc/nginx/sites-available/example.com /etc/nginx/sites-enabled/
$ nginx -t
$ systemctl restart nginx

nginx配置文件示例:

1
2
3
4
5
6
7
8
9
10
11
12
13
server {
listen 80;
listen [::]:80;

root /var/www/example.com/html;
index index.html index.htm index.nginx-debian.html;

server_name example.com www.example.com;

location / {
try_files $uri $uri/ =404;
}
}

调用certbot命令申请和安装配置证书

$ sudo certbot --nginx -d example.com -d www.example.com

期间会有选项需要你选择,下面是选择是否如果用户通过http协议访问网站自动跳转到https协议,输入2加入自动跳转配置。

1
2
3
4
5
6
7
8
Please choose whether or not to redirect HTTP traffic to HTTPS, removing HTTP access.
-------------------------------------------------------------------------------
1: No redirect - Make no further changes to the webserver configuration.
2: Redirect - Make all requests redirect to secure HTTPS access. Choose this for
new sites, or if you're confident your site works on HTTPS. You can undo this
change by editing your web server's configuration.
-------------------------------------------------------------------------------
Select the appropriate number [1-2] then [enter] (press 'c' to cancel):

最后运行成功提示:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
IMPORTANT NOTES:
- Congratulations! Your certificate and chain have been saved at:
/etc/letsencrypt/live/example.com/fullchain.pem
Your key file has been saved at:
/etc/letsencrypt/live/example.com/privkey.pem
Your cert will expire on 2018-07-23. To obtain a new or tweaked
version of this certificate in the future, simply run certbot again
with the "certonly" option. To non-interactively renew *all* of
your certificates, run "certbot renew"
- Your account credentials have been saved in your Certbot
configuration directory at /etc/letsencrypt. You should make a
secure backup of this folder now. This configuration directory will
also contain certificates and private keys obtained by Certbot so
making regular backups of this folder is ideal.
- If you like Certbot, please consider supporting our work by:

Donating to ISRG / Let's Encrypt: https://letsencrypt.org/donate
Donating to EFF: https://eff.org/donate-le

Let’s Encrypt证书只在90天内有效,certbot已经帮我们加入定时任务在适当的时候更新证书防止证书过期。

我们可以运行以下命令测试证书更新是否正常:

$ sudo certbot renew --dry-run

参考自: How To Secure Nginx with Let’s Encrypt on Debian 9

分享到 评论

读《别让猴子跳回背上》

monkey book

最近买了这本猴子书,当然这里面的“猴子”并不是真的猴子,按书里面的定义是要我们工作中要做的下一步。拿到书那一刻,看到书的排版,吓了一跳,边距也太大了吧,估计内容也多不到哪去。然后我就花了两个多晚上就看完了,内容实在是少。

啰哩啰嗦的讲了一大堆,其实就是说你是领导,要时时刻刻作为监工,而不能出现和下属交换角色的情况。遇到下属有问题需要你帮忙,你最多和他一起讨论,最终还是要让下属去做,下属永远是做事的人,而领导永远是监督的职责。 日常工作中可能会出现下属请示领导工作,不知不觉就把自己的工作让领导给做了,还时不时询问领导事情的进展,这时猴子就爬到领导背上了,领导需要去喂养本来不属于他的猴子,而猴子的主人,由于没有猴子喂养,而出现怠工的状态。这时领导要做的是赶紧和下属谈话,把不属于自己的猴子还给下属,即使这样做会有些痛苦。为了避免出现这种痛苦,当下属找领导帮忙的时候,领导就应该和下属分清好职责,只能当面给些指导或者讨论意见,或者让下属出份内容报告和报告简要目录,找时间再和下属面对面谈话解决问题,而不是自己把猴子领养过来,最重要的一点就是不要出现下属反过来询问领导工作进度的情况。询问工作进度永远只是领导向下属询问,因为领导是监工的角色。

还有工作中发现的猴子可能会很多,应该做好计划,排好优先度,让下属清晰知道什么时候要做好,按照时间计划开会,无特殊原因不能修改会议时间,即使没做完或者根本还没开始做也要进行会议。猴子积压太多,可以适当杀掉一些猴子,不要让猴子腐烂发臭,影响工作。

另外一点就是不要越级领导下属,除非出现非常紧急的情况,没有办法的情况下才能越级领导。越级领导会造成很严重的后果,正确做法是直接领导向你汇报的下属,让他去领导好他的下属,达到事半功倍的效果。

The End

分享到 评论

Shell 的一些笔记

if -e and -n的意思?

如果目标不为 null 则返回 true
-e returns true if the target exists. Doesn’t matter if it’s a file, pipe, special device, whatever. The only condition where something may exist, and -e will return false is in the case of a broken symlink.

For example:

1
2
3
4
5
6
7
8
9
$ ln -s foo bar

$ [ -e foo ]; echo $?
1

$ touch bar

$ [ -e foo ]; echo $?
0

查看更多

分享到 评论

使用 go 进行 OpenCV 学习与开发

前言

记得开始使用 OpenCV 的时候是在大学时期,当时用的是 C 语言,OpenCV 版本好像是1.1,随着时间的推移,后面 C++逐渐代替了 C,iOS 也有整合好的 lib 可以使用 OpenCV,现在Python, go 等语言进行开发,今天主要是说一说如何使用 go 语言配置开发 OpenCV。

查看更多

分享到 评论

iOS 物理引擎实践之模拟粒子运动

最近看到一个使用 javascript 编写的模拟粒子运动的库verlet-js,效果很不错,于是就想把他移植到 iOS 上,花了点时间使用 swift 把代码移植了过来,最后还加了一个粒子系统的 demo,源代码已经放到 github 上了:

https://github.com/MellongLau/ParticleAnimation

下面放上Demo效果截图:

Shape

查看更多

分享到 评论

Swift 中定义单例

什么是单例

单例模式(Singleton Pattern),也叫单子模式,是一种常用的软件设计模式。 在应用这个模式时,单例对象的类必须保证只有一个实例存在。

单实例Singleton设计模式可能是被讨论和使用的最广泛的一个设计模式了,这可能也是面试中问得最多的一个设计模式了。这个设计模式主要目的是想在整个系统中只能出现一个类的实例。这样做当然是有必然的,比如你的软件的全局配置信息,或者是一个Factory,或是一个主控类,等等。

如何在 swift 中创建单例

查看更多

分享到 评论

Raspbian安装vscode

vscode是一个跨平台,轻量级,开源免费,具有强大插件支持编辑器,这不是微软的风格。经过长时间的使用,笔者现在已经爱上这款编辑器,之前一直用的是sublime text2, 现在基本舍弃之。

vscode应该是目前为止最适合开发angular的编辑器,安装上相关的插件后会有代码提示,代码检查,代码自动完成,自动模块导入,自动更正等。此外,我还喜欢使用vscode来写markdown文档,写shell scirpt, python, php等。安装相关的插件后,vscode简直是一款神器!

这篇文章暂时不会具体介绍vscode的用法,这里主要是介绍如何在树梅派上安装vscode。

查看更多

分享到 评论

写了个iOS下拉刷新控件

这个控件和LiteAutolayout一样也写了有一段时间了,使用swift实现,尽量做到简单易用,尽可能做到一行代码搞定。

先附上CocoRongPullToRefresh的源码地址:

https://github.com/MellongLau/CocoRongPullToRefresh

Thumbnail

查看更多

分享到 评论

Swift 之访问控制

访问控制对访问你的其他代码源文件和模块部分进行了约束。这个特性允许你隐藏你的代码实现,并且指定通过其可以访问和使用该代码的优选接口。

class,structure 和 enumeration 都可以指定访问级别,当然,property,method,initializer 和 属于这里类型的 subscript。protocol 可以限制到某个上下文,全局变量,变量和函数也可以。

另外,Swift 也提供默认的使用级别给典型的使用场景。确实,如果你编写一款单一目标的 app,你可能根本不需要明确地指定访问控制级别。

查看更多

分享到 评论

Swift 之泛型

泛型代码允许你编写灵活,可以重用适用于任何类型的函数和类型。
大部分的Swift标准库都是用泛型代码编写。Array和Dictionary事实上都是泛型集合。你可以创建Int值的数组,或者String值的数组,以及其他swift类型的数组。Dictionary也是类似的。

查看更多

分享到 评论