推薦理由
----搭建我的的空間博客目前深受我的開發者的追捧,然而博客的種類和平臺有不少,Hexo是一個開源的靜態博客生成器。相比於其餘博客而言它只要是web容器就能用。除了悶頭專研技術以外,程序員還須要不斷地寫做進行技術積累,寫博客是其中最重要的方式之一。商業博客平臺很多,可是更符合程序員背景的方案,是本身開發一個博客平臺或者使用開源的博客平臺。開源的博客平臺多如牛毛,並且不乏優秀之做,如 Hexo、Octopress、Jekyll、Wordpress。本系列文章將分享如何利用各類博客引擎在雲端搭建屬於本身的我的博客。今天是第一篇,介紹如何在 Ubuntu 14.04 上部署 Hexo 博客。Hexo 是用 Node.js 開發的一個靜態站點生成器(Static Site Generator),支持 Markdown 語法寫做,有着強大的插件系統,並且性能優異。閱讀很多技術社區分享的文章時,看到國內很多同窗都有在用這個引擎,看來「市場佔有率」不低。本文將介紹如何在一臺 Ubuntu 14.04 的 CVM 雲服務器上快速部署 Hexo 博客站點,如何快速發佈一篇博文並經過雲服務器上的私有 Git 倉庫部署到 Web 服務器目錄下。
前提條件
----若是想跟着本教程順利完成 Hexo 博客的搭建,須要具有如下條件:一、一臺安裝了 Ubuntu 14.04 的 CVM 雲服務器。通常我的博客的流量都比較低,初期選擇 1核 1GB內存類型的服務器便可,並且有很多免費試用的時間。二、在本地電腦上安裝 Node.js 和 npm,建議谷歌相應關鍵詞瞭解具體步驟。此外,還要在雲服務器上安裝 Git 和 Nginx 兩個必備的軟件包。Git 用於版本管理和部署,Nginx 用於靜態博客託管。
sudo apt-get updatesudo apt-get install git nginx -y
另外,本文均以 Windows 爲例,演示在本地端的操做,Mac 上的操做會更爲簡單。Windows 上沒有 Mac 的 iTerm2 ,咱們以 ConEmu + Git Bash 組成的終端做爲替代。若是有讀者感興趣,後續再撰文介紹具體配置方法。1. 本地 Hexo 安裝及初始化
NPM 上還有許多 Hexo 相關的包,可是隻要安裝好了 hexo-cli 和 hexo-server 這兩個核心組件以後,就可讓博客跑起來了。咱們使用 Node.js 的包管理器 npm 安裝 hexo-cli 和 hexo-server。npm install hexo-cli hexo-server -g
hexo-cli 是 Hexo 的命令行工具,可用於快速新建、發佈、部署博客;hexo-server 是 Hexo 的內建服務器,可用於部署前的預覽和測試。-g 選項,表示全局安裝。接下來,爲 Hexo 博客作一些基礎配置,包括建立基礎文件。這步操做很簡單,Hexo 提供了一個快捷命令,只須要提供一個存放文件的目錄地址便可。
hexo init ~/hexo_blog
在國內環境下執行該命令,速度會有些慢。由於須要從 Hexo 在 Github 上的倉庫克隆;倉庫克隆成功後,會自動執行一系列 npm 命令,自安裝依賴模塊。這時,咱們就已經有了一個寫做、管理博客的環境。
2. 雲端服務器配置
完成本地端的操做以後,暫時回到服務器的配置。在下面的操做以前,請確保已經購買了一臺雲服務器,而且可以以 ubuntu 用戶身份正常登錄。在這部分,要完成如下件事情:1.爲本地的 hexo_blog 配置一個部署靜態文件的遠程倉庫。 許多教程均以 Github 做爲中轉的平臺,可是會讓整個流程 變得更爲複雜,並且會受服務器與 Github 之間網絡狀況的 影響。假如 Github 宕機或者被封,你將沒法更新博客。2.配置 Nginx 託管博客文件目錄。3.配置遠程倉庫自動更新到博客文件目錄的鉤子。2.1 建立私有 Git 倉庫
在 /var/repo/ 下,建立一個名爲 hexo_static 的裸倉庫(bare repo)。若是沒有 /var/repo 目錄,須要先建立;而後修改目錄的全部權和用戶權限,以後 ubuntu 用戶都具有 /var/repo 目錄下全部新生成的目錄和文件的權限。sudo mkdir /var/repo/sudo chown -R $USER:$USER /var/repo/sudo chmod -R 755 /var/repo/
而後,執行以下命令:cd /var/repo/git init --bare hexo_static.git
2.2 配置 Nginx 託管文件目錄
接下來,建立 /var/www/hexo 目錄,用於 Nginx 託管。sudo mkdir -p /var/www/hexo
和上一步相似,這裏也須要修改目錄的全部權和權限。sudo chown -R $USER:$USER /var/www/hexosudo chmod -R 755 /var/www/hexo
而後,修改 Nginx 的 default 設置:sudo vim /etc/nginx/sites-available/default
將其中的 root 指令指向 /var/www/hexo 目錄。...server { listen 80 default_server; listen [::]:80 default_server ipv6only=on; root /var/www/hexo; # 須要修改的部分 index index.html index.htm;...
保存並退出文件。若是之後購買並備案域名以後,能夠再將配置中的 default_server 修改成你的域名。最後,重啓 Nginx 服務,使得改動生效。sudo service nginx restart
作完這一步以後,你去訪問服務器的 IP 時,應該仍是會報錯的,由於 /var/www/hexo 目錄是空的。
2.3 建立 Git 鉤子
接下來,在服務器上的裸倉庫 hexo_static 建立一個鉤子,在知足特定條件時將靜態 HTML 文件傳送到 Web 服務器的目錄下,即 /var/www/hexo。在自動生成的 hooks 目錄下建立一個新的鉤子文件:vim /var/repo/hexo_static.git/hooks/post-receive
在該文件中添加兩行代碼,指定 Git 的工做樹(源代碼)和 Git 目錄(配置文件等)。#!/bin/bashgit --work-tree=/var/www/hexo --git-dir=/var/repo/hexo_static.git checkout -f
保存並退出文件,並讓該文件變爲可執行文件。chmod +x /var/repo/hexo_static.git/hooks/post-receive
至此,服務端的配置基本結束。
3. 完成本地 Hexo 配置
在第三部分的操做中,咱們將完成如下任務: 1. 修改 Hexo 配置中的 URL 和默認文章版式; 2. 新建博客草稿併發布 3. 配置自動部署到服務器端的 hexo_static 裸倉庫;3.1 修改 Hexo 部分默認配置
進入 hexo_blog 目錄後,主要有如下文件。-rw-r--r-- 1 benjisong 1049089 1619 Feb 24 14:45 _config.yml-rw-r--r-- 1 benjisong 1049089 174 Feb 24 13:51 db.jsondrwxr-xr-x 1 benjisong 1049089 0 Feb 24 12:16 node_modules-rw-r--r-- 1 benjisong 1049089 484 Feb 24 12:16 package.jsondrwxr-xr-x 1 benjisong 1049089 0 Feb 24 13:50 publicdrwxr-xr-x 1 benjisong 1049089 0 Feb 24 12:08 scaffoldsdrwxr-xr-x 1 benjisong 1049089 0 Feb 24 12:13 sourcedrwxr-xr-x 1 benjisong 1049089 0 Feb 24 12:08 themes
其中,_config.yml 爲 Hexo 的主配置文件。咱們首先修改博客的 URL 地址。# URL## If your site is put in a subdirectory, set url as 'http://yoursite.com/child' and root as '/child/'url: http://server-ip # 沒有綁定域名時填寫服務器的實際 IP 地址。root: /permalink: :year/:month/:day/:title/permalink_defaults:
接下來,修改 default_layout,該字段位於在 Writing 部分。將其從 post 修改成 draft ,表示每篇博文默認都是草稿,必須通過發佈以後才能在博客站點上訪問。# Writingnew_post_name: :title.md # File name of new postsdefault_layout: draft # 原來的值是 posttitlecase: false # Transform title into titlecase
暫時保存並退出文件。在 3.3 部分繼續進行配置。
3.2. 新建博客草稿併發布
這裏簡單演示經過 Hexo 新建博文草稿,併發布的過程。執行以下命令,建立第一篇博文。hexo new first-post
你會看到相似以下輸出:INFO Created: ~\Workspace\Git\hexo_blog\source\_drafts\first-post.md
在本地經過本身熟悉的編輯器,編輯博文。這裏,咱們把本文的內容寫入第一篇博客中。title: 在 Ubuntu 14.04 服務器上部署 Hexo 博客tags: - Ubuntu - Hexocategories: - Hexocomments: truedate: 2017-02-24 15:31:00---## 如下爲 Markdown 文章正文。
而後,經過以下命令發佈博客:hexo publish first-post
輸出相似下面這樣:INFO Published: ~\Workspace\Git\hexo_blog\source\_posts\first-post.md
博客推送到服務器以後,就能夠在網站上訪問了。
3.3 經過 Git 部署
到了這一步,能夠說萬事俱備,只欠東風了。這個東風,就是經過 Git 將 Hexo 生成的靜態內容推送到服務器。繼續編輯 _config.yml 文件,找到 Deployment 部分,按照以下狀況修改:deploy: type: git repo: ubuntu@CVM 雲服務器的IP地址:/var/repo/hexo_static branch: master
保存並退出文件。以後,須要安裝一個 Hexo 包,負責將博客所需的靜態內容發送到設置好的 Git 倉庫。npm install hexo-deployer-git --save
安裝好後能夠測試部署:hexo generate && hexo deploy
期間可能會提示輸入 ubuntu 用戶的登陸密碼(若是沒有設置 SSH 登陸)。成功以後的輸出大體以下:... create mode 100644 tags/Node-js/index.html create mode 100644 tags/Ubuntu/index.htmlBranch master set up to track remote branch master from ubuntu@139.199.170.173:/var/repo/hexo_static.To 139.199.170.173:/var/repo/hexo_static * [new branch] HEAD -> masterINFO Deploy done: git
如今,咱們就能夠在瀏覽器中打開 139.199.170.173,便可看到本身的博客網站了。咱們發現,Hexo 對 blockquote 標籤的樣式並不太美觀,須要後續再調優。
4. 經過鏡像快速部署
本文雖然將 Hexo 博客的大體部署過程明確地列出,可是對於部分初學用戶來講可能還會顯得較爲複雜。如何利用 CVM 雲服務器提供商(即騰訊雲)的其餘服務,快速讓其餘用戶沒必要通過上面的步驟,快速進行部署呢?在雲計算中,與虛擬機相關的一個概念是鏡像(Image)。用戶經過鏡像,能夠一鍵啓動多個配置如出一轍的雲服務器。咱們這一步經過 CVM 的「製做系統鏡像」功能,將 Hexo 博客的服務器端打包。
打包後的鏡像,還能夠上傳到官方的服務市場,供全部用戶使用;還能夠直接共享給其餘用戶。若是有用戶但願使用該鏡像,可在本文下方評論區留下本身的騰訊雲帳號(登陸時使用的QQ號或郵箱)。4.1 鏡像的使用
鏡像中已經設置好了服務端,經過鏡像啓動 CVM 雲服務器以後,讀者只須要根據本文第三部分「完成 Hexo 本地配置」中的步驟,設置好本地 Hexo 寫做環境的部署地址和服務器 URL等參數便可。這裏有一點必定要注意,經過鏡像啓動雲服務器時,務必從新設置密碼或密鑰,不然鏡像的製做者有可能輕鬆地登陸你的服務器。不要選擇上圖中的方式安裝。總結
--本文較爲完整地介紹了 Hexo 博客的安裝及初始化,服務端如何配置經過 Git 部署等。與其餘教程不一樣,咱們沒有使用公開的 Github 等第三方服務,而是直接在服務器上建立了私有倉庫。而後,經過 Git 鉤子,將 Hexo 生成的博客靜態文件,快速地推送到 Web 服務的託管目錄。因爲 Hexo 是採用 Node.js 開發的,可能對於其餘語言的學習者來講吸引力不大,由於後續自主二次開發難度較高。所以,後續筆者還將介紹其餘語言的博客引擎,如用 Python 編寫的 Lektor 和用 PHP 編寫的 Wordpress 等。敬請期待。文章出自騰訊雲技術社區https://www.qcloud.com/community/article/241080001487926962推薦你們關注騰訊雲技術社區微信公衆號:QcloudCommunityhtml