資安

怎麼搭建Hexo博客?

相信大部分人使用Hexo搭建個人博客都會部署到一些免費的代碼託管平臺上,但這些免費的平臺總是差強人意,比如國外的GitHub平臺雖然完全免費,但在國內訪問加載速度非常慢,又或者是國內的碼雲平臺免費版有許多功能被閹割掉了,比如不能自定義域名,不能每次自動刷新提交的代碼,需要到碼雲平臺上手動刷新,如此一來非常繁瑣。

  為了有效解決上訴的一些問題,有條件的話,不妨在自己的雲服務器上搭建Hexo博客。

效果演示


這是Hexo博客部署到GitHub上的網站測速效果

演示demo1

這是Hexo博客部署到阿里雲服務器後的網站測速效果

演示demo2

環境準備


  • 本地環境:Windows 10
  • 雲服務器環境:阿里雲ECS(CentOS7.x)

開始部署


本地環境搭建

1.安裝Git

到git官網上下載.exe文件,Download git,安裝選項還是全部默認,最後一步添加路徑時選擇Use Git from the Windows Command Prompt

2.安裝Nodejs

Node.js官網下載.exe文件,安裝選項全部默認。安裝好之後,按Win+R打開cmd命令提示符,輸入node -vnpm -v,若出現版本號,則說明安裝成功。

使用npm阿里的國內鏡像進行加速下載

bash

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

4.安裝Hexo

先創建一個文件夾MyBlog,用來存放自己的博客文件,然後cd到這個文件夾下(或者在這個文件夾下直接右鍵git bash here打開)。

定位到該目錄下,輸入npm install -g hexo-cli安裝Hexo。可能會有幾個報錯,不用理會。

bash

npm install -g hexo-cli

安裝完後輸入hexo -v,若出現版本號則,說明安裝成功。

接下來初始化一下hexo,即初始化我們的博客,輸入hexo init初始化文件夾

bash

hexo init MyBlog

新建完成後,指定文件夾MyBlog目錄下有:

  • node_modules: 依賴包
  • public:存放生成的頁面
  • scaffolds:生成文章的一些模板
  • source:用來存放你的文章
  • themes:主題
  • _config.yml: 博客的配置文件

輸入hexo g生成靜態網頁,然後輸入hexo s打開本地服務器預覽

bash

hexo g
hexo s

Hexo

生成ssh公鑰

在本地桌面點擊右鍵Git Bash Here打開Git終端,執行如下命令`,一路回車

bash

ssh-keygen -t rsa

這個時候它會告訴你已經生成了.ssh的文件夾。在git bash中輸入

bash

cat ~/.ssh/id_rsa.pub

輸出的內容就是公鑰信息了

阿里雲服務器環境搭建

安裝Git

bash

yum install git

創建Git賬戶

bash

adduser git

添加賬戶權限

bash

chmod 740 /etc/sudoers
vim /etc/sudoers

找到

bash

## Allow root to run any commands anywhere
root ALL=(ALL) ALL

添加以下內容

bash

git   ALL=(ALL)     ALL

保存退出並改回權限

bash

chmod 400 /etc/sudoers

設置git賬戶密碼

bash

sudo passwd git

切換至git用戶,創建 ~/.ssh 文件夾和 ~/.ssh/authorized_keys 文件,並賦予相應的權限

bash

su git
mkdir ~/.ssh
vim ~/.ssh/authorized_keys
# 然後將win10中生成的id_rsa.pub文件中的公鑰複製到authorized_keys
chmod 600 /home/git/.ssh/authorized_keys
chmod 700 /home/git/.ssh

在本地Git終端中測試是否能免密登錄git,其中SERVER為填寫自己的雲主機IP,執行輸入yes後不用密碼就說明好了

bash

ssh -v git@SERVER

創建目錄

bash

#repo作為為Git倉庫目錄
mkdir /var/repo
chown -R git:git /var/repo
chmod -R 755 /var/repo

hexo作為網站根目錄

mkdir /var/www/hexo
chown -R git:git /var/www/hexo
chmod -R 755 /var/www/hexo

然後創建一個裸的 Git 倉庫

bash

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

創建一個新的 Git 鉤子,用於自動部署 在 /var/repo/hexoBlog.git 下,有一個自動生成的 hooks 文件夾。我們需要在裡邊新建一個新的鉤子文件 post-receive

bash

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

i 鍵進入文件的編輯模式,在該文件中添加兩行代碼(將下邊的代碼粘貼進去),指定 Git 的工作樹(源代碼)和 Git 目錄(配置文件等)

bash

#!/bin/bash
git --work-tree=/var/www/hexo --git-dir=/var/repo/hexoBlog.git checkout -f

然後,按 Esc 鍵退出編輯模式,輸入”:wq” 保存退出。

修改文件權限,使得其可執行

bash

chown -R git:git /var/repo/hexoBlog.git/hooks/post-receive
chmod +x /var/repo/hexoBlog.git/hooks/post-receive

到此為止 Git 倉庫就搭建完成了。

阿里雲服務器配置Nginx

用寶塔面板來一鍵部署Nginx Linux面板6.0安裝命令(暫時僅兼容Centos7.x,其它系統版本請安裝5.9穩定版):

bash

yum install -y wget && wget -O install.sh http://download.bt.cn/install/install_6.0.sh && bash install.sh

Linux面板6.0升級專業版

bash

curl http://download.bt.cn/install/update6.sh|bash

安裝完成後會顯示面板後臺地址·賬號·密碼。打開面板後臺地址登陸面板,選擇Nginx的部署方案,靜靜等待部署。

部署完成,點擊網站-添加站點-輸入域名(沒有域名的輸入自己的IP地址)-底部的PHP版本選擇”純靜態”-提交。

網站創建完成後點擊設置-配置文件

bash

server
{
listen 80;

# server_name 填寫自己的域名

server_name luckyzmj.cn blog.luckyzmj.cn;
index index.php index.html index.htm default.php default.htm default.html;

# 這裡root填寫自己的網站根目錄,修改為/var/www/hexo

root /var/www/hexo;

-保存

點擊設置-網站目錄,修改為/var/www/hexo ,保存

重啟寶塔面板服務

bash

service bt restart

本地Hexo部署到阿里雲服務器

進入到本地Hexo博客的文件夾MyBlog,右鍵點擊Git Bash Here,輸入命令

bash

#定義郵箱(更換為你的郵箱地址就行)
git config --global user.email "[email protected]"
#定義名稱(更換自定義一個名稱就行)
git config --global user.name "Your Name"

配置_config.yml,完成自動化部署

打開本地Hexo博客的文件夾MyBlog文件夾下的_config.yml, 找到deploy

bash

deploy:
type: git
#server改為你的服務IP地址或解析後的域名
#例如我改為repo: [email protected]:/var/repo/blog.git
repo: git@server:/var/repo/blog.git
branch: master

保存後,即可測試部署

再進入到本地Hexo博客的文件夾MyBlog,右鍵點擊Git Bash Here,輸入命令

bash

hexo clean 
hexo g -d

不報錯說明完成,打開瀏覽器輸入你的域名或ip地址就可以看到你部署的Hexo博客了。

到此為止,我們已經成功部完成,並且訪問自己的服務器端比訪問Github快多了。

小貼士

在部署過程中,執行 hexo d發現部署老是出錯,什麼權限不允許之類的,這裡我們需要檢查我們在上述的git操作部署是否使用了git用戶操作,若是沒有,需要給相應的目錄更改用戶組 使用

bash

chown -R git:git /var/repo/

這條命令遞歸的將repo目錄及其子目錄用戶組設置為git。 同時使用

bash

chown -R git:git /var/www/hexo

這樣即可解決此類問題。

還有一個問題就是綁定域名後不能訪問。原因是在國內任何域名只要綁定到國內的服務器主機上都必須去工信部和公安部備案完後才能正常使用。如果是港澳臺的服務器或者是國外的服務器則可以不需要備案。

雲服務器ECS地址:阿里雲·雲小站

Leave a Reply

Your email address will not be published. Required fields are marked *