優化hexo訪問速度-將hexo部署到雲主機VPS

寫在開始

一開始將本身hexo部署到github,結果發現打開頁面速度有點慢,而後又將其同時部署到coding,實現雙線路訪問,國內解析記錄到coding,國外解析到github,這樣確實網站的速度能提升很多,可是國內訪問由於是通過coding,因此打開網站會有廣告,這點不能容忍,因而想到本身的服務器也還空閒着,因而想到能夠部署到本身的服務器上,折騰開始
演示站點php

部署總覽

  • 我的使用的環境html

    • 本地環境: Windows10(64位)
    • 雲主機:阿里雲ECS(CentOS 7.2 64位)
  • 整個部署過程node

    • 本地環境搭建(gitNodeJshexo..)
    • 雲主機環境搭建(gitNginx
    • 設置解析(dnspod
    • 使用git自動化部署博客

本地環境搭建

  • 安裝git
  • 安裝hexo(這些步驟省略)
  • 生成ssh公鑰(以前生成過的也就不用再執行了,好比部署在github上填寫過rsa密鑰就不須要再進行這一步了)nginx

    • 在命令行終端執行以下命令
      ssh-keygen -t rsa -C "郵件地址"
    • 生成的文件默認在~/.ssh目錄中,看到有id_rsaid_rsa.pub這些文件便可

雲主機環境搭建

  • 安裝git及nodejsgit

    yum install git
    #安裝NodeJS
    curl --silent --location https://rpm.nodesource.com/setup_5.x | bash -
  • 建立git帳戶github

    adduser git
    chmod 740 /etc/sudoers
    vim /etc/sudoers
    • 添加內容
      找到web

      ## Allow root to run any commands anywhere
      root    ALL=(ALL)     ALL
    • 添加如下內容vim

      git ALL=(ALL) ALL
    • 保存退出並改回權限segmentfault

      chmod 400 /etc/sudoers
    • 設置git帳戶密碼tomcat

      sudo passwd git
  • 切換至git用戶,建立 ~/.ssh 文件夾和 ~/.ssh/authorized_keys 文件,並賦予相應的權限

    su git
    mkdir ~/.ssh
    vim ~/.ssh/authorized_keys
    #而後將本地電腦中執行 cat ~/.ssh/id_rsa.pub | pbcopy ,將公鑰複製粘貼到
    authorized_keys
    chmod 600 ~/.ssh/authorzied_keys
    chmod 700 ~/.ssh
    • 在本地終端中測試是否能免密登陸git
      ssh -v git@SERVER
    • 其中SERVER爲填寫本身的雲主機IP
  • 建立目錄

    # 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有收發的時候就會調用這個鉤子。 在 /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

    保存後,要賦予這個文件可執行權限

    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快多了,國外速度也是很好

常見問題

我在部署過程當中,執行 hexo d發現部署總是出錯,什麼權限不容許之類的,這裏咱們須要檢查咱們在上述的git操做部署是否使用了git用戶操做,如果沒有,須要給相應的目錄更改用戶組
使用chown -R git:git /var/repo/這條命令遞歸的將repo目錄及其子目錄用戶組設置爲git,同時chown -R git:git /var/www/hexo,這樣便可解決此類問題

參考資料

阿里雲VPS搭建本身的的Hexo博客

相關文章
相關標籤/搜索