摘要:本文將介紹如何在一臺的云服務器上快速部署博客站點,如何快速發布一篇博文并通過云服務器上的私有倉庫部署到服務器目錄下。此外,還要在云服務器上安裝和兩個必備的軟件包。在服務器上部署博客以下為文章正文。
推薦理由:
Hexo 是用 Node.js 開發的一個靜態站點生成器(Static Site Generator),支持 Markdown 語法寫作,有著強大的插件系統,而且性能優異。下面我推薦的這篇文章,介紹如何在一臺 Ubuntu 14.04 的 CVM 云服務器上快速部署 Hexo 博客站點,如何快速發布一篇博文并通過云服務器上的私有 Git 倉庫部署到 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組成的終端作為替代。如果有讀者感興趣,后續再撰文介紹具體配置方法。
本地 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 命令,自安裝依賴模塊。
這時,我們就已經有了一個寫作、管理博客的環境。
云端服務器配置
完成本地端的操作之后,暫時回到服務器的配置。在下面的操作之前,請確保已經購買了一臺云服務器,并且能夠以 ubuntu 用戶身份正常登陸。
在這部分,要完成以下件事情:
為本地的 hexo_blog 配置一個部署靜態文件的遠程倉庫。
許多教程均以 Github 作為中轉的平臺,但是會讓整個流程變得更為復雜,而且會受服務器與 Github 之間網絡情況的影響。假如 Github 宕機或者被封,你將無法更新博客。
配置 Nginx 托管博客文件目錄。
配置遠程倉庫自動更新到博客文件目錄的鉤子。
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
至此,服務端的配置基本結束。
完成本地 Hexo 配置
在第三部分的操作中,我們將完成以下任務:
修改 Hexo 配置中的 URL 和默認文章版式;
新建博客草稿并發布
配置自動部署到服務器端的 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: ~WorkspaceGithexo_blogsource_draftsfirst-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: ~WorkspaceGithexo_blogsource_postsfirst-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 標簽的樣式并不太美觀,需要后續再調優。
通過鏡像快速部署
本文雖然將 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/commun...)
推薦大家關注騰訊云技術社區微信公眾號:QcloudCommunity
文章版權歸作者所有,未經允許請勿轉載,若此文章存在違規行為,您可以聯系管理員刪除。
轉載請注明本文地址:http://specialneedsforspecialkids.com/yun/38530.html
摘要:提示,如果需要通過實現服務器自動化部署,推薦使用會更方便一些然后在目錄初始化本地倉庫并提交到這時候上已經有我提交的代碼了。再新建一個文件處理部署相關腳本,內容如下將新增的與兩個文件到服務器。 這篇文章將如何搭建hexo,以及如何通過git webhooks實現遠程vps的自動部署 這篇文章適合的條件: 簡單的用于個人博客、公司博客展示,hexo的定位是靜態博客,要實現動態服務器的功能...
摘要:原文地址作為一個天天造的人,必然要經常訪問谷歌等網站,所以前些日子買了自己搭了梯子。今天就跟大家分享一下,如何使用搭建個人博客。創建用戶,建立裸庫,配置。 原文地址:https://www.xksblog.top/use-V... 作為一個天天造BUG的人,必然要經常訪問谷歌等網站,所以前些日子買了VPS自己搭了梯子。但如果只是用VPS來搭梯子那就太浪費了,所以又折騰了一天,把自己之...
閱讀 1033·2023-04-26 02:26
閱讀 2143·2021-09-26 10:16
閱讀 1552·2019-08-30 12:57
閱讀 3466·2019-08-29 16:10
閱讀 3221·2019-08-29 13:47
閱讀 1188·2019-08-29 13:12
閱讀 2139·2019-08-29 11:11
閱讀 1336·2019-08-26 13:28