#203 终于全面启用了 HTTPS

经历过这次迁移,我的博客站点算是维护过四次之多了。这个博客最初诞生的时候是部署在一个网友的服务器上的,第一次上线的时候还是一个 Wordpress 的站点。后来因为想弄到自己的服务器上,就搬了出来。随后了解到了 Hexo,就干脆整个迁移到 GitHub 上。而这次,却又从 GitHub 上迁移回个人的服务器,算是折腾了好大一圈。估计这次迁移后,就不会再有太大改动了。

这次迁搬出来后主要维护了以下几点:

  1. 将服务器系统从 CentOS 更改为 Ubuntu
  2. 将博客的整体主题做了更换
  3. 关闭了原有的博客站点
  4. 强制使用 HTTPS 访问本站
  5. 从 GitHub 迁移到自己的服务器上

下面来依次谈谈这几点维护的原因。

从 CentOS 更换到 Ubuntu

以前整个站点用的 LNMP 的架构,因为第一版的博客是使用 Wordpress 搭建的,第一次接触 Linux,就是接触的 CentOS。但随着时间的推移,我个人接触更多的反而是 Ubuntu,索性这次搬迁,全部做一次规整了。

博客整体主题做了更换

博客的主题使用的是 Hexo Next,在页面的 Footer 处我也保留了主题的链接,如果对这个主题感兴趣,可以点过去。

主题做了很多修改,最明显的修改就是可以看到博客的背景上有 一个粒子特效。

有不少人来信问我是怎么做到的,其实并不复杂,GitHub 上面有一个项目叫做 ParticlesJS

有兴趣的可以自己研究一下。还有一些修改,比如底部 Footer 的修改,菜单栏的修改等等。由于只是一些符合自己品味的优化,这里就不做详细说明了。

关闭了原有的博客站点

最初的时候脑子被门挤了,注册了个 euryugasaki.com 的域名,则根本不可能有人记得住啊。但是这个长得恶心的域名还是被我上线了三年左右的时间,一些我留下过痕迹的地方,都有这个域名在。

而恰好,这个域名还是在国内的服务商里购买的。保不准那一天挂了,就完蛋了。所以后来就注册了几个好记的域名:changkun.us, changkun.info。并且,我决定以后一直用这几个域名而再不更换了。

强制使用 HTPPS 访问本站

从去年开始,我就一直想要将整个博客部署成 HTTPS 站点,当时也只是随便一搜发现证书还得花钱,对于我这种个人网站,是很不地道的。

直到最近,几经周折,总算找到一个比较满意的证书提供商,StartSSL

制作证书非常方便,假设在 /etc/nginx/ssl/ 目录下:

1
$ sudo openssl req -newkey rsa:2048 -keyout server.key -out server.csr

期间会询问国家名CN、省份、城市、组织名、Common Name(域名)、邮箱,如实填好。最后的 challenge password 和 optional company name 不填。然后把生成的 csr 文件中的内容提供给这个网站,网站就会提供一个 .crt 的文件,只需将这个文件放到同一目录,然后将 server.key 中的密码给去除:

1
2
$ sudo mv server.key server.key.close
$ sudo openssl rsa -in server.key.close -out server.key

再到 Nginx 中配置好证书就能获得 HTTPS 的访问了:

1
2
3
4
listen 443;
ssl on;
ssl_certificate /etc/nginx/ssl/changkun.crt;
ssl_certificate_key /etc/nginx/ssl/changkun.key;

绿色的小锁☺️。

不过一旦启用了 HTTPS,就会将原本站点的 HTTP 访问停止,这时候,可以配置一个转发:

1
2
3
4
5
6
7
8
9
10
11
12
# 将所有 http 访问强制跳转到 https
server {
listen 80;
server_name changkun.us www.changkun.us changkun.info www.changkun.info;
rewrite ^(.*)$ https://$host$1 permanent;
}
# 将 ip 默认访问强制跳转到域名访问
server {
listen 80 default_server;
server_name _;
rewrite ^ https://changkun.us;
}

从 GitHub 迁移到自己的服务器上

说实话,写博客的人总归是希望有人能够看自己的文章的。我当然也不例外。博客自从搬到 GitHub 上后,搜索引擎就再也没能搜到我的新站点了(当然,还有一个原因就是 Github Pages 的服务绑定自己的域名就没办法使用 HTPPS 了)。

究其原因就在于 GitHub 屏蔽掉了诸如百度等搜索引擎的爬虫,使得他们无法得知我的新站点了。终于还是搬出来好了。也就有了现在的服务。

搬迁出来并不是随便这么一般,由于 Hexo 会通过 Git 部署,所以还需要让服务器成为一个 Git 服务器,但这还不够,因为当 站点文件部署到了服务器后,还需要自动将其同步到公开访问的 Nginx 目录下,所以还需要用 git hooks来实现自动化部署。

第一步:安装 Git

1
$ sudo apt-get install git

第二步:创建 git 用户,专门管理 git 服务

1
$ sudo adduser git

第三步:登录到 git 用户,配置 pub key,避免hexo d时的密码输入

1
2
$ su git
$ ssh-keygen

第四步:初始化 Git 仓库,假设放在 /home/repo/blog.git

1
2
3
$ sudo mkdir /home/repo/blog.git
$ cd /home/repo/blog.git
$ sudo git init --bare blog.git # 创建裸库,没有工作区

第五步:配置 git hooks

1
2
3
4
$ cd /home/repo/blog.git/hooks
$ echo '#!/bin/sh' >> post-receive
$ echo "git --work-tree=/path/to/your/hexo --git-dir=/home/repo/blog.git checkout -f" >> post-receive
$ chmod +x post-receive

第六步:更改目录权限

1
$ sudo chown -R git:git blog.git

第七步:禁用 git 用户登录,修改 /etc/passwd 中的 git 相关

1
git:x:1001:1001:,,,:/home/git:/bin/bash

改为

1
git:x:1001:1001:,,,:/home/git:/usr/bin/git-shell

接下来就可以在 _config.yml 中的 deploy 中更改 repo 的地址了:

1
git@changkun.us:/home/repo/blog.git
打赏催更