標籤:

Hexo建站使用Git部署到VPS

Hexo建站使用Git部署到VPS

  在去年,心血來潮去買了個阿里雲的伺服器,幾番折騰下,用WordPress第一次搭建了自己的博客網站,然後過了幾天因為網站備案的問題太麻煩懶得弄,加上用國外的伺服器還可以用來上上油管、谷歌什麼的,就買了個搬瓦工的VPS,把自己的博客重新在搬瓦工上面建立起來,然後博客就處於荒廢狀態至今。  今日又有了寫博客記錄的念頭,就開始寫了起來,但是WordPress上用MarkDown十分不方便,找了很多插件,想了很多辦法也沒能完美解決寫作和發布的問題,再加上資料庫老是出錯...乾脆就用Hexo了,反正個人網站又小,也沒什麼人看。然後就開始谷歌搜索用Hexo建博客,搜出來的大多數都是Hexo+Github Pages,跟著教程和Hexo文檔一步一步沒花多少時間就弄好了,直接用MarkDown寫,幾個命令就能部署完畢,可以說是十分的方便了。  但是,自己有個VPS只用來跑ss感覺太浪費,GitHub上放著網站的文件也始終覺得不舒服,還是放在自己的伺服器上比較好。所以又開始折騰著把博客搬到自己的VPS上。在VPS部署時還因為許可權問題一直403...弄了很久才弄好...菜是原罪...  本文主要記錄在Windows端安裝Hexo,使用Hexo搭建博客並實現Git自動部署到VPS(Ubuntu)。

本地安裝Hexo建站

  Hexo是一個快速、簡潔且高效的博客框架。Hexo使用Markdown(或其他渲染引擎)解析文章,在幾秒內,即可利用靚麗的主題生成靜態網頁。

安裝前的準備

  • Git下載對應的系統版本的Git安裝好,使用git --version查看Git版本,若顯示版本信息則說明安裝成功。

安裝好後,進行一些初始化的操作,打開Git Bash設置用戶名和郵箱:

git config --global user.name "用戶名"git config --global user.email "郵箱地址"

設置SSH Key,Git Bash內執行:ssh-keygen -t rsa -C "郵箱地址"根據提示輸入密碼等完成設置。查看公開密鑰:cat ~/.ssh/id_rsa.pub複製顯示的內容,待會有用。

  • Node.js下載對應的系統版本的Node.js安裝好,使用node --version查看Node.js版本,若顯示版本信息則說明安裝成功。

使用npm安裝Hexo

  執行:npm install -g hexo-cli

建站

  安裝完畢後,在適當的位置新建一個文件夾(以hexo為例),並在文件夾內打開終端執行:

hexo init npm install

  執行完後,文件夾目錄結構如圖所示:

  至此,本地Hexo博客搭建完成。

Git Hooks自動部署

部署前的準備

  • VPS國內的有阿里雲、騰訊雲等;國外的有Vultr、搬瓦工等。
  • 域名可以上萬網、GoDaddy等購買。購買後,將域名解析到VPS的IP地址。

部署原理

  通過在本地編輯文本,然後使用Git遠程部署到VPS的Git倉庫。hexo d命令實際上只deploy了本地的public文件夾,Git Hooks實際上就是當Git倉庫收到最新的push時,將Git倉庫接受到的內容複製到VPS上的網站目錄內。相當於完成了手動將public文件夾複製到VPS的網站根目錄里。

VPS操作

安裝配置Git

  • 安裝Git通過SSH連接VPS,執行:apt-get install git,完成後通過git --version查看Git版本,若顯示版本信息則說明安裝成功。

  • 創建git用戶執行:adduser git,根據提示設置密碼。

  • 賦予git用戶sudo許可權執行:

chmod 740 /etc/sudoersvim /etc/sudoers找到以下內容: # User privilege specificationroot ALL=(ALL:ALL) ALL在root ALL=(ALL:ALL) ALL這一行下面添加git ALL=(ALL:ALL) ALL

保存退出後,修改迴文件許可權chmod 440 /etc/sudoers

  • 關閉git用戶shell許可權執行: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 //創建git倉庫文件夾,以blog.git為例cd blog.git //進入倉庫目錄git init --bare //使用--bare參數初始化為裸倉庫,這樣創建的倉庫不包含工作區

  • 創建網站目錄

cd /var/www/ //切換目錄mkdir blog //創建網站目錄,以blog為例

  • 配置SSH

cd /home/git //切換到git用戶目錄mkdir .ssh //創建.ssh目錄cd .sshvim authorized_keys然後將本地的公鑰複製到authorized_keys文件里(公鑰即上文中本地執行cat ~/.ssh/id_rsa.pub查看的內容)

  • 用戶組管理執行:

    ll /home/git/ ll /var/www/

    確保blog.git、.ssh、blog目錄的用戶組許可權為git:git

若不是,執行下列命令後再查看:

sudo chown git:git -R /var/www/blog

sudo chown git:git -R /home/git/blog.git

安裝配置nginx

  • 安裝nginx執行:apt-get install nginx,若輸入nginx -V可以看到nginx版本信息,則安裝成功。
  • 配置nginx執行:

cd /etc/nginx/sites-available //切換目錄cp default default.bak //備份默認配置vim default //修改配置

參靠我的本人配置文件內容:

server { listen 80 default; //默認監聽80埠 root /var/www/blog; //網站根目錄 server_name leihungjyu.com www.leihungjyu.com; //網址 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; } }

保存退出後,啟動nginx:systemctl start nginx設置開機自動啟動:systemctl enable nginx查看運行狀態:systemctl status nginx,顯示running表示成功運行。

配置Git Hooks

  • 創建post-receive文件git用戶下執行:

cd /home/git/blog.git/hooks //切換到hooks目錄下vim post-receive //創建文件

複製下面的內容到post-receive文件中:

#!/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賦予可執行許可權。

本地操作

  • 嘗試連接在本地打開Git Bash:ssh git@VPS的ip

如圖所示則連接成功,若默認埠不是22,則需要在後面加上-p 埠號,或者在.ssh文件夾下創建一個config文件,內容如下:

Host 伺服器IPHostName 伺服器IPUser gitPort 埠號IdentityFile ~/.ssh/id_rsa

  • 配置Hexo打開本地博客根目錄下的_config.yml文件,找到最後的deploy配置,修改為:

# Deployment ## Docs: Deployment deploy: type: git repo: git@VPS的IP:blog.git branch: master

  到此,Hexo建站就全部配置部署完畢了。

第一篇文章

  新建文章:hexo n "文章名"或者hexo new "文章名",然後使用Markdown編輯文章內容。

  生成:hexo g或者hexo generate

  部署:hexo d或者hexo deploy

  生成部署執行完後,訪問自己的網址就可以看到文章了。

  其他有用的命令:

hexo clean //清理緩存hexo s //本地預覽hexo server //本地預覽

一般來說,寫文章時一般先使用hexo s打開本地預覽,一邊寫一邊預覽修改,完成之後再通過hexo g -d生成上傳。

更多文章:

Leihungjyu的個人博客?

leihungjyu.com


推薦閱讀:

心靈的品級 - 液色迷人的日誌 - 網易博客
搭建一個自有域名的 WordPress 有哪些要注意的?
怎樣評價不老歌?
手把手教你建github技術博客by hexo

TAG:VPS | Hexo | 博客 |