前言
在去年河咽,心血來潮去買了個阿里云的服務(wù)器田柔,幾番折騰下,用WordPress第一次搭建了自己的博客網(wǎng)站,然后過了幾天因為網(wǎng)站備案的問題太麻煩懶得弄粪牲,加上用國外的服務(wù)器還可以用來上上油管古瓤、谷歌什么的,就買了個搬瓦工的VPS腺阳,把自己的博客重新在搬瓦工上面建立起來落君,然后博客就處于荒廢狀態(tài)至今。
今日又有了寫博客記錄的念頭亭引,就開始寫了起來绎速,但是WordPress上用MarkDown十分不方便,找了很多插件焙蚓,想了很多辦法也沒能完美解決寫作和發(fā)布的問題纹冤,再加上數(shù)據(jù)庫老是出錯...干脆就用Hexo了洒宝,反正個人網(wǎng)站又小,也沒什么人看萌京。然后就開始谷歌搜索用Hexo建博客雁歌,搜出來的大多數(shù)都是Hexo+Github Pages,跟著教程和Hexo文檔一步一步?jīng)]花多少時間就弄好了知残,直接用MarkDown寫靠瞎,幾個命令就能部署完畢,可以說是十分的方便了求妹。
但是乏盐,自己有個VPS只用來跑ss感覺太浪費,GitHub上放著網(wǎng)站的文件也始終覺得不舒服制恍,還是放在自己的服務(wù)器上比較好父能。所以又開始折騰著把博客搬到自己的VPS上。在VPS部署時還因為權(quán)限問題一直403...弄了很久才弄好...菜是原罪...
本文主要記錄在Windows端安裝Hexo吧趣,使用Hexo搭建博客并實現(xiàn)Git自動部署到VPS(Ubuntu)法竞。
本地安裝Hexo建站
Hexo是一個快速、簡潔且高效的博客框架强挫。Hexo使用Markdown(或其他渲染引擎)解析文章岔霸,在幾秒內(nèi),即可利用靚麗的主題生成靜態(tài)網(wǎng)頁俯渤。
安裝前的準備
-
Git
下載對應(yīng)的系統(tǒng)版本的Git安裝好呆细,使用git --version
查看Git版本,若顯示版本信息則說明安裝成功八匠。
安裝好后絮爷,進行一些初始化的操作,打開Git Bash設(shè)置用戶名和郵箱:
設(shè)置SSH Key梨树,Git Bash內(nèi)執(zhí)行:git config --global user.name "用戶名" git config --global user.email "郵箱地址"
ssh-keygen -t rsa -C "郵箱地址"
根據(jù)提示輸入密碼等完成設(shè)置坑夯。
查看公開密鑰:cat ~/.ssh/id_rsa.pub
復(fù)制顯示的內(nèi)容,待會有用抡四。 -
Node.js
下載對應(yīng)的系統(tǒng)版本的Node.js安裝好柜蜈,使用node --version
查看Node.js版本,若顯示版本信息則說明安裝成功指巡。
使用npm安裝Hexo
執(zhí)行:npm install -g hexo-cli
建站
安裝完畢后淑履,在適當?shù)奈恢眯陆ㄒ粋€文件夾(以hexo為例),并在文件夾內(nèi)打開終端執(zhí)行:
hexo init
npm install
執(zhí)行完后藻雪,文件夾目錄結(jié)構(gòu)如圖所示:
至此秘噪,本地Hexo博客搭建完成。
Git Hooks自動部署
部署前的準備
部署原理
通過在本地編輯文本字逗,然后使用Git遠程部署到VPS的Git倉庫。hexo d
命令實際上只deploy了本地的public文件夾宅广,Git Hooks實際上就是當Git倉庫收到最新的push時葫掉,將Git倉庫接受到的內(nèi)容復(fù)制到VPS上的網(wǎng)站目錄內(nèi)。相當于完成了手動將public文件夾復(fù)制到VPS的網(wǎng)站根目錄里跟狱。
VPS操作
安裝配置Git
- 安裝Git
通過SSH連接VPS俭厚,執(zhí)行:apt-get install git
,完成后通過git --version
查看Git版本驶臊,若顯示版本信息則說明安裝成功挪挤。
- 創(chuàng)建git用戶
執(zhí)行:adduser git
,根據(jù)提示設(shè)置密碼关翎。 - 賦予git用戶sudo權(quán)限
執(zhí)行:
找到以下內(nèi)容:chmod 740 /etc/sudoers vim /etc/sudoers
在# User privilege specification root ALL=(ALL:ALL) ALL
root ALL=(ALL:ALL) ALL
這一行下面添加git ALL=(ALL:ALL) ALL
保存退出后扛门,修改回文件權(quán)限chmod 440 /etc/sudoers
- 關(guān)閉git用戶shell權(quán)限
執(zhí)行:vim /etc/passwd
將最后一行的git:x:1001:1001:,,,:/home/git:/bin/bash
修改為git:x:1001:1001:,,,:/home/git:/usr/bin/git-shell
- 初始化git倉庫
切換到git用戶su git
然后:cd /home/git //切換到git用戶目錄 mkdir blog.git //創(chuàng)建git倉庫文件夾,以blog.git為例 cd blog.git //進入倉庫目錄 git init --bare //使用--bare參數(shù)初始化為裸倉庫纵寝,這樣創(chuàng)建的倉庫不包含工作區(qū)
- 創(chuàng)建網(wǎng)站目錄
cd /var/www/ //切換目錄 mkdir blog //創(chuàng)建網(wǎng)站目錄论寨,以blog為例
- 配置SSH
然后將本地的公鑰復(fù)制到authorized_keys文件里(公鑰即上文中本地執(zhí)行cd /home/git //切換到git用戶目錄 mkdir .ssh //創(chuàng)建.ssh目錄 cd .ssh vim authorized_keys
cat ~/.ssh/id_rsa.pub
查看的內(nèi)容) - 用戶組管理
執(zhí)行:ll /home/git/ ll /var/www/
確保blog.git、.ssh爽茴、blog目錄的用戶組權(quán)限為git:git
若不是葬凳,執(zhí)行下列命令后再查看:
sudo chown git:git -R /var/www/blog sudo chown git:git -R /home/git/blog.git
安裝配置nginx
- 安裝nginx
執(zhí)行:apt-get install nginx
,若輸入nginx -V
可以看到nginx版本信息室奏,則安裝成功火焰。 - 配置nginx
執(zhí)行:
參靠我的本人配置文件內(nèi)容:cd /etc/nginx/sites-available //切換目錄 cp default default.bak //備份默認配置 vim default //修改配置
保存退出后,啟動nginx:server { listen 80 default; //默認監(jiān)聽80端口 root /var/www/blog; //網(wǎng)站根目錄 server_name leihungjyu.com www.leihungjyu.com; //網(wǎng)址 access_log /var/log/nginx/blog_access.log; error_log /var/log/nginx/blog_error.log; error_page 404 = /404.html; location ~* ^.+\.(ico|gif|jpg|jpeg|png)$ { root /var/www/blog; access_log off; expires 1d; } location ~* ^.+\.(css|js|txt|xml|swf|wav)$ { root /var/www/blog; access_log off; expires 10m; } location / { root /var/www/blog; if (-f $request_filename) { rewrite ^/(.*)$ /$1 break; } } location /nginx_status { stub_status on; access_log off; } }
systemctl start nginx
設(shè)置開機自動啟動:systemctl enable nginx
查看運行狀態(tài):systemctl status nginx
,顯示running表示成功運行胧沫。
配置Git Hooks
- 創(chuàng)建post-receive文件
git用戶下執(zhí)行:
復(fù)制下面的內(nèi)容到post-receive文件中:cd /home/git/blog.git/hooks //切換到hooks目錄下 vim post-receive //創(chuàng)建文件
保存退出后昌简,執(zhí)行:#!/bin/bash GIT_REPO=/home/git/blog.git TMP_GIT_CLONE=/tmp/blog PUBLIC_WWW=/var/www/blog rm -rf ${TMP_GIT_CLONE} git clone $GIT_REPO $TMP_GIT_CLONE rm -rf ${PUBLIC_WWW}/* cp -rf ${TMP_GIT_CLONE}/* ${PUBLIC_WWW}
chmod +x post-receive
賦予可執(zhí)行權(quán)限。
本地操作
- 嘗試連接
在本地打開Git Bash:
ssh git@VPS的ip
如圖所示則連接成功琳袄,若默認端口不是22江场,則需要在后面加上-p 端口號
纺酸,或者在.ssh文件夾下創(chuàng)建一個config文件窖逗,內(nèi)容如下:Host 服務(wù)器IP HostName 服務(wù)器IP User git Port 端口號 IdentityFile ~/.ssh/id_rsa
- 配置Hexo
打開本地博客根目錄下的_config.yml文件,找到最后的deploy配置餐蔬,修改為:# Deployment ## Docs: https://hexo.io/docs/deployment.html deploy: type: git repo: git@VPS的IP:blog.git branch: master
到此碎紊,Hexo建站就全部配置部署完畢了佑附。
第一篇文章
新建文章:hexo n "文章名"
或者hexo new "文章名"
,然后使用Markdown編輯文章內(nèi)容仗考。
生成:hexo g
或者hexo generate
部署:hexo d
或者hexo deploy
生成部署執(zhí)行完后音同,訪問自己的網(wǎng)址就可以看到文章了。
其他有用的命令:
hexo clean //清理緩存
hexo s //本地預(yù)覽
hexo server //本地預(yù)覽
一般來說秃嗜,寫文章時一般先使用hexo s
打開本地預(yù)覽权均,一邊寫一邊預(yù)覽修改,完成之后再通過hexo g -d
生成上傳锅锨。