博客的架構(gòu)
先搞明白Hexo博客從搭建到自動發(fā)布的架構(gòu),才能更好的理解我們每一步進行的操作。不然只跟著步驟過了一遍,卻不知道為什么這么做。

整個流程就是本地將 *.md 渲染成靜態(tài)文件,然后Git推送到服務器的repository,服務器再通過 git-hooks 同步網(wǎng)站根目錄。
搭建流程
第一步: 安裝node.js以及本地Hexo初始化
第二步: 服務器環(huán)境搭建,包括安裝 Git 、Nginx配置 、創(chuàng)建 git 用戶
第三步: 使用Git自動化部署發(fā)布博客
本地環(huán)境
本地環(huán)境我就不介紹了查看下面兩篇文章
服務器環(huán)境搭建
安裝nginx
- 因為我們是拿nginx做Web服務器,所以我們需要安裝部署好nginx,如果沒有安裝,推薦使用LNMP一鍵安裝包,不過我使用的是寶塔的主機面板管理主機。
- 我們可以專門為hexo創(chuàng)建一個部署目錄,比如我創(chuàng)建了/home/www/hexo文件夾,并把nginx的配置文件nginx.conf中的部署目錄改為/home/www/hexo,
配置文件一般在/usr/local/nginx/conf里;同樣可以使用默認目錄,nginx的默認目錄為/var/www/html,如果使用寶塔的主機面板,則默認的部署目錄為/www/wwwroot/hexo
安裝Git
yum install git
- 檢查安裝信息:
git --version
創(chuàng)建git用戶
adduser git
chmod 740 /etc/sudoers
vim /etc/sudoers
找到以下內(nèi)容
## Allow root to run any commands anywhere
root ALL=(ALL) ALL
在下面添加一行
git ALL=(ALL) ALL
保存退出后改回權(quán)限:chmod 400 /etc/sudoers
- 然后給新加的用戶git設置權(quán)限,編輯/etc/passwd將:
git:x:1003:1003:,,,:/home/git:/bin/bash改成:git:x:1003:1003:,,,:/home/git:/usr/bin/git-shell這樣git就只能使用git-shell而不能使用bash。 -
git服務器打開RSA認證
vim /etc/ssh/sshd_config
在sshd_config中開啟以下幾項:
RSAAuthentication yes
PubkeyAuthentication yes
AuthorizedKeysFile .ssh/authorized_keys
- 隨后設置Git用戶的密碼
#需要root權(quán)限
sudo passwd git
配置ssh
切換至git用戶,創(chuàng)建 ~/.ssh 文件夾和 ~/.ssh/authorized_keys 文件,并賦予相應的權(quán)限
su git
mkdir ~/.ssh
vim ~/.ssh/authorized_keys
#然后將電腦中執(zhí)行 cat ~/.ssh/id_rsa.pub | pbcopy ,將公鑰復制粘貼到authorized_keys
chmod 600 ~/.ssh/authorzied_keys
chmod 700 ~/.ssh
- 然后就可以執(zhí)行ssh 命令測試是否可以免密登錄
ssh -v git@SERVER至此,Git用戶添加完成
創(chuàng)建倉庫
執(zhí)行命令:sudo git init --bare hexo.git
使用–bare 參數(shù),Git 就會創(chuàng)建一個裸倉庫,裸倉庫沒有工作區(qū),我們不會在裸倉庫上進行操作,它只為共享而存在。
改變 hexo.git 目錄的擁有者為git用戶:sudo chown -R git:git hexo.git
配置鉤子
在 hexo.git/hooks 目錄下新建一個 post-receive 文件,進入cd /home/git/hexo.git/hooks/,編輯這個文件vim post-receive
在 post-receive 文件中寫入如下內(nèi)容:
#!/bin/bash
git --work-tree=/www/wwwroot/hexo --git-dir=/home/git/hexo.git checkout -f
- 設置這個文件的可執(zhí)行權(quán)限:
chmod +x post-receive - 注意,
/www/wwwroot/hexo要換成你自己的部署目錄,正如上文所說,我是的配置目錄是/www/wwwroot/hexo。其中/home/git/hexo.git是git倉庫的位置。上面那句 git 命令可以在我們每次 push 完之后,把部署目錄更新到博客的最新生成狀態(tài)。這樣便可以完成達到自動部署的目的了。
下面這種方式我也試過總是提示刪除文件夾沒有權(quán)限
#!/bin/sh
rm -rf /www/wwwroot/hexo
git clone /home/git/hexo.git/ /www/wwwroot/hexo/
還嘗試改變權(quán)限:chown -R git:git /www/wwwroot/hexo/ 但是就是沒有成功也許是我的方法不對,再此記錄下。
參考資料
安裝Git
在Linux上安裝Git:https://www.cnblogs.com/lhbryant/p/6928894.html
部署教程
阿里云VPS搭建自己的的Hexo博客:https://segmentfault.com/a/1190000005723321
Hexo個人博客部署到CentOS個人服務器:https://segmentfault.com/a/1190000010680022
部署Hexo到個人服務器:https://www.huangtengxq.com/2017/08/19/BuildHexoOnVps/
HEXO部署到unbuntu服務器詳細指南:http://www.laoyuyu.me/2017/10/10/hexo_deploy_vps/
服務器部署Hexo博客:https://dogorgod.github.io/2017/03/24/%E6%9C%8D%E5%8A%A1%E5%99%A8%E9%83%A8%E7%BD%B2Hexo%E5%8D%9A%E5%AE%A2/
Hexo博客部署到服務器:https://i.jakeyu.top/2016/12/06/Hexo%E5%8D%9A%E5%AE%A2%E6%90%AD%E5%BB%BA%E5%88%B0%E6%9C%8D%E5%8A%A1%E5%99%A8%E5%B9%B6%E8%87%AA%E5%8A%A8%E9%83%A8%E7%BD%B2/
通過Git將Hexo博客部署到服務器:http://www.itdecent.cn/p/e03e363713f9
部署Hexo博客到linux云主機并實現(xiàn)自動發(fā)布:https://ghui.me/post/2016/07/host-hexo-vps/
將Hexo博客部署到云主機:https://blog.fundebug.com/2017/05/18/deploy-hexo-on-cloud/
配合Travis CI,將Hexo博客自動部署到你的服務器上:https://blog.keep.moe/2015/11/06/hexo-and-travis-ci/
使用Git Hook自動部署Hexo到個人VPS:http://www.swiftyper.com/2016/04/17/deploy-hexo-with-git-hook/
VPS Centos7安裝Git服務器,部署Hexo靜態(tài)博客:https://www.micronbot.com/blog/8.html
在Ubuntu 14.04服務器上部署Hexo博客:https://cloud.tencent.com/developer/article/1004587
阿里云ubuntu部署hexo,并與本地同步,實現(xiàn)自動部署:http://blog.csdn.net/nghuyong/article/details/54430093
阿里云搭建Git服務,實現(xiàn)Hexo自動部署:https://imys.net/20160303/hexo-nginx-auto-deploy.html
hexo博客部署到linux服務器上:https://lvshen9.github.io/2018/01/08/Hexo%E5%8D%9A%E5%AE%A2%E9%83%A8%E7%BD%B2%E5%88%B0Linux%E6%9C%8D%E5%8A%A1%E5%99%A8%E4%B8%8A/