摘要: 在雲主機上搭建一個git裸倉庫,而後使用nginx做爲網頁服務器,就能夠輕鬆將Hexo博客經過git部署到雲主機上。html
個人博客KiwenLau以前部署在Coding Pages上,挺不錯的,還能夠一鍵啓用HTTPS。做爲一個喜歡折騰的人,我忽然打算使用CDN加速一下訪問速度,然而,國內的CDN服務要求網站必須備案。特地郵件問了Coding的客服,看來他們近期是不打算支持備案的,因而我就不得不考慮弄個雲主機來玩玩了。nginx
後來,Coding Pages突然添加了跳轉頁面,也就是說訪問個人博客的話,會先彈出5秒鐘的Coding廣告頁面。買個Coding年費199的會員就能夠去掉,也不算貴,畢竟佔着人家的資源。然而,我還琢磨着備案後用CND呢...git
因而,我調研了一下各個雲服務的價格,1核1G的雲主機一年大概都是600+,比Coding會員貴了很多。不過騰訊雲最近在搞採購節,1核1G的雲主機一年只要238,果斷買了!shell
然而,備案這事貌似要折騰好久......此處省略1萬字。ubuntu
個人雲主機的操做系統是Ubuntu Server 16.04.1 LTS 64位。不妨假設它的IP地址是152.92.13.78(我固然不會告訴你真實IP),你須要作的第一步就是配置SSH公鑰登錄,這樣Hexo經過git部署博客時就不須要輸入密碼了。vim
# SSH公鑰登錄將不須要輸入密碼 ssh root@152.92.13.78
爲了省事,我將直接使用root用戶,這是不符合安全規範的。可是,一方面我只是爲了部署博客,不擔憂黑客幹壞事;另外一方面,我也作了必要的安全防範,好比配置騰訊雲安全組,禁止SSH密碼登錄以及配置UFW防火牆。安全
這篇的博客參考了利用 GIT HOOKS 部署 HEXO 到 VPS,原文圖文並茂。我作了 一些優化,例如使用root用戶,簡化nginx配置文件,簡化post-receive腳本,同時簡單地介紹一下原理。bash
apt-get update apt-get install git-core nginx
mkdir /var/www/blog
vim /etc/nginx/conf.d/blog.conf
因爲個人備案還沒弄好,還不能使用80端口,因此暫時使用8080端口部署博客。服務器
server { listen 8080; root /var/www/blog; }
ubuntu 16.04的init系統換成了systemd,所以使用systemctl命令來重啓nginx。hexo
systemctl restart nginx
blog.git做爲遠程Git倉庫,Hexo在本地生成的博客靜態文件能夠經過push與其同步。
mkdir ~/blog.git && cd ~/blog.git git init --bare
post-receive腳本將在blog.git倉庫接收到push時執行。
vim blog.git/hooks/post-receive
腳本很是簡單,刪除原有的**/var/www/blog目錄,而後從blog.git**倉庫clone新的博客靜態文件。
#!/bin/bash rm -rf /var/www/blog git clone /root/blog.git /var/www/blog
給post-receive腳本執行權限
chmod +x blog.git/hooks/post-receive
deploy: type: git repo: root@152.92.13.78:blog.git
hexo先生成新的博客靜態文件,而後經過git將其同步到雲主機的blog.git倉庫。
hexo d
而後經過http://152.92.13.78:8080/便可訪問博客。
備案以後,將ngnix端口改成80,把server_name設爲域名,而後修改DNS解析到雲主機就行了。
版權聲明:
轉載時請註明做者Fundebug以及本文地址: