在服務器/GitHub上搭建Hexo博客

 

本文章首發於:http://www.xtstarry.top/index.php/2018/07/24/在服務器-github上搭建hexo博客/

前言

Hexo 是一個快速、簡潔且高效的博客框架。Hexo 使用 Markdown(或其他渲染引擎)解析文章,在幾秒內,即可利用靚麗的主題生成靜態網頁,更多介紹請訪問 Hexo官方網站

本篇文章的目的是幫助新手快速建立自己的博客,併發布到github.io或自己的服務器上。

配置本地服務器

讓我們一步一步來。

配置本地環境

安裝node.js

鑑於絕大多數人本地環境使用的都是Windows,本文章所有本地環境安裝方式均爲Windows下的。

訪問node.js官方網站,下載推薦版以後安裝即可。

安裝git

訪問git官方網站,下載適合自己Windows的版本,安裝即可。當然如果你覺得官網下載速度過慢的話,也可以訪問這裏,這裏收錄了git國內下載的源。

安裝Hexo

git的終端(開始菜單中打開git/git bash),鍵入以下命令,等待片刻即可安裝完成。

$ npm install -g hexo-cli

若命令無法執行,則按照指示安裝需要的程序即可。

建立本地站點

建立本地文件夾

建立一個本地文件夾用於存放博客,我使用的是F:\blog

初始化本地文件夾

由於默認NPM鏡像速度太慢,我們可以先切換到淘寶的源:

npm config set registry "https://registry.npm.taobao.org"

切換是暫時的,下次如果還要安裝npm鏡像時,仍需執行這條命令。

接下來在終端內切換到你所指定的文件夾,輸入以下命令,完成初始化。

hexo init
npm install

完成後文件夾目錄如下:

.
├── _config.yml
├── package.json
├── scaffolds
├── source
|   ├── _drafts
|   └── _posts
└── themes

瀏覽本地博客

依次鍵入以下命令,我們就可以在http://localhost:4000/ 上查看我們博客的樣式。

hexo clean
hexo generate
hexo server

修改網站配置

參數設置

可以在 _config.yml 中修改大部份的配置。

 

參數 描述
title 網站標題
subtitle 網站副標題
description 網站描述
author 您的名字
language 網站使用的語言

更多詳細設置可以訪問 配置,Hexo有中文文檔,可以非常方便的閱讀。

 

注意:修改參數時所有的冒號都必須有空格!

更換主題

訪問https://hexo.io/themes/挑選一個你喜歡的主題。點擊圖片預覽,點擊主題名稱一般能跳轉到主題的github界面。

拿我現在使用的主題舉例,鏈接是https://github.com/EYHN/hexo-theme-one,一般主題頁面都會提供文檔,按照文檔克隆主題到對應目錄即可。

git clone https://github.com/作者/主題名稱 themes/存放主題的文件夾

注意:不少博客都需要安裝額外的插件,記得詳細閱讀文檔防止漏裝插件。

主題的設置在/themes/你下載的主題/_config.yml。不同的主題有着不同的配置文件。

 

部署博客到Github

得益於良心的 Github Pages,我們能夠使用Github Pages免費獲得一個自己的站點。當然如果你想要擁有自己的域名的話需要自己購買。

如果你沒有Github賬號的話,首先你需要一個Github賬號。註冊完成賬號後,我們按照官方文檔 Setting up Git ,添加一個名爲your_name.github.io 的Repository,注意名字必須是這個。

設置本地Git用戶名和郵箱

首先我們要設置自己的全局用戶名和郵箱。在Git終端中輸入下列命令,記得將用戶名和郵箱改成自己的。

git config --global user.name "YOUR NAME"
git config --global user.email "YOUR EMAIL ADDRESS"

注意這個用戶名和郵箱並不是只在博客使用。想了解更多,可以查看Git教程 - 廖雪峯的官方網站,Git非常有用,希望大家都能學習一個。

配置SSH密鑰

生成SSH密鑰

如果你使用過Git,已經有了密鑰,那我們可以直接使用。沒有的話我們需要生成一個新的。

在Git終端輸入以下命令,生成祕鑰。

ssh-keygen -t rsa -b 4096 -C "[email protected]"

祕鑰的設置我們默認就行,一路Enter直到完成。

添加SSH密鑰到ssh-agent

輸入以下命令,開啓ssh-agent並添加我們剛剛生成的密鑰。

eval "$(ssh-agent -s)"
ssh-add ~/.ssh/id_rsa

添加SSH密鑰到GitHub

這裏可以參考GitHub的官方文檔Adding a new SSH key to your GitHub account

可以使用以下命令快捷複製RSA公鑰到剪貼板:

clip < ~/.ssh/id_rsa.pub

 

測試SSH連接

在正式操作之前,我們可以先測試下本機與GitHub之間的連接。輸入以下命令:

ssh -T [email protected]

若配置成功,則顯示

Hi username!You've successfully authenticated,but Gitub does not provide shell access 

途中可能會受到密鑰指紋認證,同意就行。

部署Hexo博客

本地設置

配置完SSH密鑰,我們就可以將博客部署到 GitHub 上了。

在終端中運行如下命令,安裝 hexo-deployer-git 插件:

npm install hexo-deployer-git --save

修改_config.yml 中的deploy參數,一般都在文件的最後:

deploy:
  type: git
  repo: https://github.com/your_name/your_name.github.io.git
  branch: master

將your_name換成自己GitHub的用戶名即可。

部署

在終端輸入以下命令:

hexo deploy

我們的博客就被部署到GitHub上了。

第一次部署還會要求你輸入GitHub的密碼,輸入即可。

上傳速度因爲地區不同網速可能也不同,有時候可能需要花費數分鐘才能傳完。

接着訪問https://github.com/your_name/your_name.github.io ,如果推送成功那麼我們在這個頁面就能看到文件目錄。

點擊標題下方菜單欄右側的Settings進入設置界面,向下拉到GitHub Pages,在Launch automatic page generator 點擊Continue to layouts ,再點擊Publish page 即可。

訪問your_name.github.io,就可以看到你的博客內容了。

博客剛被創建好,可能需要等一會才能訪問。當然時間不會太長,要是過了一個小時還是無法訪問,可能就是哪裏出問題了。

 

將博客部署到服務器

部署到服務器比GitHub要稍複雜些,但GitHub Pages因爲服務器在國外,無論是更新博客還是其他人訪問速度都有些差強人意,這時候一個國內的、高速穩定的服務器就成了一個不錯的選擇。但是需要注意的是,使用國內的服務器建博客也是要備案的。

服務器的選購

國內的服務器供應商有許多都是有學生特惠的,完成學生認證後可以買到10塊一個月、甚至更便宜的特價服務器。大家可以按照自己的需求選購。

服務器配置

購買好服務器後,我們就可以開始配置了。

安裝nginx

nginx是是一個高性能的HTTP和反向代理服務器,也是一個IMAP/POP3/SMTP服務器,我們搭建博客,需要拿它做Web服務器。

如果之前沒有安裝過nginx,推薦使用LNMP一鍵安裝包,大家照着文檔安裝即可。

安裝node.js

這裏的安裝針對的是Ubuntu,如果大家服務器安裝的是CentOS或者其他系統,可以使用對應的命令。

curl -sL https://deb.nodesource.com/setup_4.x | sudo -E bash -
apt-get install -y nodejs

如果出現安裝不上、找不到包等問題,可以升級下apt-get和curl。

sudo apt-get update
sudo apt install curl

創建Git賬戶

sudo adduser git

爲了安全起見,服務器上的Git操作我們一般都使用Git賬戶進行。

添加證書登錄

和GitHub一樣,我們需要向服務器添加RSA公鑰用於認證登錄。只不過這邊沒有圖形界面,需要我們手動添加。

將之前的公鑰保存在/home/git/.ssh/authorized_keys 文件中 ,沒有這個文件的話我們可以在那裏新建一個,輸入保存即可。

初始化Git庫

我們需要初始化一個Git庫用於在服務器保存我們的博客。新建一個.git文件夾,然後用命令初始化它,我使用的是/var/repo/blog,git

sudo mkdir /var/repo
cd /var/repo
sudo git init --bare blog.git

配置 Git Hooks

Git Hooks是配置在Git中的腳本,能被特定事件調用。

在 blog.git/hooks 目錄下新建一個 post-receive 文件

cd /var/repo/blog.git/hooks

在 post-receive 文件中寫入如下內容 ,文件不存在的話可以新建一個。

#!/bin/sh
git --work-tree=/home/www/hexo --git-dir=/var/repo/blog.git checkout -f

注意,/home/www/hexo是博客靜態頁面存放的地方。這個腳本的作用就是生成能夠被nginx使用的靜態頁面。當然你也能將靜態頁面放在其他地方,修改路徑就行。

設置post-receive文件的可執行權限:

chmod +x post-receive

返回到blog.git的上級目錄,將blog.git的擁有用戶改爲git

sudo chown -R git:git blog.git

禁用 git 用戶的 shell 登錄權限

出於安全考慮,我們要讓 git 用戶不能通過 shell 登錄。可以編輯 /etc/passwd 來實現 ,將passwd文件中的

git:x:1001:1001:,,,:/home/git:/bin/bash

改爲

git:x:1001:1001:,,,:/home/git:/usr/bin/git-shell

,就是把bash改爲git-shell。

爲nginx設置網頁目錄

我們需要將之前Git Hooks生成的目錄設置給nginx。默認配置文件在/etc/nginx/sites-enabled下。

我們打開該目錄下的default文件,在server{}中添加

server {
    listen 80 default_server;
    listen [::]:80 default_server;
​
    root /home/www/hexo;
    server_name www.xxx.com;
}
​

注意,server位置填你的個人域名。要是還沒申請域名或者不打算申請域名,可以以後再填或者不填。

開啓服務器80端口

有一些服務器供應商是默認不開啓80端口的,需要我們手動開啓。

不同供應商的設置方法不同, 這裏以阿里雲舉例,進入控制檯,選擇雲服務器ECS,進入自己服務器的頁面,點擊 本實例安全組,選擇 安全組列表,點擊加入安全組,加入80端口即可。詳細設定可以訪問阿里雲官方幫助論壇 配置公網IP和外部出口

部署博客

配置本地_config.yml

和GitHub一樣,我們也需要配置deploy。

deploy:
  type: git
  repo: git@your_IP:/var/repo/blog.git
  branch: master

your_IP替換成你服務器的地址就行。

將本地部署到服務器

  • 清除緩存

    hexo clean
  • 生成靜態頁面:

    hexo generate
  • 將本地靜態頁面目錄部署到雲服務器

     

    hexo deploy

至此,我們要做的工作已經全部做完,可以訪問自己的博客了。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章