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