
以前用Wordpress搭建過一個博客網站,Wordpress雖然安裝簡單,功能強大,但是對于個人建站來說有點復雜了,最近發現用Hexo建站很流行,于是將網站從Wordpress遷移到了Hexo,
Hexo是如何作業的?
首先,Hexo是一個搭建靜態網站的工具,所以Hexo生成的文章頁面都是靜態頁面,根據我的總結,用Hexo發布一篇文章的大致流程如下:

雖然Hexo還有很多豐富強大的功能,但以上流程可以很好幫助我們大致理解Hexo這個工具,很明顯它和Wordpress之類的建站工具不太一樣,Hexo更多的事都是在“本地”操作的,因為生成的是靜態頁面,所以你網站所在的服務器只需要存盤Hexo生成的結果即可,
Hexo + Github + 阿里云服務器
阿里云服務器+域名+hexo搭建個人博客
安裝配置
請在你自己的電腦上安裝好Node.js和Hexo(你在哪兒寫Markdown就把Hexo安裝到哪里),Hexo的下載和安裝可以直接參考官方檔案,此處略過,如何配置Hexo以及用Hexo生成一篇文章也請參考官方檔案,比較簡單,
Hexo目錄放到Github
建議將你的Hexo目錄放到github上管理,可以在github上新建一個private的repo,Hexo生成目錄的時候會自動包含一個.gitignore 檔案,請保留這個檔案,如何在Github創建repo并和本地同步,請單獨搜索相關教程,比較常規,
網站目錄托管到Github
注意,我們需要另外一個Git Repo來存放你的網站檔案,這個和剛才的Hexo目錄并不是一回事,同樣我們需要在Github上新建一個repo,然后在本地的Hexo組態檔_config.yml中將配置修改成如下的樣子,參考:https://hexo.io/zh-cn/docs/one-command-deployment.html
# Deployment
## Docs: https://hexo.io/docs/deployment.html
deploy:
type: git
repo: [email protected]:xxxxxxxx/blog.git
branch: master
這樣當你每次用Hexo生成好靜態檔案后,可以通過* hexo d *命令一鍵將你的網站上傳到github,
自動部署到個人服務器
你的整個靜態網站目前就是github上的一個repo,你希望將其部署到你的服務器上,所以你需要一種方式將其自動部署到服務器上,這個程序是怎么實作的呢?我們可以通過如下方式完成:
- 在服務器端 clone 下來你的repo
- 在github上配置webhook,指向你的server
- 在server端監聽webhook的事件
- 監聽到事件之后自動運行git pull
1. 在服務器端 clone 下來你的repo
這一步需要你在服務器端安裝git,同時在github端加入你自己的SSH KEY,相當于在github上給服務器添加到白名單,這樣每次服務器git pull 的時候才能順利完成,clone 的時候一定要選擇ssh方式,形如: git clone [email protected]/...
2. 在github上配置webhook,指向你的server
直接到你的repo的setting選項里面去找,按照提示操作,
3. 在server端監聽webhook的事件
首先要在你個人的服務器上安裝 webhook 插件,這一步必不可少:
npm install -g github-webhook-handler
然后在服務器新建 webhook.js 檔案,名字你可以任意取,這個檔案其實就是一個node服務,一會我們要運行它,
var http = require('http');
var spawn = require('child_process').spawn;
// 在我的服務器上使用相對路徑會出錯,所以下面用了絕對路徑“ /usr/... 的格式
var createHandler = require('/usr/lib/node_modules/github-webhook-handler');
// 下面填寫的myscrect跟github webhooks配置一樣,下一步會說;path是我們訪問的路徑
var handler = createHandler({ path: '/hexo', secret: '你的密碼,要和github上配置的一致' });
http.createServer(function (req, res) {
handler(req, res, function (err) {
res.statusCode = 404;
res.end('no such location');
})
}).listen(7777);
handler.on('error', function (err) {
console.error('Error:', err.message)
});
// 監聽到push事件的時候執行我們的自動化腳本
handler.on('push', function (event) {
console.log('Received a push event for %s to %s',
event.payload.repository.name,
event.payload.ref);
runCommand('sh', ["/path/to/deploy.sh"], function( txt ){
console.log(txt);
});
});
function runCommand( cmd, args, callback ){
var child = spawn( cmd, args );
}
其中deploy.sh中的內容如下:
#!/bin/bash
cd /var/www/blog
git reset --hard origin/master
git clean -f
git pull origin master
然后,先用如下命令驗證一下服務是否可以正常運行:
node webhook.js
沒問題之后可以用pm2這個工具來重新運行服務(如果沒有pm2請先用node安裝它)
pm2 start webhook.js
大功告成,之后你每次用hexo d部署之后,你的檔案都會上傳到github,然后自動推送到你個人的服務器上,
更多討論請關注我的公眾號: 黑客悟理
如果你喜歡我的文章,可以在任一平臺搜索【黑客悟理】關注我,非常感謝!
轉載請註明出處,本文鏈接:https://www.uj5u.com/qita/31228.html
標籤:其他
上一篇:卷積神經網路入門篇
