摘要: 在雲主機上搭建一個git裸倉庫,然后使用nginx作為網頁服務器,就可以輕松將Hexo博客通過git部署到雲主機上。
這是一個憂傷的故事
我的博客KiwenLau之前部署在Coding Pages上,挺不錯的,還可以一鍵啟用HTTPS。作為一個喜歡折騰的人,我突然打算使用CDN加速一下訪問速度,然而,國內的CDN服務要求網站必須備案。特意郵件問了Coding的客服,看來他們近期是不打算支持備案的,於是我就不得不考慮弄個雲主機來玩玩了。
后來,Coding Pages忽然添加了跳轉頁面,也就是說訪問我的博客的話,會先彈出5秒鍾的Coding廣告頁面。買個Coding年費199的會員就可以去掉,也不算貴,畢竟占着人家的資源。然而,我還琢磨着備案后用CND呢…
於是,我調研了一下各個雲服務的價格,1核1G的雲主機一年大概都是600+,比Coding會員貴了不少。不過騰訊雲最近在搞采購節,1核1G的雲主機一年只要238,果斷買了!
然而,備案這事貌似要折騰很久……此處省略1萬字。
0. 准備工作
我的雲主機的操作系統是Ubuntu Server 16.04.1 LTS 64位。不妨假設它的IP地址是152.92.13.78(我當然不會告訴你真實IP),你需要做的第一步就是配置SSH公鑰登陸,這樣Hexo通過git部署博客時就不需要輸入密碼了。
# SSH公鑰登陸將不需要輸入密碼 ssh root@152.92.13.78
這篇的博客參考了利用 GIT HOOKS 部署 HEXO 到 VPS,原文圖文並茂。我做了一些優化,例如使用root用戶,簡化nginx配置文件,簡化post-receive腳本,同時簡單地介紹一下原理。為了省事,我將直接使用root用戶,這是不符合安全規范的。但是,一方面我只是為了部署博客,不擔心黑客干壞事;另一方面,我也做了必要的安全防范,比如配置騰訊雲安全組,禁止SSH密碼登陸以及配置UFW防火牆。
1. 安裝git和nginx
apt-get update apt-get install git-core nginx
2. 配置Nginx
/var/www/blog目錄用於放置生成的靜態文件
mkdir /var/www/blog
編寫nginx配置文件
vim /etc/nginx/conf.d/blog.conf
由於我的備案還沒弄好,還不能使用80端口,所以暫時使用8080端口部署博客。
server { listen 8080; root /var/www/blog; }
ubuntu 16.04的init系統換成了systemd,因此使用systemctl命令來重啟nginx。重啟nginx
systemctl restart nginx
3. 配置Git Hooks
創建Git裸倉庫
blog.git作為遠程Git倉庫,Hexo在本地生成的博客靜態文件可以通過push與其同步。
mkdir ~/blog.git && cd ~/blog.git git init --bare
post-receive腳本將在blog.git倉庫接收到push時執行。配置Hooks腳本
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
4. 部署Hexo博客
修改_config.yml
deploy: type: git repo: root@152.92.13.78:blog.git
hexo先生成新的博客靜態文件,然后通過git將其同步到雲主機的blog.git倉庫。部署博客
備案之后,將ngnix端口改為80,把server_name設為域名,然后修改DNS解析到雲主機就好了。然后通過http://152.92.13.78:8080/即可訪問博客。
hexo d
參考鏈接:
關於Fundebug
Fundebug專注於JavaScript、微信小程序、微信小游戲、支付寶小程序、React Native、Node.js和Java實時BUG監控。
自從2016年雙十一正式上線,Fundebug累計處理了6億+錯誤事件,得到了Google、360、金山軟件等眾多知名用戶的認可。歡迎免費試用!
版權聲明:
轉載時請注明作者Fundebug以及本文地址: