溫馨提示×

溫馨提示×

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

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

怎么在Ubuntu服務(wù)器上部署Hexo博客

發(fā)布時(shí)間:2021-08-16 11:23:26 來源:億速云 閱讀:985 作者:chen 欄目:云計(jì)算

本篇內(nèi)容主要講解“怎么在Ubuntu服務(wù)器上部署Hexo博客”,感興趣的朋友不妨來看看。本文介紹的方法操作簡單快捷,實(shí)用性強(qiáng)。下面就讓小編來帶大家學(xué)習(xí)“怎么在Ubuntu服務(wù)器上部署Hexo博客”吧!

Hexo 是用 Node.js 開發(fā)的一個(gè)靜態(tài)站點(diǎn)生成器(Static Site Generator),支持 Markdown 語法寫作,有著強(qiáng)大的插件系統(tǒng),而且性能優(yōu)異。閱讀不少技術(shù)社區(qū)分享的文章時(shí),看到國內(nèi)不少同學(xué)都有在用這個(gè)引擎,看來「市場占有率」不低。

本文將介紹如何在一臺 Ubuntu 14.04 的 CVM 云服務(wù)器上快速部署 Hexo 博客站點(diǎn),如何快速發(fā)布一篇博文并通過云服務(wù)器上的私有 Git 倉庫部署到 Web 服務(wù)器目錄下。

前提條件

如果想跟著本教程順利完成 Hexo 博客的搭建,需要具備以下條件:

  1. 一臺安裝了 Ubuntu 14.04 的 CVM 云服務(wù)器。一般個(gè)人博客的流量都比較低,初期選擇 1核 1GB內(nèi)存類型的服務(wù)器即可,而且有不少免費(fèi)試用的時(shí)間。

  2. 在本地電腦上安裝 Node.js 和 npm,建議谷歌相應(yīng)關(guān)鍵詞了解具體步驟。

此外,還要在云服務(wù)器上安裝 Git 和 Nginx 兩個(gè)必備的軟件包。Git 用于版本管理和部署,Nginx 用于靜態(tài)博客托管。

sudo apt-get update
sudo apt-get install git nginx -y

另外,本文均以 Windows 為例,演示在本地端的操作,Mac 上的操作會更為簡單。Windows 上沒有 Mac 的 iTerm2 ,我們以 ConEmu + Git Bash 組成的終端作為替代。如果有讀者感興趣,后續(xù)再撰文介紹具體配置方法。

怎么在Ubuntu服務(wù)器上部署Hexo博客

1. 本地 Hexo 安裝及初始化

NPM 上還有許多 Hexo 相關(guān)的包,但是只要安裝好了 hexo-cli 和 hexo-server 這兩個(gè)核心組件之后,就可以讓博客跑起來了。

我們使用 Node.js 的包管理器 npm 安裝 hexo-cli 和 hexo-server。

npm install hexo-cli hexo-server -g

hexo-cli 是 Hexo 的命令行工具,可用于快速新建、發(fā)布、部署博客;hexo-server 是 Hexo 的內(nèi)建服務(wù)器,可用于部署前的預(yù)覽和測試。-g 選項(xiàng),表示全局安裝。

接下來,為 Hexo 博客做一些基礎(chǔ)配置,包括創(chuàng)建基礎(chǔ)文件。這步操作很簡單,Hexo 提供了一個(gè)快捷命令,只需要提供一個(gè)存放文件的目錄地址即可。

hexo init ~/hexo_blog

在國內(nèi)環(huán)境下執(zhí)行該命令,速度會有些慢。因?yàn)樾枰獜?Hexo 在 Github 上的倉庫克??;倉庫克隆成功后,會自動執(zhí)行一系列 npm 命令,自安裝依賴模塊。

這時(shí),我們就已經(jīng)有了一個(gè)寫作、管理博客的環(huán)境。

2. 云端服務(wù)器配置

完成本地端的操作之后,暫時(shí)回到服務(wù)器的配置。在下面的操作之前,請確保已經(jīng)購買了一臺云服務(wù)器,并且能夠以 ubuntu 用戶身份正常登陸。

在這部分,要完成以下件事情:

  1. 為本地的 hexo_blog 配置一個(gè)部署靜態(tài)文件的遠(yuǎn)程倉庫。
    許多教程均以 Github 作為中轉(zhuǎn)的平臺,但是會讓整個(gè)流程變得更為復(fù)雜,而且會受服務(wù)器與 Github 之間網(wǎng)絡(luò)情況的影響。假如 Github 宕機(jī)或者被封,你將無法更新博客。

  2. 配置 Nginx 托管博客文件目錄。

  3. 配置遠(yuǎn)程倉庫自動更新到博客文件目錄的鉤子。

2.1 創(chuàng)建私有 Git 倉庫

在 /var/repo/ 下,創(chuàng)建一個(gè)名為 hexo_static 的裸倉庫(bare repo)。

如果沒有 /var/repo 目錄,需要先創(chuàng)建;然后修改目錄的所有權(quán)和用戶權(quán)限,之后 ubuntu 用戶都具備/var/repo 目錄下所有新生成的目錄和文件的權(quán)限。

sudo mkdir /var/repo/
sudo chown -R $USER:$USER /var/repo/
sudo chmod -R 755 /var/repo/

然后,執(zhí)行如下命令:

cd /var/repo/
git init --bare hexo_static.git

2.2 配置 Nginx 托管文件目錄

接下來,創(chuàng)建 /var/www/hexo 目錄,用于 Nginx 托管。

sudo mkdir -p /var/www/hexo

和上一步類似,這里也需要修改目錄的所有權(quán)和權(quán)限。

sudo chown -R $USER:$USER /var/www/hexo
sudo chmod -R 755 /var/www/hexo

然后,修改 Nginx 的 default 設(shè)置:

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 服務(wù),使得改動生效。

sudo service nginx restart

做完這一步之后,你去訪問服務(wù)器的 IP 時(shí),應(yīng)該還是會報(bào)錯(cuò)的,因?yàn)?nbsp;/var/www/hexo 目錄是空的。

2.3 創(chuàng)建 Git 鉤子

接下來,在服務(wù)器上的裸倉庫 hexo_static 創(chuàng)建一個(gè)鉤子,在滿足特定條件時(shí)將靜態(tài) HTML 文件傳送到 Web 服務(wù)器的目錄下,即 /var/www/hexo。

在自動生成的 hooks 目錄下創(chuàng)建一個(gè)新的鉤子文件:

vim /var/repo/hexo_static.git/hooks/post-receive

在該文件中添加兩行代碼,指定 Git 的工作樹(源代碼)和 Git 目錄(配置文件等)。

#!/bin/bash

git --work-tree=/var/www/hexo --git-dir=/var/repo/hexo_static.git checkout -f

保存并退出文件,并讓該文件變?yōu)榭蓤?zhí)行文件。

chmod +x /var/repo/hexo_static.git/hooks/post-receive

至此,服務(wù)端的配置基本結(jié)束。

3. 完成本地 Hexo 配置

在第三部分的操作中,我們將完成以下任務(wù):

  1. 修改 Hexo 配置中的 URL 和默認(rèn)文章版式;

  2. 新建博客草稿并發(fā)布

  3. 配置自動部署到服務(wù)器端的 hexo_static 裸倉庫;

3.1 修改 Hexo 部分默認(rèn)配置

進(jìn)入 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.json
drwxr-xr-x 1 benjisong 1049089    0 Feb 24 12:16 node_modules
-rw-r--r-- 1 benjisong 1049089  484 Feb 24 12:16 package.json
drwxr-xr-x 1 benjisong 1049089    0 Feb 24 13:50 public
drwxr-xr-x 1 benjisong 1049089    0 Feb 24 12:08 scaffolds
drwxr-xr-x 1 benjisong 1049089    0 Feb 24 12:13 source
drwxr-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 # 沒有綁定域名時(shí)填寫服務(wù)器的實(shí)際 IP 地址。
root: /
permalink: :year/:month/:day/:title/
permalink_defaults:

接下來,修改 default_layout,該字段位于在 Writing 部分。將其從 post 修改為 draft ,表示每篇博文默認(rèn)都是草稿,必須經(jīng)過發(fā)布之后才能在博客站點(diǎn)上訪問。

# Writing
new_post_name: :title.md # File name of new posts
default_layout: draft # 原來的值是 post
titlecase: false # Transform title into titlecase

暫時(shí)保存并退出文件。在 3.3 部分繼續(xù)進(jìn)行配置。

3.2. 新建博客草稿并發(fā)布

這里簡單演示通過 Hexo 新建博文草稿,并發(fā)布的過程。

執(zhí)行如下命令,創(chuàng)建第一篇博文。

hexo new first-post

你會看到類似如下輸出:

INFO  Created: ~\Workspace\Git\hexo_blog\source\_drafts\first-post.md

在本地通過自己熟悉的編輯器,編輯博文。這里,我們把本文的內(nèi)容寫入第一篇博客中。

title: 在 Ubuntu 14.04 服務(wù)器上部署 Hexo 博客
tags:
  - Ubuntu
  - Hexo
categories:
  - Hexo
comments: true
date: 2017-02-24 15:31:00
---

## 以下為 Markdown 文章正文。

然后,通過如下命令發(fā)布博客:

hexo publish first-post

輸出類似下面這樣:

INFO  Published: ~\Workspace\Git\hexo_blog\source\_posts\first-post.md

博客推送到服務(wù)器之后,就可以在網(wǎng)站上訪問了。

3.3 通過 Git 部署

到了這一步,可以說萬事俱備,只欠東風(fēng)了。這個(gè)東風(fēng),就是通過 Git 將 Hexo 生成的靜態(tài)內(nèi)容推送到服務(wù)器。

繼續(xù)編輯 _config.yml 文件,找到 Deployment 部分,按照如下情況修改:

deploy:
    type: git
    repo: ubuntu@CVM 云服務(wù)器的IP地址:/var/repo/hexo_static
    branch: master

保存并退出文件。

之后,需要安裝一個(gè) Hexo 包,負(fù)責(zé)將博客所需的靜態(tài)內(nèi)容發(fā)送到設(shè)置好的 Git 倉庫。

npm install hexo-deployer-git --save

安裝好后可以測試部署:

hexo generate && hexo deploy

期間可能會提示輸入 ubuntu 用戶的登錄密碼(如果沒有設(shè)置 SSH 登錄)。成功之后的輸出大致如下:

...
 create mode 100644 tags/Node-js/index.html
 create mode 100644 tags/Ubuntu/index.html
Branch 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 -> master
INFO  Deploy done: git

現(xiàn)在,我們就可以在瀏覽器中打開 139.199.170.173,即可看到自己的博客網(wǎng)站了。

我們發(fā)現(xiàn),Hexo 對 blockquote 標(biāo)簽的樣式并不太美觀,需要后續(xù)再調(diào)優(yōu)。

怎么在Ubuntu服務(wù)器上部署Hexo博客

打包后的鏡像,還可以上傳到官方的服務(wù)市場,供所有用戶使用;還可以直接共享給其他用戶。

如果有用戶希望使用該鏡像,可在本文下方評論區(qū)留下自己的騰訊云賬號(登錄時(shí)使用的QQ號或郵箱)。

4.1 鏡像的使用

鏡像中已經(jīng)設(shè)置好了服務(wù)端,通過鏡像啟動 CVM 云服務(wù)器之后,讀者只需要根據(jù)本文第三部分「完成 Hexo 本地配置」中的步驟,設(shè)置好本地 Hexo 寫作環(huán)境的部署地址和服務(wù)器 URL等參數(shù)即可。

這里有一點(diǎn)一定要注意,通過鏡像啟動云服務(wù)器時(shí),務(wù)必重新設(shè)置密碼或密鑰,否則鏡像的制作者有可能輕松地登錄你的服務(wù)器。

不要選擇上圖中的方式安裝。

總結(jié)

本文較為完整地介紹了 Hexo 博客的安裝及初始化,服務(wù)端如何配置通過 Git 部署等。與其他教程不同,我們沒有使用公開的 Github 等第三方服務(wù),而是直接在服務(wù)器上創(chuàng)建了私有倉庫。然后,通過 Git 鉤子,將 Hexo 生成的博客靜態(tài)文件,快速地推送到 Web 服務(wù)的托管目錄。

由于 Hexo 是采用 Node.js 開發(fā)的,可能對于其他語言的學(xué)習(xí)者來說吸引力不大,因?yàn)楹罄m(xù)自主二次開發(fā)難度較高。因此,后續(xù)筆者還將介紹其他語言的博客引擎,如用 Python 編寫的 Lektor 和用 PHP 編寫的 Wordpress 等。

到此,相信大家對“怎么在Ubuntu服務(wù)器上部署Hexo博客”有了更深的了解,不妨來實(shí)際操作一番吧!這里是億速云網(wǎng)站,更多相關(guān)內(nèi)容可以進(jìn)入相關(guān)頻道進(jìn)行查詢,關(guān)注我們,繼續(xù)學(xué)習(xí)!

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

免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點(diǎn)不代表本網(wǎng)站立場,如果涉及侵權(quán)請聯(lián)系站長郵箱:is@yisu.com進(jìn)行舉報(bào),并提供相關(guān)證據(jù),一經(jīng)查實(shí),將立刻刪除涉嫌侵權(quán)內(nèi)容。

AI