基於CentOS搭建Hexo博客

本文首發於個人我的博客: http://www.fogcrane.org

海景

前言

本文介紹的是如何在CentOS系統上使用Hexo博客框架搭建一個徹底屬於本身的博客系統。html

知識儲備

  • CentOS是什麼?
  • Hexo是什麼?
  • Nginx是什麼?
  • Git是什麼?
  • Node.js是什麼?

CentOS是什麼?

CentOS(Community Enterprise Operating System)是Linux發行版之一,它是來自於Red Hat Enterprise Linux依照開放源代 碼規定發佈的源代碼所編譯而成。因爲出自一樣的源代碼,所以有些要求高度穩定性的服務器以CentOS替代商業版的Red Hat Enterprise Linux使用。二者的不一樣,在於CentOS並不包含封閉源碼軟件。CentOS 對上游代碼的主要修改是爲了移除不能自由使用的商標。2014年,CentOS宣佈與Red Hat合做,但CentOS將會在新的委員會下繼續運做,並不受RHEL的影響。

Hexo是什麼?

Hexo是一個快速、簡潔且高效的博客框架。Hexo使用Markdown(或其餘渲染引擎)解析文章,在幾秒內,便可利用靚麗的主題生成靜態網頁。Hexo使用Node.js來渲染頁面,所以渲染速度極快。只需一條指令便可部署到 GitHub Pages, Heroku 或其餘網站。同時,Hexo 擁有強大的插件系統,安裝插件可讓 Hexo 支持 Jade, CoffeeScript。

Nginx是什麼?

Nginx是一個 Web服務器,也能夠用做反向代理,負載平衡器和 HTTP緩存。該軟件由 Igor Sysoev 建立,並於2004年首次公開發布。同名公司成立於2011年,以提供支持。Nginx是一款面向性能設計的HTTP服務器,相較於Apache、lighttpd具備佔有內存少,穩定性高等優點。與舊版本(<=2.2)的Apache不一樣,Nginx不採用每客戶機一線程的設計模型,而是充分使用異步邏輯從而削減了上下文調度開銷,因此併發服務能力更強。總體採用模塊化設計,有豐富的模塊庫和第三方模塊庫,配置靈活。 在Linux操做系統下,Nginx使用epoll事件模型,得益於此,Nginx在Linux操做系統下效率至關高。同時Nginx在OpenBSD或FreeBSD操做系統上採用相似於epoll的高效事件模型kqueue。

Git是什麼?

git是用於Linux內核開發的版本控制工具。與CVS、Subversion一類的集中式版本控制工具不一樣,它採用了分佈式版本庫的做法,不須要服務器端軟件,就能夠運做版本控制,使得源代碼的發佈和交流極其方便。git的速度很快,這對於諸如Linux內核這樣的大項目來講天然很重要。git最爲出色的是它的合併追蹤(merge tracing)能力。實際上內核開發團隊決定開始開發和使用git來做爲內核開發的版本控制系統的時候,世界上開源社區的反對聲音很多,最大的理由是git太艱澀難懂,從git的內部工做機制來講,的確是這樣。可是隨着開發的深刻,git的正常使用都由一些友善的命令稿來執行,使git變得很是好用。如今,愈來愈多的著名項目採用git來管理項目開發,例如:wine、U-boot等。

Node.js是什麼?

Node.js是一個可以在服務器端運行JavaScript的開放源代碼、跨平臺JavaScript運行環境。Node.js採用Google開發的V8運行代碼,使用事件驅動、非阻塞和異步輸入輸出模型等技術來提升性能,可優化應用程序的傳輸量和規模。這些技術一般用於數據密集的事實應用程序。Node.js的出現使JavaScript也能用於服務器端編程。Node.js含有一系列內置模塊,使得程序能夠脫離Apache HTTP Server或IIS,做爲獨立服務器運行。

整體思路

如下爲了統一說法,統一將雲主機稱爲服務端,將本地電腦稱爲客戶端。
本次搭建博客須要在客戶端以及服務端進行一系列配置。先說一下總體的實現思路。總的來講分兩大步。
第一步,在客戶端進行如下工做:node

  • 安裝Git服務以及配置Git
  • 安裝nodejs
  • 安裝Hexo框架

第二步,在服務端進行如下工做:nginx

  • 安裝Nginx服務
  • 安裝Git服務以及nodejs
  • 搭建Git服務器以及配置自動部署

軟件下載

如今,羅列一下過程所需的軟件,並提供一下下載的傳送門。
如下軟件是客戶端須要下載安裝的。git

客戶端配置

安裝Git以及進行相關配置

一、首先經過前面提供的連接下載Git客戶端,而後進行安裝。github

二、安裝完成以後,打開Git Bash進行如下配置。(注:此處假定讀者以在github上註冊了github帳號。)
(1)、輸入如下代碼設置用戶名和郵箱:npm

# 將此處的"yourname"替換成本身的用戶名
git config --global user.name "yourname"

# 將此處的"youremail"替換成本身的郵箱
git config --global user.email "youremail"

以下圖:
客戶端git配置編程

(2)、輸入如下代碼檢查是否有SSH Keyjson

cd ~/.ssh

以下圖:
查找ssh keyvim

此結果代表客戶端暫無SSH Key,所以,輸入如下代碼新建一個SSH Key。centos

# 將此處的"youremail"替換成本身的郵箱
ssh-keygen -t rsa -C "youremail"

效果以下圖:
設置ssh key

接着繼續輸入cat ~/.ssh/id_rsa.pub,而後將獲得的祕鑰先複製一下,待會服務器配置須要用到。
以下圖:
ssh key

安裝Nodejs

經過前面提供的連接下載Nodejs,而後進行安裝。安裝完成後,輸入node -v以及npm -v查看node以及npm的版本信息。以下圖:
node_npm version

安裝Hexo框架

接下來,就是重頭戲:安裝Hexo框架了。
首先,繼續在剛剛打開的Git Bash裏面輸入如下代碼,經過npm進行全局安裝hexo框架。

npm install -g hexo-cli

以下圖:
安裝hexo

安裝完hexo框架,就能夠開始初始化hexo了,選擇一個目錄存放你的博客文件,而後把Git Bash切換到那個目錄。
接着,輸入hexo init blog進行初始化hexo。以下圖:
初始化hexo

初始化完畢以後,打開博客根目錄的package.json文件,在dependencies的配置中,追加一項:"hexo-deployer-git": "^0.3.1",以下圖,而後,返回Git Bash,先輸入cd blog,在輸入npm install進行包的安裝。
package.json

安裝完包以後,接着在Git Bash輸入:hexo s,而後在瀏覽器輸入localhost:4000,就能夠看到hexo已經搭建成功了。以下圖:
hexo 博客

至此,客戶端的配置就告一段落了。接下來開始服務端的配置。

服務端配置

首先,進行服務端的系統更新。待更新完系統以後再進行如下操做。(注:putty軟件的粘貼快捷鍵爲:「Shift」+「Insert」)
輸入如下代碼,可進行系統更新:

yum update -y

更新完系統,輸入如下代碼,可查看系統版本:

cat /etc/centos-release

運行結果以下圖:
運行結果圖

安裝Nginx

安裝Nginx分爲如下幾步。第一,配置Nginx官方源。第二,安裝Nginx。第三,配置Nginx配置文件。
一、配置Nginx官方源
輸入如下代碼,新建一個文件以配置Nginx源

vi /etc/yum.repos.d/nginx.repo

在打開的文件中輸入如下代碼,輸入完畢以後,按 「esc」 鍵退出編輯模式, 輸入 「:wq」 保存退出。

[nginx]
name=nginx repo
baseurl=http://nginx.org/packages/mainline/centos/7/$basearch/
gpgcheck=0
enabled=1

效果以下圖:
配置源

二、安裝Nginx
輸入如下代碼進行安裝。

yum install nginx -y

運行結果以下圖:
安裝ningx

三、啓動Nginx並設置開機自啓
輸入如下代碼:

systemctl start nginx
systemctl enable nginx

效果以下圖:
啓動nginx
進行到這裏,你已經能夠把服務器ip複製到瀏覽器進行訪問了~安裝成功的話就會出現下面的歡迎界面。
ningx歡迎頁

四、配置Nginx
接下來,須要修改一下nginx的相關配置,包括設置網站根目錄以及配置域名。輸入如下代碼,打開Nginx的配置文件。(注:此處假定讀者已完成了域名備案以及域名解析。)

vi /etc/nginx/conf.d/default.conf

依照下圖進行修改,將「/usr/share/nginx/html」改成「/usr/share/nginx/html/blog」。
nginx配置
至此,Nginx的配置就基本完成了。

安裝Nodejs

輸入如下代碼進行Nodejs的安裝。

yum install nodejs

結果以下圖:
node安裝

可輸入node -v以及npm -v查看node的版本。
至此,Nodejs的安裝就完成了。

安裝Git以及進行相關配置

一、輸入如下代碼,進行Git的安裝

yum install git

結果以下圖:
git安裝

二、建立git用戶以及設置密碼
輸入如下代碼:

#建立用戶,用戶名爲git
adduser git
#設置密碼
passwd git

結果以下圖:
添加git用戶

三、把git用戶添加到sudo用戶組中
輸入如下代碼sudo vi /etc/sudoers,打開sudoers文件,輸入:/root進行搜索,搜索到代碼行root ALL=(ALL) ALL,而後在這一行下添加如下代碼git ALL=(ALL) ALL。輸入完畢以後,按wq!強制保存退出vi。
效果以下圖:
git-sudoers

四、切換到git用戶,添加SSH Key文件而且設置相應的讀寫與執行權限。
輸入如下代碼:

# 切換用戶
su git
# 建立目錄
mkdir ~/.ssh
# 新建文件
vim ~/.ssh/authorized_keys

而後把以前在客戶端設置的SSH Key,複製到authorized_keys文件中,保存後退出。以下圖:
git sshkey

接下來設置文件權限,把authorized_keys文件設置成只有屬主有讀寫權限,把ssh目錄設置爲只有屬主有讀、寫、執行權限。代碼以下:

chmod 600 ~/.ssh/authorized_keys
chmod 700 ~/.ssh

設置完後,返回客戶端,打開Git Bash,輸入如下代碼,測試是否能鏈接上服務器:

# ServerIP爲你本身服務器的ip
ssh -v git@ServerIP

結果以下圖:
測試鏈接

五、從新回到服務器,在網站根目錄新建一個blog文件夾,用於客戶端上傳文件,而且把該文件受權給git用戶。代碼以下:

# 使用sudo指令,須要輸入git用戶的密碼
sudo mkdir -p /usr/share/nginx/html/blog
sudo chown -R git:git /usr/share/nginx/html/blog

六、在服務器上初始化一個git裸庫
切換到git用戶,而後切換到git用戶目錄,接着初始化裸庫,代碼以下:

su git
cd ~
git init --bare blog.git

接着新建一個post-receive文件

vim ~/blog.git/hooks/post-receive

而後在該文件中輸入如下內容:

#!/bin/sh
git --work-tree=/usr/share/nginx/html/blog --git-dir=/home/git/blog.git checkout -f

保存退出以後,再輸入如下代碼,賦予該文件可執行權限。

chmod +x ~/blog.git/hooks/post-receive

以下圖:
設置git

七、返回客戶端,設置博客根目錄下的_config.yml文件。

deploy:
    type: git
    repo: git@SERVER:/home/git/blog.git       #此處的SERVER需改成你本身服務器的ip
    branch: master                            #這裏填寫分支
    message:                                  #提交的信息

如圖:
deploy 配置

保存後,在博客根目錄打開Git Bash,輸入如下命令:

hexo clean
hexo g
hexo d

部署完畢以後,便可在瀏覽器輸入你的服務器ip進行訪問你的博客了。
線上博客

結語

今天的搭建博客教程到這裏已經接近尾聲了,後續可能會再寫一篇主題配置的文章,敬請期待。
下面貼一下Hexo的相關資源。若有疑問,請加我微信進行進一步的探討~

Hexo官方文檔

MarkDown文檔

git文檔

相關文章
相關標籤/搜索