相信大部分人使用Hexo搭建個人博客都會部署到一些免費的代碼託管平臺上,但這些免費的平臺總是差強人意,比如國外的GitHub平臺雖然完全免費,但在國內訪問加載速度非常慢,又或者是國內的碼雲平臺免費版有許多功能被閹割掉了,比如不能自定義域名,不能每次自動刷新提交的代碼,需要到碼雲平臺上手動刷新,如此一來非常繁瑣。
為了有效解決上訴的一些問題,有條件的話,不妨在自己的雲服務器上搭建Hexo博客。
效果演示
這是Hexo博客部署到GitHub上的網站測速效果
這是Hexo博客部署到阿里雲服務器後的網站測速效果
環境準備
- 本地環境:Windows 10
- 雲服務器環境:阿里雲ECS(CentOS7.x)
開始部署
本地環境搭建
到git官網上下載.exe文件,Download git,安裝選項還是全部默認,最後一步添加路徑時選擇Use Git from the Windows Command Prompt
。
到Node.js官網下載.exe
文件,安裝選項全部默認。安裝好之後,按Win+R
打開cmd命令提示符,輸入node -v
和npm -v
,若出現版本號,則說明安裝成功。
使用npm阿里的國內鏡像進行加速下載
bash
npm config set registry https://registry.npm.taobao.org
先創建一個文件夾MyBlog
,用來存放自己的博客文件,然後cd
到這個文件夾下(或者在這個文件夾下直接右鍵git bash here
打開)。
定位到該目錄下,輸入npm install -g hexo-cli
安裝Hexo
。可能會有幾個報錯,不用理會。
bash
npm install -g hexo-cli
接下來初始化一下hexo
,即初始化我們的博客,輸入hexo init
初始化文件夾
bash
hexo init MyBlog
-
node_modules
: 依賴包 -
public
:存放生成的頁面 -
scaffolds
:生成文章的一些模板 -
source
:用來存放你的文章 -
themes
:主題 -
_config.yml
: 博客的配置文件
輸入hexo g
生成靜態網頁,然後輸入hexo s
打開本地服務器預覽
bash
hexo g
hexo s
生成ssh公鑰
在本地桌面點擊右鍵Git Bash Here
打開Git終端,執行如下命令`,一路回車
bash
ssh-keygen -t rsa
這個時候它會告訴你已經生成了.ssh
的文件夾。在git bash
中輸入
bash
cat ~/.ssh/id_rsa.pub
輸出的內容就是公鑰信息了
阿里雲服務器環境搭建
bash
yum install 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
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
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
阿里雲服務器配置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
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"
打開本地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
這樣即可解決此類問題。
還有一個問題就是綁定域名後不能訪問。原因是在國內任何域名只要綁定到國內的服務器主機上都必須去工信部和公安部備案完後才能正常使用。如果是港澳臺的服務器或者是國外的服務器則可以不需要備案。