前言:之前我一直使用的是wordpress搭建的博客,由于是在某云搞活動(dòng)時(shí)買(mǎi)的最低配置服務(wù)器,而wordpress又需要安裝很多組件,網(wǎng)站變得越來(lái)越慢。最近發(fā)現(xiàn)了Hugo 是 Go 編寫(xiě)的靜態(tài)網(wǎng)站生成器,速度很快,依賴于 Markdown 文件, 非常適合博客,索性就把之前的全部干掉了。
看了一些帖子,大部分是在本地編輯好,然后轉(zhuǎn)化為html文件扔到Github,然后通過(guò) Github Page的方式訪問(wèn),我也測(cè)了下感覺(jué)訪問(wèn)Github還是太慢了,并且最近GIthub也不穩(wěn)定,所以我就直接在我Linux服務(wù)器上部署了,使用個(gè)人域名訪問(wèn)還是挺快的。我的博客
本問(wèn)部署方式是使用Nginx作為Web服務(wù)器,代理Hugo和Gitbook的靜態(tài)網(wǎng)頁(yè),通過(guò)個(gè)人域名訪問(wèn)。
一、部署hugo
在Github上下載Hugo的Release包上傳到Linux服務(wù)器
$ yum -y install git golang
$ mkdir -p /app/hugo_0.74.3
$ tar xf hugo_0.74.3_Linux-64bit.tar.gz -C /app/hugo_0.74.3
$ cp /app/hugo_0.74.3/hugo /usr/local/bin/
$ hugo version
Hugo Static Site Generator v0.74.3-DA0437B4 linux/amd64 BuildDate: 2020-07-23T16:22:34Z
創(chuàng)建網(wǎng)站
$ hugo new site zhanminblog[名稱自定義]
$ ls
archetypes config.toml content data layouts static themes
選擇主題
在這里hugo themes選擇你喜歡的主題并根據(jù)主題的REAMDE進(jìn)行相應(yīng)操作,比如我選擇的是Pure主題
$ cd /app/zhanminlog
$ git clone https://github.com/xiaoheiAh/hugo-theme-pure themes/pure
因?yàn)槊總€(gè)主題的樣式和功能不同,所以要根據(jù)主題的README介紹進(jìn)行調(diào)試,將主題的配置和文章目錄復(fù)制到網(wǎng)站根目錄下
$ rm -f /app/zhanminlog/config.toml
$ cp -r themes/pure/exampleSite/* /app/zhanminblog/
根據(jù)自己的想法修改模板的配置文件進(jìn)行調(diào)試,可參考主題的README文件,我的部分定義如下:
$ cat config.
baseURL: http://www.unmin.club
theme: pure
title: 前行
defaultContentLanguage: zh # en/zh/...
footnoteReturnLinkContents: ?
hasCJKLanguage: true
paginate: 7
enableEmoji: true
PygmentsCodeFences: false
googleAnalytics: "" # UA-XXXXXXXX-X
permalinks:
posts: /:year/:month/:filename/
taxonomies:
------------------------
創(chuàng)建第一篇文章
根據(jù)主題的定義,文章需要放在posts目錄下,由于上面我們已經(jīng)copy了主題模板的文件。所以我們可以直接新建文章,無(wú)需使用hugo new posts/xxx.md指令。
$ cd /app/zhanminblog/content/posts
$ touch heelo.md
$ cat hello.md
+++ #為文章的定義,如標(biāo)題,作者,目錄等。
author = "前行"
title = "第一篇文章"
date = "2020-07-29"
description = "這是我使用hugo創(chuàng)建的第一篇文章"
tags = [
"hugo",
]
categories = [
"hugoblog",
]
#series = ["系列"]
#aliases = ["別名"]
+++
# 一、Hugo介紹
Hugo是輕量級(jí)的靜態(tài)資源服務(wù)
```shell
$ hello hugo
--------
啟動(dòng)服務(wù)預(yù)覽
由于我使用的是Linux公有云服務(wù)器,需要開(kāi)啟外機(jī)訪問(wèn),如果是windows本機(jī)調(diào)試,則直接使用hugo server啟動(dòng)訪問(wèn)4000端口即可
$ hugo server --bind="0.0.0.0" -v -w -b http://www.unmin.club
當(dāng)然這種啟動(dòng)方式也可直接使用到線上,直接修改或者創(chuàng)建md文件即可,無(wú)需使用build指令轉(zhuǎn)化為html文件。
如果你是本地調(diào)試則可以使用hugo命令將文件轉(zhuǎn)化為html格式,會(huì)生成名為“public”的目錄,然后將這個(gè)目錄的內(nèi)容放到Github或者Nginx上即可訪問(wèn)。
由于我還需要使用Gitbook來(lái)寫(xiě)文章,而且打算將這兩個(gè)集成到一塊,所以我選擇的方式是直接在Linux上修改文章,通過(guò)啟動(dòng)其他端口號(hào)來(lái)預(yù)覽文章,然后在通過(guò)hugo 轉(zhuǎn)換為html,復(fù)制到Nginx的html目錄下發(fā)布,最后通過(guò)nginx的80端口訪問(wèn)。
指定端口號(hào)來(lái)預(yù)覽文章
$ hugo server --bind="0.0.0.0" -v -w -p 8080 -b http://www.unmin.club

發(fā)布文章
預(yù)覽沒(méi)有問(wèn)題則構(gòu)建為html文件,生成public目錄,注意使用hugo指令需要在網(wǎng)站的根目錄。
$ hugo
$ ls public/
2020 about about-us categories css elk-book fonts index.xml k8s-book posts searchindex.json sitemap.xml
404.html about-hugo avatar.png contact donate favicon.ico index.html js page prometheus-book series tags
二、部署Nginx作為前端代理
使用nginx作為前端,代理后面的hugo與gitbook服務(wù)
$ yum -y install nginx
復(fù)制剛才轉(zhuǎn)換生成的html文件到Nginx下,更新文章時(shí)可以寫(xiě)一個(gè)update.sh 腳本
$ rm -rf /usr/share/nginx/html/*
$ cp -r /app/zhanminblog/public/* /usr/share/nginx/html
啟動(dòng)nginx
$ systemctl start nginx
訪問(wèn)網(wǎng)站

三、部署gitbook
Hugo現(xiàn)在已經(jīng)可以使用了,我們開(kāi)始部署gitbook
部署node.js
$ wget https://nodejs.org/dist/v12.18.1/node-v12.18.1-linux-x64.tar.xz
$ tar xf node-v12.18.1-linux-x64.tar.xz
$ vim /etc/profil
$ export PATH=$PATH:/app/node-v12.18.1-linux-x64/bin
$ source /etc/profile
$ node -v
v12.18.1
安裝gitbook
$ npm install gitbook-cli -g
$ gitbook -V
CLI version: 2.3.2
GitBook version: 3.2.3
創(chuàng)建書(shū)籍
$ mkdir /app/k8s-book
$ gitbook init
$ ls /app/k8s-book
README.md SUMMARY.md
創(chuàng)建書(shū)籍目錄
$ cat SUMMARY.md
# Summary
* [前言](README.md)
* [Kubernetes基礎(chǔ)](Chapter1/README.md)
* [基本概念與組件原理](Chapter1/jieshao.md)
* [使用Kubeadm部署集群](Chapter1/kubeadm.md)
* [YAML文件語(yǔ)法](Chapter1/YAML.md)
* [深入理解Pod](Chapter1/Pod.md)
* [Kubernetesb編排控制器](Chapter2/README.md)
* [Deployment](Chapter2/deployment.md)
* [StatefulSet](Chapter2/StatefulSet.md)
* [DaemonSet](Chapter2/DaemonSet.md)
* [Kubernets配置管理](Chapter3/README.md)
* [ConfigMap](Chapter3/ConfigMap.md)
* [Secret](Chapter3/Secret.md)
* [ServiceAccount](Chapter3/ServiceAccount.md)
* [RBAC](Chapter3/RBAC.md)
* [Kubernetes持久化存儲(chǔ)](Chapter4/README.md)
* [PV](Chapter4/Pv.md)
* [PVC](Chapter4/PVC.md)
* [StorageClass](Chapter4/StorageClass.md)
* [本地持久化存儲(chǔ)](Chapter4/LocalPv.md)
* [網(wǎng)絡(luò)分布式存儲(chǔ)](Chapter3/Ceph.md)
安裝功能插件
$ vim book.json
{
"title": "前行",
"author": "前行",
"description": "kubernetes",
"language": "zh-hans",
"gitbook": "3.2.3",
"styles": {
"website": "./style/website.css"
},
"structure": {
"readme": "README.md"
},
"links": {
"sidebar": {
"回到博客": "http://www.unmin.club"
}
},
"plugins": [
"anchors",
"auto-scroll-table",
"chapter-fold",
"expandable-chapters-small",
"toggle-chapters",
"advanced-emoji",
"code",
"favicon",
"fontsettings",
"klipse",
"-livereload",
"-lunr",
"pageview-count",
"page-toc-button",
"popup",
"sharing-plus",
"-sharing",
"splitter",
"-search",
"search-pro",
"tbfed-pagefooter",
"todo",
"hide-element"
],
"pluginsConfig": {
"hide-element": {
"elements": [".gitbook-link"]
},
"theme-default": {
"showLevel": true
},
"code": {
"copyButtons": true
},
"tbfed-pagefooter": {
"copyright": "Copyright ? zhanmin 2020",
"modify_label": "本書(shū)發(fā)布時(shí)間:",
"modify_format": "YYYY-MM-DD HH:mm:ss"
},
"page-toc-button": {
"maxTocDepth": 2,
"minTocSize": 2
},
"sharing": {
"douban": false,
"facebook": false,
"google": false,
"hatenaBookmark": false,
"instapaper": false,
"line": false,
"linkedin": false,
"messenger": false,
"pocket": false,
"qq": true,
"qzone": true,
"stumbleupon": false,
"twitter": false,
"viber": false,
"vk": false,
"weibo": true,
"whatsapp": false,
"all": [
"weibo","qq", "qzone", "douban", "facebook","google",
"linkedin","twitter","whatsapp"
]
},
"anchor-navigation-ex": {
"showLevel": true
},
"favicon":{
"shortcut": "",
"bookmark": ""
}
}
}
安裝文件中的插件
$ gitbook install
創(chuàng)建文章
$ mkdir /app/k8s-book/Chapter1
$ vim /app/k8s-book/Chapter1/README.md
hello gitbook
gitbook也是支持本地預(yù)覽的,使用gitbook serve指令即可
$ gitbook serve
沒(méi)問(wèn)題我們就和hugo一樣轉(zhuǎn)換為html文件,會(huì)生成_book目錄,使用gitbook build指令即可更新文章。
$ gitbook build
$ ls /app/k8s-book
_book Chapter1 Chapter2 Chapter3 Chapter4 Chapter5 Chapter6 Chapter7 README.md SUMMARY.md update.sh
配置Nginx
ok,現(xiàn)在我們修改Nginx的配置文件,添加gitbook的目錄地址
$ vim /etc/nginx/nginx.conf
--------------------
server {
listen 80 default_server;
listen [::]:80 default_server;
server_name _;
root /usr/share/nginx/html;
# Load configuration files for the default server block.
include /etc/nginx/default.d/*.conf;
location / {
}
error_page 404 /404.html;
location = /40x.html {
}
error_page 500 502 503 504 /50x.html;
location = /50x.html {
}
location /k8s-book { ## 新增加gitbook訪問(wèn)路徑
alias /app/k8s-gitbook/_book; # 這個(gè)路徑是關(guān)鍵,就是GitBook工程下build出來(lái)的_book目錄,需要運(yùn)行g(shù)itbook build命令自動(dòng)生成
index index.html index.htm;
autoindex on;
--------------------
平滑重啟
$ nginx -s reload
訪問(wèn)驗(yàn)證
訪問(wèn)hugo

訪問(wèn)gitbook,添加后綴/k8s-book,當(dāng)然也可以在Hugo上添加個(gè)跳轉(zhuǎn)鏈接。

四、配置七牛云圖床
由于是使用markdown進(jìn)行寫(xiě)作,一些圖片在靜態(tài)博客上是無(wú)法顯示的,所以我們需要設(shè)置自己的圖床,我使用的是七牛云,免費(fèi)空間為10G,時(shí)間不限。
在這里注冊(cè)七牛云用戶,點(diǎn)擊對(duì)象存儲(chǔ),創(chuàng)建存儲(chǔ)空間

會(huì)給你一個(gè)30天的臨時(shí)測(cè)試域名,到期會(huì)回收,所以最好使用自己的域名。
添加CDN加速域名,我配置的是二級(jí)域名,這個(gè)二級(jí)域名我還沒(méi)在服務(wù)商那里添加解析

現(xiàn)在到域名服務(wù)商那里,添加個(gè)二級(jí)域名解析
比如我的騰訊云

其中記錄值是在七牛云添加CDN域名加速時(shí)獲得的CNAME值,鼠標(biāo)停留在域名上即可獲得。
詳細(xì)配置可查看官方文檔
最后域名配置顯示成功即可

五. 使用PicGO
PicGo可以幫我們自動(dòng)將復(fù)制的圖片轉(zhuǎn)換為Markdown鏈接,非常方便。下載地址
安裝完成后配置七牛云圖床

AccessKey/SecretKey獲取方式

設(shè)定訪問(wèn)網(wǎng)址是你添加的二級(jí)域名,存儲(chǔ)區(qū)域如下

配置完成點(diǎn)擊確定,就可以使用了。

關(guān)注公眾號(hào)回復(fù)【k8s】獲取視頻教程及更多資料:
