優(yōu)化hexo訪問速度-將hexo部署到云主機VPS

寫在開始

一開始將自己hexo部署到github,結果發(fā)現打開頁面速度有點慢,然后又將其同時部署到coding,實現雙線路訪問,國內解析記錄到coding,國外解析到github,這樣確實網站的速度能提高不少,但是國內訪問因為是經過coding,所以打開網站會有廣告,這點不能容忍,于是想到自己的服務器也還空閑著,于是想到可以部署到自己的服務器上,折騰開始

演示站點

部署總覽

  • 個人使用的環(huán)境
    • 本地環(huán)境: Windows10(64位)
    • 云主機:阿里云ECS(CentOS 7.2 64位)
  • 整個部署過程
    • 本地環(huán)境搭建(git,NodeJs,hexo..)
    • 云主機環(huán)境搭建(git,Nginx
    • 設置解析(dnspod
    • 使用git自動化部署博客

本地環(huán)境搭建

  • 安裝git
  • 安裝hexo(這些步驟省略)
  • 生成ssh公鑰(之前生成過的也就不用再執(zhí)行了,比如部署在github上填寫過rsa密鑰就不需要再進行這一步了)
  • 在命令行終端執(zhí)行如下命令
    ssh-keygen -t rsa -C "郵件地址"
  • 生成的文件默認在~/.ssh目錄中,看到有id_rsaid_rsa.pub這些文件即可

云主機環(huán)境搭建

  • 安裝git及nodejs
yum install git
#安裝NodeJS
curl --silent --location https://rpm.nodesource.com/setup_5.x | bash -
  • 創(chuàng)建git賬戶
adduser git
chmod 740 /etc/sudoers
vim /etc/sudoers
  • 添加內容
    找到
## Allow root to run any commands anywhere
root    ALL=(ALL)     ALL
  • 添加以下內容
    git ALL=(ALL) ALL
    
  • 保存退出并改回權限
    chmod 400 /etc/sudoers
    
  • 設置git賬戶密碼
    sudo passwd git
    
  • 切換至git用戶,創(chuàng)建 ~/.ssh 文件夾和 ~/.ssh/authorized_keys 文件,并賦予相應的權限
su git
mkdir ~/.ssh
vim ~/.ssh/authorized_keys
#然后將本地電腦中執(zhí)行 cat ~/.ssh/id_rsa.pub | pbcopy ,將公鑰復制粘貼到
authorized_keys
chmod 600 ~/.ssh/authorzied_keys
chmod 700 ~/.ssh
  • 在本地終端中測試是否能免密登錄git
    ssh -v git@SERVER
  • 其中SERVER為填寫自己的云主機IP
  • 創(chuàng)建目錄
# repo 作為為git倉庫目錄
mkdir -R /var/repo
# hexo 作為網站根目錄
mkdir -R /var/www/hexo
  • 配置nginx(當然Apache也是可以的,nginx的安裝步驟省略)
  • 首先輸入ngixn -t找到配置文件,我的是在/etc/nginx/nginx.conf,配置SERVER
   server {
        listen       80;
        # server_name 填寫自己的域名
        server_name  www.fayne.cn;
        # 這里root填寫自己的網站根目錄
        root         /var/www/hexo;
        index index.html index.php index.htm;
        #/usr/local/tomcat/webapps/Forum

        # Load configuration files for the default server block.
        include /etc/nginx/default.d/*.conf;
         location / {
        }
        location ~ .php$ {
        }

        error_page 404 /404.html;
            location = /40x.html {
        }

        error_page 500 502 503 504 /50x.html;
            location = /50x.html {
        }
}

設置解析

  • dnspod設置解析記錄,設置解析A記錄www解析到服務器IP地址, 解析線路默認
  • 設置CNAME解析使www解析到xxx.github.io,解析線路國外,這里的xxxhexo部署在github的倉庫名稱,這樣保證了在國外訪問速度也是極佳的

使用git自動化部署博客

自動化部署主要用到了git-hooks同步

  • 服務器建立裸庫,這里要用git用戶登錄,確保git用戶擁有倉庫所有權
su git
cd /var/repo/
git init --bare blog.git
  • 使用 git-hooks 同步網站根目錄
    在這里我們使用的是 post-update這個鉤子(也有可能是post-receive,具體進入文件就知道了),當git有收發(fā)的時候就會調用這個鉤子。 在 /var/repo/blog.git 裸庫的 hooks文件夾中
vim /var/repo/blog.git/hooks/post-update
# 編輯文件,寫入以下內容
#!/bin/sh
git --work-tree=/var/www/hexo --git-dir=/var/repo/blog.git checkout -f
保存后,要賦予這個文件可執(zhí)行權限
chmod +x post-update
  • 配置_config.yml,完成自動化部署
    打開_config.yml, 找到deploy
deploy:
  type: git
  repo:
    github: git@github.com:Finhoo/Finhoo.github.io.git
    www: git@www.fayne.cn:/var/repo/blog.git
  branch: master

保存后,即可測試部署

hexo clean && hexo g -d
  • 至此,我們已經成功部完成,并且訪問自己的服務器端比訪問github快多了,國外速度也是很好

常見問題

我在部署過程中,執(zhí)行 hexo d發(fā)現部署老是出錯,什么權限不允許之類的,這里我們需要檢查我們在上述的git操作部署是否使用了git用戶操作,若是沒有,需要給相應的目錄更改用戶組
使用chown -R git:git /var/repo/這條命令遞歸的將repo目錄及其子目錄用戶組設置為git,同時chown -R git:git /var/www/hexo,這樣即可解決此類問題

參考資料

阿里云VPS搭建自己的的Hexo博客

最后編輯于
?著作權歸作者所有,轉載或內容合作請聯(lián)系作者
【社區(qū)內容提示】社區(qū)部分內容疑似由AI輔助生成,瀏覽時請結合常識與多方信息審慎甄別。
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發(fā)布,文章內容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務。

相關閱讀更多精彩內容

友情鏈接更多精彩內容