Hexo是github上一個(gè)優(yōu)秀的開(kāi)源博客框架,支持markdown解析文章引矩,有多種第三方主題插件供選擇严里。 Hexo默認(rèn)使用github倉(cāng)庫(kù)作為資源掛載庫(kù)择浊,也就是說(shuō)配置好的Hexo博客是部署在github上的, 你只需要自己購(gòu)買(mǎi)一個(gè)域名解析到對(duì)應(yīng)的github-page就行了捣域。
這樣的部署方式雖然比較便捷啼染,但github訪問(wèn)有時(shí)候會(huì)出現(xiàn)問(wèn)題,且為了擺脫這種寄人籬下的感覺(jué)焕梅, 本篇講介紹如何將博客部署到個(gè)人的服務(wù)器迹鹅。
服務(wù)器: 騰訊云 ubuntu16.04 LTS 編譯環(huán)境: nodeJS 8.9.4
大致思路:
1 在云服務(wù)器上建立私人git服務(wù)器并配置本地倉(cāng)庫(kù)
2 在個(gè)人開(kāi)發(fā)pc上下載hexo框架源碼,并在配置文件中設(shè)置push到云服務(wù)器上的私人倉(cāng)庫(kù)贞言。
3 pc打包上傳hexo靜態(tài)文件并上傳到服務(wù)器上的私人倉(cāng)庫(kù)
4 倉(cāng)庫(kù)中設(shè)置git鉤子將已上傳的靜態(tài)資源拷貝到自定義目錄下
5 通過(guò)nginx部署web服務(wù)斜棚,配置靜態(tài)資源訪問(wèn)目錄到自定義目錄。
下面是詳細(xì)教程:
首先安裝最新版的nodeJS
我是直接在官網(wǎng)下載的,(官網(wǎng)下載地址),下載下來(lái)后是一個(gè)xz格式的壓縮包, 通過(guò)二次解壓后會(huì)得到一個(gè)帶有bin目錄的文件夾弟蚀。將整個(gè)文件夾重新命名為node8,然后在~/.bashrc文件末尾添添加環(huán)境變量:
export NODE_HOME=/home/ubuntu/node8
export PATH=$NODE_HOME/bin:$PATH
配置完畢后記得使用source命令使其生效蚤霞。服務(wù)器和開(kāi)發(fā)PC上都要安裝nodeJS編譯環(huán)境。
在服務(wù)器上建立git服務(wù)器并配置博客倉(cāng)庫(kù)
自定義個(gè)人倉(cāng)庫(kù)地址义钉,這里我選擇了當(dāng)前用戶(hù)根目錄昧绣。即/home/ubuntu目下,使用命令:
mkdir blog.git
cd blog.git
git init --bare
便完成了倉(cāng)庫(kù)初始化。
PC上隨便找個(gè)地方捶闸,輸入命令
git clone yourusername@server_ip:~/path/to/your/blog.git
測(cè)試下能否克隆成功滞乙,能則繼續(xù),不行的話(huà)將本機(jī)的ssh公鑰粘貼到服務(wù)器的.ssh目錄中的authorized_keys文件里鉴嗤。
PC上配置安裝Hexo開(kāi)發(fā)環(huán)境
npm install hexo-cli -g? #安裝hexo構(gòu)建工具
hexo init blog #初始化hexo工程
cd blog #進(jìn)入工程根目錄
npm install #安裝依賴(lài)
hexo server? #啟動(dòng)本地調(diào)試服務(wù)器
然后打開(kāi)瀏覽器輸入 http://localhost:4000/ 就能看到博客界面了
若端口已占用斩启,可輸入
hexo s -p 端口號(hào) #切換端口
hexo官網(wǎng)上提供了許多主題,有興趣的小伙伴自行搜索下載,地址醉锅。
下載完后將主題包放到hexo的themes目錄下兔簇,然后修改_config.yml中theme為對(duì)應(yīng)的包名就可以了。
下面是hexo的常用命令
hexo s? #開(kāi)啟本地調(diào)試
hexo g? #編譯靜態(tài)資源
hexo new 'title'? #生成一篇新的md文件硬耍,即博客內(nèi)容
hexo d #將靜態(tài)資源push到倉(cāng)庫(kù)
在本地調(diào)試完畢后垄琐,我們要如何上傳資源到服務(wù)器上呢?
修改_config.yml文件,在deploy項(xiàng)中填寫(xiě):
deploy:
? ? type: git
? ? message: update
? ? repo: yourusername@server_ip:~/path/to/your/blog.git,master
然后每次上傳前经柴,先使用 hexo g 重新打包狸窘,再使用 hexo d (可能會(huì)提示輸入ssh登錄密碼) 就可以成功上傳了。
上傳成功后通過(guò)nginx部署hexo資源
首先修改hooks文件
cd /path/to/your/blog.git/hooks
touch post-receive
vim post-receive
使用如下的腳本
#!/bin/bash -l
GIT_REPO=/home/ubuntu/blog.git
TMP_GIT_CLONE=/home/ubuntu/tmp/blog
PUBLIC_WWW=/home/ubuntu/project/blog
rm -rf ${TMP_GIT_CLONE}
git clone $GIT_REPO $TMP_GIT_CLONE
rm -rf ${PUBLIC_WWW}
cp -rf ${TMP_GIT_CLONE} ${PUBLIC_WWW}
其中public_www就是用于最終存放nginx映射的靜態(tài)資源文件目錄坯认。 通過(guò)此腳本翻擒,每次倉(cāng)庫(kù)接收到新上傳的內(nèi)容時(shí)都會(huì)自動(dòng)拷貝資源到該目錄下绍些。 tmp目錄可能要自己新建滤祖。
然后記得更改腳本和各目錄的權(quán)限
chmod +x post-receive
chmod 777 -R /path/to/your/blog
最后便是修改nginx配置咯
server {
listen 80 ;
root /home/ubuntu/project/blog;
server_name www.redtreeai.com redtreeai.com;? ? ? ? ? ? ? ? ? ? ? ? ? ? ?
access_log? /home/ubuntu/nginxlog/blog_access.log;? ? ? ? ? ? ? ? ? ? ? ?
error_log? /home/ubuntu/nginxlog/blog_error.log;? ? ? ? ? ? ? ? ? ? ? ? ?
location / {? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?
? ? root /home/ubuntu/project/blog;
? ? if (-f $request_filename) {
? ? ? ? rewrite ^/(.*)$? /$1 break;
? ? }
}? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?
}
配置完畢后重啟nginx服務(wù)就可以實(shí)現(xiàn)遠(yuǎn)程自動(dòng)部署了, 之后pc端每次打包上傳代碼后服務(wù)器會(huì)自動(dòng)更新資源迫筑。
喜歡的點(diǎn)個(gè)賞吧~