溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊(cè)×
其他方式登錄
點(diǎn)擊 登錄注冊(cè) 即表示同意《億速云用戶服務(wù)條款》

Eiblog 初體驗(yàn),搭建教程

發(fā)布時(shí)間:2020-06-21 21:58:06 來(lái)源:網(wǎng)絡(luò) 閱讀:438 作者:chenqijing2 欄目:軟件技術(shù)

用過(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)的前端采用htmljquery編寫(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)化呢?

  1. 系統(tǒng)目前只有首頁(yè)、專(zhuān)題、歸檔、友鏈、關(guān)于、搜索界面。相信已經(jīng)可以滿足大部分用戶的需求。

  2. .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)文件。

  3. 采用谷歌統(tǒng)計(jì),并實(shí)現(xiàn)異步(將訪問(wèn)信息發(fā)給后端,后端提交給谷歌)統(tǒng)計(jì),加速訪問(wèn)速度。

  4. 采用直接緩存 markdown 轉(zhuǎn)過(guò)的 html 文檔的方式,加速后端處理。響應(yīng)速度均在 3ms 以內(nèi),真正極速。

  5. 特定格式[ ![alt](https://st.deepzz.com/static/img/avatar.jpg =256x256) ]圖片懶加載策略,加快訪問(wèn)速度。

  6. 通過(guò) Nginx 的配置,開(kāi)啟壓縮縮小傳輸量,服務(wù)器傳輸證書(shū)鏈、開(kāi)啟Session Resumption、Session Ticket、OCSP Stapling等加速證書(shū)握手,再次提高速度。

  7. 文章評(píng)論數(shù)量(不重要)后端跑定時(shí)腳本,定時(shí)更新,所以有時(shí)評(píng)論數(shù)是不對(duì)的。這樣減少了 api 調(diào)用,又再次達(dá)到加速訪問(wèn)的目的。

  8. 針對(duì)disqus被墻原因,實(shí)現(xiàn)Jerry Qu的另類(lèi)評(píng)論方式,保證評(píng)論的流暢。

  9. 開(kāi)源Typecho完整后臺(tái)系統(tǒng),全功能markdown編輯器,讓你體驗(yàn)什么是簡(jiǎn)潔清爽。

  10. 博客后臺(tái)直接對(duì)接七牛 SDK,實(shí)現(xiàn)后臺(tái)上傳文件和刪除文件的簡(jiǎn)單功能。

  11. 采用elasticsearch作為站內(nèi)搜索,添加google opensearch功能,搜索更加自然。

當(dāng)然,在信息安全方面也沒(méi)少下功夫,雖然我們只是一個(gè)小小的博客系統(tǒng)。

  1. CDN,使用七牛融合CDN,并https化,實(shí)現(xiàn)全站https。七??缮暾?qǐng)免費(fèi)證書(shū)了。

  2. CT,證書(shū)透明度檢測(cè),提供一個(gè)開(kāi)放的審計(jì)和監(jiān)控系統(tǒng)??梢宰屓魏斡蛎姓呋蛘?CA 確定證書(shū)是否被錯(cuò)誤簽發(fā)或者被惡意使用,從而提高 HTTPS 網(wǎng)站的安全性。

  3. OCSP,在線證書(shū)狀態(tài)協(xié)議。用來(lái)檢驗(yàn)證書(shū)合法性的在線查詢服務(wù).

  4. HSTS,強(qiáng)制客戶端(如瀏覽器)使用 HTTPS 與服務(wù)器創(chuàng)建連接??梢院芎玫慕鉀Q HTTPS 降級(jí)***。

  5. HPKP,HTTP公鑰固定擴(kuò)展,防范由「?jìng)卧旎虿徽?dāng)手段獲得網(wǎng)站證書(shū)」造成的中間人***。該功能讓我們選擇信任哪些CA。

  6. SSL Protocols,羅列支持的TLS協(xié)議,SSLv3被證實(shí)是不安全的。

  7. SSL dhparam,迪菲赫爾曼密鑰交換。

  8. Cipher suite,羅列服務(wù)器支持加密套件。

可以容易的看到httpsecurityreport評(píng)分96,ssllabs評(píng)分A+,堪稱(chēng)完美。這些安全的相關(guān)配置會(huì)在后面的部署過(guò)程中接觸到。

相關(guān)圖片展示:Eiblog 初體驗(yàn),搭建教程

Eiblog 初體驗(yàn),搭建教程

Eiblog 初體驗(yàn),搭建教程

Eiblog 初體驗(yà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ō)到。

本地測(cè)試

在我們下載好可執(zhí)行程序之后,我們可以開(kāi)始本地測(cè)試的工作了。

本地測(cè)試需要搭建兩個(gè)服務(wù)mongodbelasticsearch3.4.1(可選,搜索服務(wù)不可用)。

Eiblog默認(rèn)會(huì)連接hostnameeidbeisearch,因此你需要將信息填入/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
MongoDB 搭建

1、MongoDB搭建,Mac 可通過(guò)brew install mongo進(jìn)行安裝,其它平臺(tái)請(qǐng)查詢資料。

Elasticsearch 搭建

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下的usernamepassword。也就是初始賬號(hào)密碼deepz、deepzz。

準(zhǔn)備部署

如果你在感受了該博客的魅力了之后,仍然堅(jiān)持想要搭建它。那么,恭喜你,獲得的一款不想再更換的博客系統(tǒng)。下面,我們跟隨步驟對(duì)部署流程進(jìn)一步說(shuō)明。

這里只提供Docker的相關(guān)部署說(shuō)明。你如果需要其它方式部署,請(qǐng)參考該方式。

前提準(zhǔn)備

這里需要準(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ō)需要shornamepublic 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)。

文件準(zhǔn)備

盡管大多數(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)悉知。

配置說(shuō)明

走到這里,我相信只走到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),不用修改。

開(kāi)始部署

docker

請(qǐng)確定你已經(jīng)完成了上面所說(shuō)的所有步驟,在本地已經(jīng)測(cè)試成功。服務(wù)器上MognoDBElasticsearch已經(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)MongDBElasticsearch均為docker部署,且名稱(chēng)為eidb,eisearch。

nginx + docker

通過(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)行。


向AI問(wèn)一下細(xì)節(jié)

免責(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)容。

AI