@@ -3,36 +3,36 @@ layout: post
33categories : original
44title : " 部署 GitHub Pages 博客到私有服务器"
55author : 立泉
6- mention : Jekyll HTTPS
6+ mention : Jekyll Nginx HTTPS OSS
77date : 2020-09-14 +0800
8- description : 博客托管在GitHub Pages上 ,不是我的错觉,它在大陆的访问速度正变得越来越不稳定,有时甚至需要等待5秒以上才能打开 ,这让我无法接受。博客是沉淀知识阅历的地方,应该触手可及,而非无意义等待 。
8+ description : 博客托管在 GitHub Pages 上 ,不是我的错觉,它在大陆的访问速度正变得越来越不稳定,有时甚至要等 5 秒以上才能打开 ,这让我无法接受。博客是沉淀知识阅历的地方,应该触手可及而非无意义等待 。
99cover : https://apqx.oss-cn-hangzhou.aliyuncs.com/blog/original/20200914/jekyll_project.png
1010tags : Code GitHub Jekyll Blog HTTPS 云计算 阿里云 OSS 对象存储
1111---
1212
13- 博客托管在` GitHub Pages ` 上,不是我的错觉,它在大陆的访问速度正变得越来越不稳定,有时甚至需要等待5秒以上才能打开 ,这让我无法接受。博客是沉淀知识阅历的地方,应该触手可及,而非无意义等待 。
13+ 博客托管在 GitHub Pages 上,不是我的错觉,它在大陆的访问速度正变得越来越不稳定,有时甚至要等 5 秒以上才能打开 ,这让我无法接受。博客是沉淀知识阅历的地方,应该触手可及而非无意义等待 。
1414
1515## 镜像
1616
17- 几年前` GitHub Pages ` 并不是这样,当时我很满意才会把博客托管给它,可惜物是人非,我必须做些尝试尽可能提高一个 ` 非备案域名 ` 在大陆的访问速度。不错,一个普通博客,我不想备案,虽然微不足道,但这是我面对过度内容审查最后的坚持。不备案意味着无法使用大陆的 ` 服务器 ` 和 ` CDN ` ,而这两项正是网站加速的最优途径,所以成年人的标志之一便是根据自己的好恶作出选择然后坦然面对后果 。
17+ 几年前 GitHub Pages 并不是这样,当时我很满意才会把博客托管给它,可是物是人非,必须做些尝试尽可能提高一个非备案域名在大陆的访问速度。不备案意味着无法使用大陆的服务器和 CDN,而这两项正是网站加速的最佳途径,所以成年人的标志之一便是根据好恶作出选择然后坦然面对后果 。
1818
19- 为减少` GitHub ` 仓库容量,毕竟速度那么慢,我把网页之外的资源都放在阿里云杭州节点的` OSS对象存储 ` 上 ,这个只需实名无须备案。关于费用,很多人会因为 “免费额度”选择一些小服务商的 ` 对象存储 ` ,但实际上阿里云的报价表只是看起来复杂,对流量不大的个人博客,账单每月其实不过几毛钱,充5元已经是 “巨款”。
19+ 为减少 GitHub 仓库容量,毕竟速度那么慢,我把网页之外的资源都放在阿里云杭州节点的 OSS 对象存储上 ,这个只需实名无须备案。关于费用,不少人会因为 “免费额度”选择小服务商的对象存储 ,但实际上阿里云的报价表只是看起来复杂,流量不大的个人博客账单其实每月不过零点几元,充 5 元已经是 “巨款”。
2020
21- * 2024年03月07日更新 :注意[ OSS可能被流量攻击引起的高额账单风险 ] ({% link _ posts/original/2024-03-07-解决阿里云OSS无CDN时的流量风险.md %}){: target="_ blank" }。*
21+ * 2024 年 03 月 07 日更新 :注意 [ OSS 可能被流量攻击引起的高额账单风险 ] ({% link _ posts/original/2024-03-07-解决阿里云OSS无CDN时的流量风险.md %}){: target="_ blank" }。*
2222
23- 解决资源托管后,瓶颈只剩下对 ` GitHub ` 服务器本身的连接速度 ,而其在大陆没有数据中心,我又不能使用国内 ` CDN ` ,所以唯一可行的方法是在一台靠近大陆的服务器上创建博客镜像 ,把域名指向它。付出一台 ` 服务器 ` 费用解决访问速度问题 ,承载博客之外,随着我的想法越来越多它也会发挥更大作用。
23+ 解决资源托管后瓶颈只剩下对 GitHub 本身的连接速度 ,而其在大陆没有数据中心,又不能使用国内 CDN,唯一可行的方法是在一台靠近大陆的服务器上创建博客镜像 ,把域名指向它。付出一台服务器费用解决访问速度问题 ,承载博客之外,随着我的想法越来越多它也会发挥更大作用。
2424
2525## 实施
2626
27- ` GitHub Pages ` 托管的博客本身是一个` Git ` 仓库,` Jekyll ` 工程的目录结构如下:
27+ GitHub Pages 托管的博客本身是一个 Git 仓库,Jekyll 工程的目录结构如下:
2828
2929![ ] ( https://apqx.oss-cn-hangzhou.aliyuncs.com/blog/original/20200914/jekyll_project.png ) {: loading="lazy" class="clickable clickShowOriginalImg" alt="jekyll" }
3030
31- 其中,` _drafts ` 和` _posts ` 分别存放用` Markdown ` 格式撰写的草稿和文章,` assets ` 存放媒体资源,已经把它们迁移到阿里云` OSS ` 上,所以这里是空的。` _includes ` 、` _layouts ` 、` css ` 、` font ` 和` js ` 是与网站布局、样式、模版相关的东西, ` Jekyll ` 需要借助它们将` Markdown ` 文本转换为静态` HTML ` 网页。
31+ 其中,` _drafts ` 和` _posts ` 分别存放用 Markdown 格式撰写的草稿和文章,` assets ` 存放媒体资源,已经把它们迁移到阿里云 OSS 上,所以这里是空的。` _includes ` 、` _layouts ` 、` css ` 、` font ` 和` js ` 是与网站模版、布局、样式相关的东西, Jekyll 需要借助它们将 Markdown 文本转换为静态 HTML 网页。
3232
33- 内容更改后` Push ` 到 ` GitHub ` 上, ` Pages ` 会自动用` Jekyll ` 生成静态站点,然后 ` Serve ` 到指定域名下。创建博客镜像就是把这份代码 ` Push ` 到自己的 ` 服务器 ` 上 ,手动` Build ` 在` _site ` 目录生成静态网页,再配置` Nginx ` 进行 ` Serve ` 。
33+ 内容更改后 Push 到 GitHub 上, Pages 会自动用 Jekyll 生成静态站点 Serve 到指定域名下。创建博客镜像是把这份代码 Push 到自己的服务器上 ,手动 Build 在` _site ` 目录生成静态网页,再配置 Nginx 进行 Serve。
3434
35- 我并不擅长` Linux ` ,好在要做的事不复杂,` 服务器 ` 安装 ` Nginx ` 后会生成默认配置文件 ` /etc/nginx/sites-available/default ` ,按如下方式修改:
35+ 我并不擅长 Linux,好在要做的事不复杂,服务器安装 Nginx 会生成默认配置文件 ` /etc/nginx/sites-available/default ` ,按如下方式修改:
3636
3737``` sh
3838server {
@@ -62,15 +62,15 @@ server {
6262}
6363```
6464
65- 重启` Nginx ` 就可以用 ` HTTP ` 访问到博客。
65+ 重启 Nginx 即可用 HTTP 访问到博客。
6666
6767``` sh
6868sudo systemctl restart nginx
6969```
7070
7171## HTTPS
7272
73- 如今借助` Let’s Encrypt ` 启用 ` HTTPS ` 已经非常简单,[ Certbot] ( https://certbot.eff.org/lets-encrypt/ubuntufocal-nginx ) {: target="_ blank" }是一个基于` Let’s Encrypt ` 为域名生成` SSL ` 证书并配置` Nginx ` 的工具,同时支持为只有90天有效期的证书自动续期 。
73+ 如今借助 Let’s Encrypt 启用 HTTPS 已经非常简单,[ Certbot] ( https://certbot.eff.org/lets-encrypt/ubuntufocal-nginx ) {: target="_ blank" } 是一个基于 Let’s Encrypt 为域名生成 SSL 证书并配置 Nginx 的工具,支持为只有 90 天有效期的证书自动续期 。
7474
7575``` sh
7676# 安装 Certbot
@@ -81,7 +81,7 @@ sudo snap install --classic certbot
8181sudo certbot --nginx
8282```
8383
84- 按提示执行完成,` Certbot ` 会自动更新 ` Nginx ` 配置以使用生成的证书:
84+ 按提示执行完成,Certbot 会更新 Nginx 配置以使用生成的证书:
8585
8686``` sh
8787server {
@@ -128,10 +128,12 @@ server {
128128}
129129` ` `
130130
131- 访问网站,可以看到` HTTPS` 已经启用,证书由` Let’s Encrypt` 签发,有效期90天。
131+ 访问网站看到 HTTPS 已经启用,证书由 Let’s Encrypt 签发,有效期 90 天。
132+
133+ * 注:域名已更换为 [mudan.me]({% link _posts/original/2023-01-12-2023年,我换了新域名「牡丹」.md %}){: target=" _blank" }。*
132134
133135! [](https://apqx.oss-cn-hangzhou.aliyuncs.com/blog/original/20200914/lets_encrypt.jpg){: loading=" lazy" class=" clickable clickShowOriginalImg" alt=" ssl certificate" }
134136
135- 这台` Google Cloud` 台湾节点的服务器网络延迟约60ms,比 ` GitHub Pages` 平均300ms好很多,当然比不上离我最近的阿里云杭州节点的10ms ,但对静态博客已经足够。
137+ 这台 Google Cloud 台湾节点的服务器网络延迟约 60ms,比 GitHub Pages 平均 300ms 好很多,虽然不如离我最近的阿里云杭州节点的 10ms ,但对静态博客已经足够。
136138
137139! [](https://apqx.oss-cn-hangzhou.aliyuncs.com/blog/original/20200914/ping_apqxme.jpg){: loading=" lazy" class=" clickable clickShowOriginalImg" alt=" ping" }
0 commit comments