您好,登錄后才能下訂單哦!
用過(guò)其它博客系統(tǒng),不喜歡,不夠輕,不夠快!自己做過(guò)共兩款博客系統(tǒng),完美主義的我(畢竟×××座)也實(shí)在是不想再在這件事情上過(guò)多糾結(jié)了。Eiblog 應(yīng)該是一個(gè)比較穩(wěn)定的博客系統(tǒng),且是博主以后使用的博客系統(tǒng),穩(wěn)定性和維護(hù)你是不用擔(dān)心的,唯獨(dú)該系統(tǒng)部署過(guò)程太過(guò)復(fù)雜,并且不推薦沒(méi)有計(jì)算機(jī)知識(shí)的朋友搭建,歡迎咨詢。該博客的個(gè)中優(yōu)點(diǎn)(明顯快,安全),等你體驗(yàn)。
整個(gè)博客系統(tǒng)涉及到模塊如下:
MongoDB
,博客采用 mongodb 作為存儲(chǔ)數(shù)據(jù)庫(kù)。
Elasticsearch
,采用elasticsearch
作為博客的站內(nèi)搜索,盡管占用內(nèi)存稍高。
Disqus
,作為博客評(píng)論系統(tǒng),國(guó)內(nèi)大部分被墻,故實(shí)現(xiàn)兩種評(píng)論方式。
Nginx
,作為反向代理服務(wù)器,并做相關(guān)http header
和證書(shū)的設(shè)置。
Google Analytics
,作為博客系統(tǒng)的數(shù)據(jù)分析統(tǒng)計(jì)工具。
七牛 CDN
,作為博客系統(tǒng)的靜態(tài)文件存儲(chǔ),博文的圖片附件什么上傳至這里。
相關(guān)技術(shù)有:
Golang
,博客系統(tǒng)后端采用golang編寫(xiě),并開(kāi)源至Eiblog。
HTML Javascript CSS
,博客系統(tǒng)的前端采用html
和jquery
編寫(xiě),樣式采用CSS
。
Glide
, golang 編寫(xiě)。作為博客系統(tǒng)的包依賴管理器,其開(kāi)源地址是Glide。
Docker
,博客系統(tǒng)可 docker 部署,方便,快捷。
Docker Compose
,博客系統(tǒng)可完全 docker 運(yùn)行,compose起到很好管理作用。
SSL 證書(shū)
,https
是未來(lái)的趨勢(shì),整個(gè)博客系統(tǒng)都將圍繞著證書(shū)
進(jìn)行,請(qǐng)事先準(zhǔn)備好一張有效的 ssl 證書(shū)。
Travis
,作為博客系統(tǒng)的自動(dòng)構(gòu)建工具,自動(dòng)構(gòu)建docker鏡像并推送到鏡像倉(cāng)庫(kù)。
Yaml
,博客系統(tǒng)的配置文件使用yaml
,請(qǐng)悉知。
作為博主之心血之作,Eiblog
實(shí)現(xiàn)了什么功能,有什么特點(diǎn),做了什么優(yōu)化呢?
系統(tǒng)目前只有首頁(yè)
、專(zhuān)題
、歸檔
、友鏈
、關(guān)于
、搜索
界面。相信已經(jīng)可以滿足大部分用戶的需求。
.js
、.css
等靜態(tài)文件本地存儲(chǔ),小圖片 base64 內(nèi)置到 css 中,不會(huì)產(chǎn)生網(wǎng)絡(luò)所帶來(lái)的延遲,加速網(wǎng)頁(yè)訪問(wèn)。版本控制方式,動(dòng)態(tài)更新靜態(tài)文件。
采用谷歌統(tǒng)計(jì),并實(shí)現(xiàn)異步(將訪問(wèn)信息發(fā)給后端,后端提交給谷歌)統(tǒng)計(jì),加速訪問(wèn)速度。
采用直接緩存 markdown 轉(zhuǎn)過(guò)的 html 文檔的方式,加速后端處理。響應(yīng)速度均在 3ms 以內(nèi),真正極速。
特定格式[ ![alt](https://st.deepzz.com/static/img/avatar.jpg =256x256)
]圖片懶加載策略,加快訪問(wèn)速度。
通過(guò) Nginx 的配置,開(kāi)啟壓縮縮小傳輸量,服務(wù)器傳輸證書(shū)鏈、開(kāi)啟Session Resumption
、Session Ticket
、OCSP Stapling
等加速證書(shū)握手,再次提高速度。
文章評(píng)論數(shù)量(不重要)后端跑定時(shí)腳本,定時(shí)更新,所以有時(shí)評(píng)論數(shù)是不對(duì)的。這樣減少了 api 調(diào)用,又再次達(dá)到加速訪問(wèn)的目的。
針對(duì)disqus
被墻原因,實(shí)現(xiàn)Jerry Qu的另類(lèi)評(píng)論方式,保證評(píng)論的流暢。
開(kāi)源Typecho
完整后臺(tái)系統(tǒng),全功能markdown
編輯器,讓你體驗(yàn)什么是簡(jiǎn)潔清爽。
博客后臺(tái)直接對(duì)接七牛 SDK
,實(shí)現(xiàn)后臺(tái)上傳文件和刪除文件的簡(jiǎn)單功能。
采用elasticsearch
作為站內(nèi)搜索,添加google opensearch
功能,搜索更加自然。
當(dāng)然,在信息安全方面也沒(méi)少下功夫,雖然我們只是一個(gè)小小的博客系統(tǒng)。
CDN
,使用七牛融合CDN,并https
化,實(shí)現(xiàn)全站https
。七??缮暾?qǐng)免費(fèi)證書(shū)了。
CT
,證書(shū)透明度檢測(cè),提供一個(gè)開(kāi)放的審計(jì)和監(jiān)控系統(tǒng)??梢宰屓魏斡蛎姓呋蛘?CA 確定證書(shū)是否被錯(cuò)誤簽發(fā)或者被惡意使用,從而提高 HTTPS 網(wǎng)站的安全性。
OCSP
,在線證書(shū)狀態(tài)協(xié)議。用來(lái)檢驗(yàn)證書(shū)合法性的在線查詢服務(wù).
HSTS
,強(qiáng)制客戶端(如瀏覽器)使用 HTTPS 與服務(wù)器創(chuàng)建連接??梢院芎玫慕鉀Q HTTPS 降級(jí)***。
HPKP
,HTTP公鑰固定擴(kuò)展,防范由「?jìng)卧旎虿徽?dāng)手段獲得網(wǎng)站證書(shū)」造成的中間人***。該功能讓我們選擇信任哪些CA
。
SSL Protocols
,羅列支持的TLS
協(xié)議,SSLv3被證實(shí)是不安全的。
SSL dhparam
,迪菲赫爾曼密鑰交換。
Cipher suite
,羅列服務(wù)器支持加密套件。
可以容易的看到httpsecurityreport評(píng)分96
,ssllabs評(píng)分A+
,堪稱(chēng)完美。這些安全的相關(guān)配置會(huì)在后面的部署過(guò)程中接觸到。
相關(guān)圖片展示:
注
:圖片1,圖片2是博客界面,圖片3是后臺(tái)界面,圖片4是性能展示。
好了,說(shuō)了那么多,吹了那么多,我們實(shí)際來(lái)動(dòng)手搭建一個(gè)Eiblog
吧。
1、Eiblog
提供多個(gè)平臺(tái)的壓縮包下載,可到Eiblog release選擇相應(yīng)版本和平臺(tái)下載。也可通過(guò):
$ curl -L https://github.com/eiblog/eiblog/releases/download/v0.1.0/eiblog-v0.1.0.`uname -s | tr '[A-Z]' '[a-z]'`-amd64.tar.gz > eiblog-v0.1.0.`uname -s | tr '[A-Z]' '[a-z]'`-amd64.tar.gz
2、如果有幸你也是Gopher
,相信你會(huì)親自動(dòng)手,你可以通過(guò):
$ go get https://github.com/eiblog/eiblog
進(jìn)行源碼編譯二進(jìn)制文件運(yùn)行。
3、如果你對(duì)docker
技術(shù)也有研究的話,你也可以通過(guò)docker
來(lái)安裝:
$ docker pull registry.cn-hangzhou.aliyuncs.com/deepzz/eiblog
鏡像內(nèi)部只提供了eiblog
的二進(jìn)制文件,因?yàn)槠渌鼉?nèi)容定制化的需求過(guò)高。所以需要將conf
、static
、views
目錄映射出來(lái),后面會(huì)具體說(shuō)到。
在我們下載好可執(zhí)行程序之后,我們可以開(kāi)始本地測(cè)試的工作了。
本地測(cè)試需要搭建兩個(gè)服務(wù)mongodb
和elasticsearch3.4.1
(可選,搜索服務(wù)不可用)。
Eiblog
默認(rèn)會(huì)連接hostname
為eidb
和eisearch
,因此你需要將信息填入/etc/hosts
下。假如你搭建的mongodb
地址為127.0.0.1:27017
,elasticsearch
地址為192.168.99.100:9200
,如:
SH$ sudo vi /etc/hosts# 在末尾加上兩行127.0.0.1 eidb 192.168.99.100 eisearch
1、MongoDB
搭建,Mac 可通過(guò)brew install mongo
進(jìn)行安裝,其它平臺(tái)請(qǐng)查詢資料。
2、Elasticsearch
搭建,它的搭建要些許復(fù)雜。博主尚未接觸如何直接安裝,因此建議通過(guò)docker
搭建。需要注意的是 es 自帶的分析器對(duì)中文分詞是不友好的,這里采用了elasticsearch-analysis-ik
分詞器。如果你想了解更多Github或則實(shí)現(xiàn)博客站內(nèi)搜索。
pull 鏡像docker pull elasticsearch:2.4.1
,必需使用該版本。
添加環(huán)境變量ES_JAVA_OPTS: "-Xms512m -Xmx512m"
,除非你想讓你的服務(wù)器爆掉。
映射相關(guān)目錄:
conf/es/config:/usr/share/elasticsearch/config conf/es/plugins:/usr/share/elasticsearch/plugins conf/es/data:/usr/share/elasticsearch/data conf/es/logs:/usr/share/elasticsearch/logs
如果你想查看詳細(xì),請(qǐng)查看docker-compose.yml
文件。
總結(jié)一下,docker
運(yùn)行 es 的命令為:
SH$ docker run -d --name eisearch \ -p 9200:9200 \ -e ES_JAVA_OPTS: "-Xms512m -Xmx512m" \ -v conf/es/config:/usr/share/elasticsearch/config \ -v conf/es/plugins:/usr/share/elasticsearch/plugins \ -v conf/es/data:/usr/share/elasticsearch/data \ -v conf/es/logs:/usr/share/elasticsearch/logs \ elasticsearch:2.4.1
之后執(zhí)行./eiblog
,咱們的eiblog
就可以運(yùn)行起來(lái)了。
通過(guò)127.0.0.1:9000
可以進(jìn)入博客首頁(yè),127.0.0.1:9000/admin/login
進(jìn)入后臺(tái)登陸,賬號(hào)密碼為eiblog/conf/app.yml
下的username
和password
。也就是初始賬號(hào)密碼deepz
、deepzz
。
如果你在感受了該博客的魅力了之后,仍然堅(jiān)持想要搭建它。那么,恭喜你,獲得的一款不想再更換的博客系統(tǒng)。下面,我們跟隨步驟對(duì)部署流程進(jìn)一步說(shuō)明。
這里只提供Docker
的相關(guān)部署說(shuō)明。你如果需要其它方式部署,請(qǐng)參考該方式。
這里需要準(zhǔn)備一些必要的東西,如果你已準(zhǔn)備好。請(qǐng)?zhí)^(guò)。
一臺(tái)服務(wù)器
。
一個(gè)域名
,國(guó)內(nèi)服務(wù)器需備案。
有效的證書(shū)
。一般使用免費(fèi)的就可以。如:Let‘s Encrypt
,另外qcloud
、七牛
也提供了免費(fèi)證書(shū)的申請(qǐng),均是全球可信。
七牛CDN
。博客只設(shè)計(jì)接入了七牛cdn,相信該CDN服務(wù)商不會(huì)讓你失望。
Disqus
。作為博客評(píng)論系統(tǒng),你得有×××的能力注冊(cè)到該賬號(hào),具體配置我想又可以寫(xiě)一片博客了。簡(jiǎn)單說(shuō)需要shorname
和public key
。
Google Analystic
。數(shù)據(jù)統(tǒng)計(jì)分析工具。
Superfeedr
。加速 RSS 訂閱。
Twitter
。希望你能夠有一個(gè)twitter賬號(hào)。
當(dāng)這些已經(jīng)準(zhǔn)備好了,請(qǐng)參照conf/app.yml
中的說(shuō)明更改配置。
是不是這么多要求,很費(fèi)解。其實(shí)當(dāng)初該博客系統(tǒng)只是為給人而設(shè)計(jì)的,是自己心中想要的那一款。博主些這篇文章不是想要多少人來(lái)用該博客,而是希望對(duì)那些追求至極的朋友說(shuō):你需要這款博客系統(tǒng)。
盡管大多數(shù)文件已經(jīng)準(zhǔn)備好。但有些默認(rèn)的文件需要特別指出來(lái),需要你在 CDN 上寫(xiě)特殊的路徑。
假如你的 CDN 域名為st.example.com
,那么:
favicon.ico
,其 URL 應(yīng)該是st.example.com/static/img/favicon.ico
。故你在 CDN 中的文件名為static/img/favicon.ico
,以下如是。
左側(cè)背景圖片
,500*1200
左右,CDN 中文件名:static/img/bg04.jpg
。如需更改,請(qǐng)?jiān)?code >eiblog/view/st_blog.css中替換該名稱(chēng)。
頭像
,160*160~256*256
之間,CDN 文件名:static/img/avatar.jpg
。另外你需要將該圖片 Base64
編碼后替換掉eiblog/views/st_blog.css
中合適位置的圖片。
blank.gif
,CDN 文件名:static/img/blank.gif
。該圖片請(qǐng)從這里下載并上傳至你的 CDN。
default_avatar.png
,CDN 文件名:static/img/default_avatar.png
,請(qǐng)從這里下載并上傳至你的 CDN。
disqus.js
,該文件名是會(huì)變的,每次更新如果沒(méi)有提及就沒(méi)有改變。CDN 文件名格式是:static/js/name.js
。在我寫(xiě)這篇文章是使用的是:static/js/disqus_a9d3fd.js
,請(qǐng)從這里下載并上傳至你的 CDN。
注意
:本人 CDN 做了防盜鏈處理,故請(qǐng)將這些資源上傳至您的 CDN ,以免靜態(tài)資源不能訪問(wèn),請(qǐng)悉知。
走到這里,我相信只走到60%
的路程。放棄還來(lái)得及。
這里會(huì)對(duì)eiblog/conf
下的所有文件做說(shuō)明,希望你做好準(zhǔn)備。
├── app.yml # 博客配置文件 ├── blackip.yml # 博客ip黑名單 ├── es # elasticsearch配置 │ ├── config # 配置文件 │ │ ├── analysis # 同義詞 │ │ ├── elasticsearch.yml # 具體配置 │ │ ├── logging.yml # 日志配置 │ │ └── scripts # 腳本文件夾 │ └── plugins # 插件文件夾 │ └── ik1.10.1 # ik分詞器 ├── nginx # nginx配置 │ ├── domain # 域名配置,nginx會(huì)讀區(qū)改文件夾下的.conf文件 │ │ └── deepzz.conf│ ├── ip.blacklist # nginx ip黑名單 │ └── nginx.conf # nginx配置,請(qǐng)?zhí)鎿Q原有配置 ├── scts # ct文件 │ ├── aviator.sct│ └── digicert.sct├── ssl # 證書(shū)文件,具體請(qǐng)看deepzz.conf│ ├── dhparams.pem│ ├── domain.key│ ├── domain.pem│ ├── full_chained.pem│ └── session_ticket.key└── tpl # 模版文件 ├── feedTpl.xml ├── opensearchTpl.xml └── sitemapTpl.xml
1、app.yml,整個(gè)程序的配置文件,里面已經(jīng)列出了所有配置項(xiàng)的說(shuō)明,這里不再闡述。
2、blackip.yml,如果沒(méi)有使用Nginx
,博客內(nèi)置ip
過(guò)濾系統(tǒng)。 3、es
全名elasticsearch
,非常強(qiáng)大的分布式搜索引擎,github
用的就是它。里面的配置基本不用修改,但es/analysis/synonym.txt
是同義詞,你可以照著已有的隨意增加。
├── es │ ├── config │ │ ├── analysis │ │ │ └── synonym.txt #同義詞配置│ │ ├── elasticsearch.yml #分詞器配置│ │ ├── logging.yml #日志配置│ │ └── scripts #腳本│ └── plugins #中文分詞插件│ └── ik1.10.0 │
注意
,scripts文件夾雖然是空的,但必需存在,不然elasticsearch報(bào)錯(cuò)。
4、nginx
,系統(tǒng)采用nginx
作為代理(相信博客系統(tǒng)也不會(huì)獨(dú)占一臺(tái)服務(wù)器~)。請(qǐng)使用nginx.conf
替換原nginx
的配置。博客系統(tǒng)的配置文件是domain/deepzz.conf
,或則重命名(只要是滿足*.conf
)。deepzz.conf
文件里面學(xué)問(wèn)是最多的。或許你想一一弄懂,或許…。
注意本配置需要更新nginx到最新版,openssl更新到1.0.2j,具體請(qǐng)到
Jerry Qu
的本博客 Nginx 配置之完整篇查看,了解詳情。
5、scts
,存放 ct 文件。
6、ssl
,這里存放了所有證書(shū)相關(guān)的內(nèi)容。
├── dhparams.pem #參見(jiàn)eiblog/conf/nginx/domain/deepzz.conf├── domain.key #證書(shū)私鑰,一般頒發(fā)者處下載 ├── domain.pem #證書(shū)鏈,一般從證書(shū)頒發(fā)者那可以直接下載到 ├── full_chained.pem #參見(jiàn)eiblog/conf/nginx/domain/deepzz.conf└── session_ticket.key #參見(jiàn)eiblog/conf/nginx/domain/deepzz.conf
7、tpl
模版相關(guān),不用修改。
請(qǐng)確定你已經(jīng)完成了上面所說(shuō)的所有步驟,在本地已經(jīng)測(cè)試成功。服務(wù)器上MognoDB
和Elasticsearch
已經(jīng)安裝并已經(jīng)運(yùn)行成功。
首先,請(qǐng)將本地測(cè)試好的conf
,static
,views
文件夾上傳至服務(wù)器,建議存儲(chǔ)到服務(wù)器/data/eiblog
下。
注意
conf/es/config/scripts
空文件夾是否存在
SH$ tree /data/eiblog -L 1 ├── conf ├── static ├── views
然后,將鏡像 PULL 到服務(wù)器本地。
# PULL下Eiblog鏡像$ docker pull registry.cn-hangzhou.aliyuncs.com/deepzz/eiblog
最后,執(zhí)行docker run
命令,希望你能成功。
SH$ docker run -d --name eiblog --restart=always \ --add-host disqus.com:23.235.33.134 \ --link eidb --link eisearch \ -p 9000:9000 \ -e GODEBUG=netdns=cgo \ -v /data/eiblog/logdata:/eiblog/logdata \ -v /data/eiblog/conf:/eiblog/conf \ -v /data/eiblog/static:/eiblog/static \ -v /data/eiblog/views:/eiblog/views \ registry.cn-hangzhou.aliyuncs.com/deepzz/eiblog
這里默認(rèn)MongDB
和Elasticsearch
均為docker
部署,且名稱(chēng)為eidb
,eisearch
。
通過(guò)Nginx+docker
部署,是博主推薦的方式。這里采用Docker Compose
管理我們整個(gè)博客系統(tǒng)。
請(qǐng)確認(rèn)你已經(jīng)成功安裝好Nginx
、docker
、docker-compose
。Nginx 請(qǐng)一定參照 Jerry Qu 的Nginx 配置完整篇。
首先,請(qǐng)將本地測(cè)試好的conf
,static
,views
,docker-compose.yml
文件夾和文件上傳至服務(wù)器。前三個(gè)文件夾建議存儲(chǔ)到服務(wù)器/data/eiblog
下,docker-compose.yml
存放在你使用方便的地方。
注意
conf/es/config/scripts
空文件夾是否存在
SH$ tree /data/eiblog -L 1 ├── conf ├── static ├── views $ ls ~/ docker-compose.yml
然后,執(zhí)行:
$ cd ~ $ docker-compose up -d
等待些許時(shí)間,成功運(yùn)行。
免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如果涉及侵權(quán)請(qǐng)聯(lián)系站長(zhǎng)郵箱:is@yisu.com進(jìn)行舉報(bào),并提供相關(guān)證據(jù),一經(jīng)查實(shí),將立刻刪除涉嫌侵權(quán)內(nèi)容。