本文介紹一種在Ubuntu服務器上部署Hexo博客的簡易方法。
準備工作
首先按照hexo官方文檔在本地安裝好Node.js、git。
本地Hexo安裝及初始化
hexo-cli是Hexo的命令行工具,可用于快速新建、發布、部署博客;hexo-server是Hexo的內建服務器,可用于部署前的預覽和測試。-g 選項,表示全局安裝。
npm install hexo-cli hexo-server -g
執行下列命令,Hexo將會在指定文件夾中新建所需要的文件。
hexo init <folder>
cd <folder>
npm i
在_config.yml中修改配置
參考官網說明自由配置
一些建議配置
default_layout: draft // 該字段位于在Writing部分。將其從post修改為draft,表示每篇博文默認都是草稿,必須經過發布之后才能在博客站點上訪問。
小試牛刀——新建博客草稿并發布
執行如下命令,創建一篇博文
hexo new <title> # <title>為自定義的文章標題
在本地用編輯器編輯生成的.md文件,如:
---
layout: default_layout
title: 漢諾塔問題
date: 2017-08-01 22:51:09
tags: 遞歸
---
### 以下為正文
保存后發布(default_layout為draft時)
hexo publish <filename>
若文件default_layout為post,或文件保存在 ./source/_posts目錄下,直接執行
hexo generate
執行以下命令,啟動服務器。打開瀏覽器即可在本地看到自己剛發布的文章,默認情況下,訪問網址為: http://localhost:4000/。
hexo server
完成本地端的操作之后,可以開始服務器的配置了。
通過ssh遠程登錄云服務器后,創建私有Git倉庫,并修改目錄的所有權和用戶權限。
在/var/repo/下,創建一個名為hexo_static的裸倉庫(bare 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
配置Nginx托管文件目錄
創建/var/www/hexo目錄,用于Nginx托管,并修改目錄的所有權和權限
sudo mkdir -p /var/www/hexo
sudo chown -R $USER:$USER /var/www/hexo
sudo chmod -R 755 /var/www/hexo
修改Nginx的default設置,將其中的root指令指向/var/www/hexo目錄。
sudo vim /etc/nginx/sites-available/default
...
server {
listen 80 default_server;
listen [::]:80 default_server ipv6only=on;
root /var/www/hexo; # 需要修改的部分
index index.html index.htm;
...
保存并退出文件。
重啟 Nginx 服務,使得改動生效
sudo service nginx restart
創建Git鉤子
在服務器上的裸倉庫hexo_static創建一個鉤子,在滿足特定條件時將靜態HTML文件傳送到Web服務器的目錄下,即/var/www/hexo。
在自動生成的 hooks 目錄下創建一個新的鉤子文件:
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
保存并退出文件,并讓該文件變為可執行文件。
chmod +x /var/repo/hexo_static.git/hooks/post-receive
至此,服務器端配置基本完成。
通過Git部署
通過Git將Hexo生成的靜態內容推送到服務器。
繼續編輯_config.yml文件
url: http://<YourDomain> # 沒有綁定域名時填寫服務器的實際IP地址。
找到Deployment部分,按照如下情況修改:
deploy:
type: git
repo: ubuntu@<IP>:/var/repo/hexo_static
branch: master
保存并退出文件。
安裝一個Hexo包,負責將博客所需的靜態內容發送到設置好的Git倉庫。
npm install hexo-deployer-git --save
安裝好后可以測試部署:
hexo generate && hexo deploy
成功后,就可以在瀏覽器輸入自己的域名/IP訪問自己的博客網站了。
以后增加、修改文章/配置文件/代碼后,執行hexo generate && hexo deploy
即可生效。