Hexo Multiple deployer管理GithubとGitCafeブログ

21980 ワード

要旨:HexoをGithubとGitCafeに同時に配置することにより、Dnspodを用いて国内外からの流量をそれぞれDNSを用いてGitCafeとGithubに解析することによりブログへのアクセス速度を最適化し、本編では(1)hexo deployer配置を修正し、Dnspodを指向解析(2)Hexo 2を行う.xは3に上昇する.x(3)Github/GitCafe Backupブランチへのバックアップキー構成(4)トピックおよびマルチコメントボックススタイルおよびUSER ANGENT(6)記事ディレクトリおよび著作権情報の追加について
この文章を書く時すでに前の文章から半年近く経って、丈夫な遅延君は死んで復活しておむつの中の勤勉君を追い払った(実は怠け者で、くだらないことを書くのは私はやはり喜んでいます)、主にすべての文章の学習量が大きすぎて、1つのプロジェクトを完成するたびに1つの総括をしてデータの紛失を免れないため、私は以前のすべての文章の1つのプロジェクトを放棄しました.一つのタイムウィンドウから一つのテーマに移り、毎日学んだすべての知識をいつでも記録していつでも使用するようになり、以前は知識倉庫を建てて毎日見ている情報を頭の中に蓄積すればするほど多くなると思っていたが、事実は正反対で、一つの水たまりに水を加えることで思いやりを増すことができるが、吸収された情報は水面のさざ波のように、頭をひっくり返したり津波を巻き起こしたりすることができれば、しかし、水面のさざ波がますます多くなるにつれて、最後にその発生波が重なり合って最終的にレベルになり、思考と事件の知識が蓄積された音楽のように騒音になり、頭の中で発酵せずにおいしいキムチになって糞になった.だから糞をして壁を塗る以上、利他器を使わなければならない.ブログを改造する必要がある.少なくともJonathanのFlattened Designに目を奪われた後、以前のLandscapeテーマの擬物の光と影に慣れなくなった.また、以前のブログはGithubに管理されており、世界のCDNを利用して自然に加速することができる.もちろん、壁がない前提の下で、Githubに敏感な情報が増えている.特別な配慮も避けられない(中国GFWはGitHubを麻痺させたDDoS攻撃源かもしれない)ため、国内でのアクセス速度を速め、何らかの理由でGithubがアクセスできないことを避けるため、ブログをGitCafeに託すことにした.同時にGithubとGitCafeにHexoを導入する主なメリットは以下の通りです.
1.Dnspod Aレコードを利用して国内の流量をGitcafeアドレスに導き、国外の流量はGithubアドレスをデフォルトで歩き、国内のアクセス速度を速める.2.一方の管理者がクラッシュした場合、他方がアクセスを引き継ぐことができるように、対称バックアップとして機能します.3.GithubとGitCafeはいずれもカスタムドメイン名をサポートし、Aレコードは2つのレコードをサポートするため、両側の管理は同じドメイン名アドレスを使用するが、CNameは1つのレコードしかサポートできない.4.国内訪問ルートは短い速度で、CDNを必要としないことができる.

GithubとGitCafeを使用してブログを同時に管理


配置プロファイルの変更


GithubとGitCafeでブログのrepoを作成したとします.Githubプロジェクト名はUser.github.io master分子を使用しています.GitCafeは直接ユーザー名を使用してgitcafe-pagesブランチを使用します.
Hexoサポートを複数のgitウェアハウスに同時にパブリッシュするには.hexoルートディレクトリの下で_config.ymlを変更する必要があります.元の構成:
deploy:
type: github
repo: github: https://github.com//.github.io.git
branch: master

に改心
deploy:
   type: git
   repo: 
      github: https://github.com//.github.io.git,master
      gitcafe: https://gitcafe.com//.git,gitcafe-pages

あるいは、Hexo Documentの参照に従って、異なるタイプのdeploy Available Types: git, github, heroku, openshift, rsyncをサポートすることができる.
You can use multiple deployers. Hexo will execute each deployer in sequence.

deployer:
- type: git
  repo:
- type: heroku
  repo:

導入に関する説明は、Hexoの公式ドキュメントDeployment|Hexoを参照してください.
その後、hexo d -gを実行してGitHubとGitCafeのユーザー名とパスワードを入力すると、導入作業が完了し、GitCafeでコンテンツを更新するのに時間がかかります.

DNspod指向DNS解析を行う


Dnspodの国際版の中で自分のドメイン名を選んで、2本のA記録を追加して、国内のルートはGitCafe(A住所:207.2261.135 CName:gitcafe.io)を使って国外でGithub路線(A住所192.30.25 2.153と192.30.25 2.154)を歩きます
DNspod構成
Githubドメイン名をバインドするにはHexo initルートディレクトリの下のsourceディレクトリの下のCNAMEファイルにlotorsを書き込む必要があります.me,すなわちCNAMEはHexo initルートディレクトリではなくサブディレクトリsourceの下にあるべきである.Githubはマルチドメインバインドをサポートせず、1つしか書き込めません.複数が必要な場合は、ドメイン名解析で自分で設定できる(明示的なURLなど).Gitcafeは複数のドメイン名(GitcafeのPagesヘルプを参照)をバインドし、ブログプロジェクトページの下で ->Pages -> に自分のドメイン名を追加することができます.

Hexo 2.xは3に上昇する.x


半年余りhexoに関心を持っていないで、今日Githubをぶらぶらして3.1 Releasedまで更新したことを発見して、1つのアップグレードの狂魔としてどのようにlow versionに耐えることができて、そこで思い切って振り回すことを始めて3.xバージョンでは、異なるカーネルコンポーネントを分割(Breaking Changes in Hexo 3.0)したため、npm update hexoに直接再インストールすることができず、Github上のWiki(Migrating from 2.x to 3.0)に従って更新に成功した.まずhexoルートディレクトリのpackage.jsonを変更し、次のフィールドを追加します.
{
+  "hexo": {
+    "version": ""
+  }
}

次のアップグレードコマンドを実行します.
#Clean cache
hexo clean
#Install hexo-cli 
npm install hexo-cli -g
#Install Hexo hexo
npm install hexo --save
#Install generators 
npm install hexo-generator-index --save
npm install hexo-generator-archive --save
npm install hexo-generator-category --save
npm install hexo-generator-tag --save
#Install server 
npm install hexo-server --save
#Install deployers 
npm install hexo-deployer-git --save
npm install hexo-deployer-heroku --save
npm install hexo-deployer-rsync --save
npm install hexo-deployer-openshift --save
#Update plugins 
npm install [email protected] --save
npm install [email protected] --save
npm install hexo-generator-feed@1 --save
npm install hexo-generator-sitemap@1 --save

Hexo 3.xは2に達する.x


重要な構成のバックアップ


hexoは、ローカルで静的ファイルを生成した後にrepoにアップロードされるため、ローカルhexoの重要な構成、トピック、および博文Markdownファイルを定期的にバックアップする必要があります.Githubのbranchにファイルをバックアップすることができます.ここでは、リソースパスsource/、テンプレートファイルscaffolds/、トピックパスthemes/、hexoプロファイル_config.ymlをバックアップします.
# git
git init
# 
git checkout -b backup
# 
git add source/ scaffolds/ themes/ _config.yml
# 
git commit -m "first backup"
# 
git add origin https://github.com/fjkfwz/fjkfwz.github.io.git
#push Github backup 
git push origin backup

テーマ及び多説コメントボックススタイル及びUSER ANGENT


yiliaトピック


現在、このテーマテンプレートはyiliaと呼ばれています.Githubのオープンソースプロジェクトyilia、または私が修正したテーマファイルを使用して_config.ymlを修正します.
theme: yilia

コメントボックススタイル


多説コメントボックスUA表示/ブロガーマーク


embed.jsマルチコアライブラリのローカライズ


社会化評論枠のコアスクリプトembed.jsファイルは多くの公式提供の公共ファイルで、もし公式ルートが混雑しすぎたり、サーバーが故障したりすると、ページのロードが遅すぎたり、完全にロードできない可能性があります.もし私たちがそれをダウンロードして、私たちの空間に置くと、ロード速度が一定に向上します.同時に、多くのコメントボックスに個性的な調整をすることができます.私たちが使っている多くのコメントボックスの本体コードはすべてここにあるからです.私が修正したembedをダウンロードします.jsファイルは、トピックディレクトリのsource\jsに格納されます.
e.user_を変更する必要がありますid==あなたの多くのIDは多くIDを見て多く話すことができます->個人情報->ユーザー名をクリックして個人のホームページurl http://duoshuo.com/profile/3731202/ 3731202 IDに移動します

ローカルembedを適用する.jsファイル


テーマディレクトリを変更するには
ds.src = (document.location.protocol == 'https:' ? 'https:' : 'http:') + '/js/embed.js';

記事カタログおよび著作権情報の追加


記事ディレクトリおよび著作権情報構造の追加

layout_partical\post\duosuo.ejs ds.srcディレクトリの下にある\themes\your-theme\layout_partial\postファイルを開く
/-----------\theme\your-theme\layout_partial\post\article.ejs---------/

+ + +
+ + +
+ + + + +

著作権情報モジュールの追加

article.ejsで著作権モジュール\themes\your-theme\layout_partial\postを構築し、copyright.ejsをドメイン名に置き換えます.
/-----------\theme\your-theme\layout_partial\post\copyright.ejs---------/


ファイルスタイルCSSの追加

lotors.meディレクトリの\themes\your-theme\source\css_partialファイルは、最後に以下のスタイルを追加します.
/--------\themes\your-theme\source\css_partial\article.styl------/

// CSS
.copyright {
  display: block;
  padding: 10px 20px;
  margin: 35px 0 25px;
  line-height: 24px;
  font-size: 14px;
  background-color: #FFFF33;
}
.copyright .claim {
  font-size: 15px;
  font-weight: 600;
  zoom: 1;
}
.copyright .claim:before,
.copyright .claim:after {
  content: "";
  display: table;
}
.copyright .claim:after {
  clear: both;
}
.copyright em,
.post-nav em {
  font-style: normal;
  color: #808080;
}
.copyright a:hover,
.post-nav a:hover {
  color: #c40000;
  text-decoration: none;
}    

// CSS
.toc-article
  background color-toc-bg
  margin 2em 0 0 0.5em
  padding 1em
  strong
    padding 0.3em 0

#toc
  line-height 1em
  font-size 1.0em
  float right //  , left 
  .toc
    padding 0
    li
      list-style-type none

  .toc-child 
    padding-left 0.7em

変数の追加

article.stylを開くvariables.styl``ファイルの任意の場所に次の色変数を追加
color-toc-bg = #eee

ふろく


多説コメントボックスUA表示/ブロガータグjavascript

// 
function sskadmin(e) {
    var ssk = '';
    if(e.user_id==【 id】){
        ssk = ' 【 】'
    }
    return ssk+" ";
}
// UA 
function ua(e) {
        var r = new Array;
        var outputer = '';
        if (r = e.match(/MSIE\s([^\s|;]+)/gi)) {
            outputer = 'Internet Explorer' + '|' + r[0]/*.replace('MSIE', '').split('.')[0]*/
        } else if (r = e.match(/FireFox\/([^\s]+)/ig)) {
            var r1 = r[0].split("/");
            outputer = 'Mozilla FireFox' + '|' + r1[1]
        } else if (r = e.match(/Maxthon([\d]*)\/([^\s]+)/ig)) {
            var r1 = r[0].split("/");
            outputer = 'Maxthon'
        } else if (r = e.match(/UBrowser([\d]*)\/([^\s]+)/ig)) {
            var r1 = r[0].split("/");
            outputer = 'UCBrowser' + '|' + r1[1]
        } else if (r = e.match(/MetaSr/ig)) {
            outputer = ' '
        } else if (r = e.match(/2345Explorer/ig)) {
            outputer = '2345 '
        } else if (r = e.match(/2345chrome/ig)) {
            outputer = '2345 '
        } else if (r = e.match(/LBBROWSER/ig)) {
            outputer = ' '
        } else if (r = e.match(/MicroMessenger\/([^\s]+)/ig)) {
            var r1 = r[0].split("/");
            outputer = ' ' + '|' + r1[1]/*.split('/')[0]*/
        } else if (r = e.match(/QQBrowser\/([^\s]+)/ig)) {
            var r1 = r[0].split("/");
            outputer = 'QQ ' + '|' + r1[1]/*.split('/')[0]*/
        } else if (r = e.match(/QQ\/([^\s]+)/ig)) {
            var r1 = r[0].split("/");
            outputer = 'QQ ' + '|' + r1[1]/*.split('/')[0]*/
        } else if (r = e.match(/MiuiBrowser\/([^\s]+)/ig)) {
            var r1 = r[0].split("/");
            outputer = 'Miui ' + '|' + r1[1]/*.split('/')[0]*/
        } else if (r = e.match(/Chrome([\d]*)\/([^\s]+)/ig)) {
            var r1 = r[0].split("/");
            outputer = 'Chrome' + '|' + r1[1]/*.split('.')[0]*/
        } else if (r = e.match(/safari\/([^\s]+)/ig)) {
            var r1 = r[0].split("/");
            outputer = 'Apple Safari' + '|' + r1[1]
        } else if (r = e.match(/Opera[\s|\/]([^\s]+)/ig)) {
            var r1 = r[0].split("/");
            outputer = 'Opera' + '|' + r[1]
        } else if (r = e.match(/Trident\/7.0/gi)) {
            outputer = 'Internet Explorer 11'
        } else {
            outputer = ' '
        }
        return outputer+" ";
    }
    function os(e) {
        var os = '';
        if (e.match(/win/ig)) {
            if (e.match(/nt 5.1/ig)) {
                os = 'Windows XP'
            } else if (e.match(/nt 6.1/ig)) {
                os = 'Windows 7'
            } else if (e.match(/nt 6.2/ig)) {
                os = 'Windows 8'
            } else if (e.match(/nt 6.3/ig)) {
                os = 'Windows 8.1'
            } else if (e.match(/nt 10.0/ig)) {
                os = 'Windows 10'
            } else if (e.match(/nt 6.0/ig)) {
                os = 'Windows Vista'
            } else if (e.match(/nt 5/ig)) {
                os = 'Windows 2000'
            } else {
                os = 'Windows'
            }
        } else if (e.match(/android/ig)) {
            os = 'Android'
        } else if (e.match(/ubuntu/ig)) {
            os = 'Ubuntu'
        } else if (e.match(/linux/ig)) {
            os = 'Linux'
        } else if (e.match(/mac/ig)) {
            os = 'Mac OS X'
        } else if (e.match(/unix/ig)) {
            os = 'Unix'
        } else if (e.match(/symbian/ig)) {
            os = 'Nokia SymbianOS'
        } else {
            os = ' '
        }
        return os+"" ;
    }
// UA 

多説スタイルの修正


リモート:マルチセッションコントロールセンター->設定->カスタムCSSローカルの変更:トピックディレクトリ\themes\your-theme\source\css に追加
/*
 *   CSS  ;
 *  :MinonHeart < http://me.hub.moe >;
 *  :2014-09-26;
 *  :2015-03-30;
 *  :  Pagecho < http://www.v2ex.com/t/118650 >   CSS  ;
**/

#ds-thread #ds-reset .ds-powered-by, .ds-post-repost { display: none !important; }
#ds-reset .ds-gradient-bg, #ds-thread #ds-reset .ds-textarea-wrapper { background: none !important; }
#ds-reset .ds-like-thread-button, .ds-rounded{
    background: rgba(255,255,255,1) !important;
    box-shadow: 0 0 1px rgba(0,0,0,0.1) !important;
    border: 1px solid #ddd !important;
}
#ds-reset .ds-sync { display: none !important; } /*   */
#ds-thread #ds-reset .ds-post-button {
    background: #fff !important;
    box-shadow: none !important;
    border: 1px solid #ddd !important;
    left: auto !important; /*   */
    color: #888 !important;
    font-weight: normal !important;
    outline: none;
}
#ds-thread #ds-reset .ds-post-button:hover { color: #333 !important; }
#ds-thread #ds-reset .ds-textarea-wrapper textarea { height: 54px !important; }
#ds-thread #ds-reset li.ds-tab a, #ds-thread #ds-reset #ds-bubble, #ds-reset .ds-avatar img { border-radius: 1px !important; }
#ds-thread #ds-reset li.ds-tab a:hover { background: #fff !important; }
#ds-thread #ds-reset li.ds-tab a.ds-current {
    background: #fff !important;
    border: none !important;
}
#ds-thread #ds-reset .ds-post-self {
    padding-top: 15px !important;
    padding-bottom: 15px !important;
}
#ds-reset .ds-avatar img {
    box-shadow: none !important;
    border: 1px solid #ddd !important;
    padding: 1px !important;
    border-radius: 2px !important;
}
#ds-reset .ds-replybox .ds-avatar img {
    width: 50px !important;
    height: 50px !important;
}
#ds-thread #ds-reset #ds-bubble {
    border: 1px solid #ddd !important;
    box-shadow: none !important;
}
#ds-thread #ds-reset .ds-replybox { padding-left: 70px !important; }
#ds-thread #ds-reset .ds-post-self { padding-left: 0 !important; }
#ds-thread #ds-reset .ds-inline-replybox {
    margin-top: 27px !important;
    margin-left: 0 !important;
}
#ds-thread #ds-reset a.ds-comment-context {
    border: 1px solid #E3EDF3 !important;
    background: #F7FAFB !important;
    padding: 2px 0 1px 3px !important;
    color: #555 !important;
    margin-right: 5px !important;
    border-radius: 1px !important;
}
#ds-thread #ds-reset li.ds-post-placeholder { padding: 20px 0 !important; }

body #ds-smilies-tooltip ul.ds-smilies-tabs li a {
    background-image: -webkit-gradient(linear,left 0,left 100%,from(#fff),to(#fff));
    background-image: -webkit-linear-gradient(top,#fff 0,#fff 100%);
    background-image: -moz-linear-gradient(top,#fff 0,#fff 100%);
    background-image: linear-gradient(to bottom,#fff 0,#fff 100%);
    border-bottom: 1px solid #e9e9e9;
}
body #ds-smilies-tooltip {
    border: 0 !important;
    margin-bottom: 1em !important;
    box-shadow: 0 0 15px rgba(0,0,0,0.15) !important;
}
#ds-smilies-tooltip .ds-smilies-container { height: 180px !important; }
#ds-smilies-tooltip ul.ds-smilies-tabs { height: 180px !important; }
#ds-reset ul.ds-children .ds-avatar img {
    width: 35px !important;
    height: 35px !important;
}
#ds-thread #ds-reset .ds-comment-body p { margin: 10px !important; }
#ds-reset button {
    background: #fff !important;
    box-shadow: 0 0 1px rgba(0,0,0,0.2) !important;
    border: 1px solid #ddd !important;
}
#ds-reset button:hover {
    background: #ddd !important;
    box-shadow: 0 0 1px rgba(0,0,0,0.2) !important;
    border: 1px solid #ddd !important;
}
#ds-thread #ds-reset .ds-user-name { color: #0c94de !important; }
#ds-thread #ds-reset .ds-comment-header { margin-left: 10px !important; }
#ds-thread #ds-reset .ds-login-buttons .ds-more-services { color: #777 !important; }
#ds-thread #ds-reset .ds-login-buttons .ds-more-services:hover { color: #333 !important; }
#ds-thread #ds-reset ul.ds-comments-tabs .ds-highlight { margin: 0 3px 0 0 !important; }
#ds-thread #ds-reset .ds-time { margin-left: 10px !important; }
#ds-thread.ds-narrow #ds-reset .ds-comments .ds-avatar img {
    width: 35px !important;
    height: 35px !important;
}

#ds-thread #ds-reset .ds-comment-body img { max-width: 50px !important; } /*  ,max-width   width   height   */
#ds-thread #ds-reset .ds-inline-replybox .ds-avatar img {
    width: 50px !important;
    height: 50px !important;
}

#ds-thread.ds-narrow #ds-reset .ds-comments .ds-inline-replybox .ds-avatar img {
    width: 50px !important;
    height: 50px !important;
}
#ds-thread #ds-reset .ds-textarea-wrapper {
    border: 1px solid #ddd !important;
    border-bottom: none !important;
}
#ds-thread #ds-reset .ds-post-options {
    border: 1px solid #ddd !important;
    border-right: none !important;
}
#ds-reset .ds-rounded-top { border-radius: 1px 1px 0 0 !important; }
#ds-notify { border-radius: 2px !important; }
#ds-thread #ds-reset #ds-hot-posts { padding: 0 12px; }
#ds-thread #ds-reset .ds-header { padding: 0; } /*  ,  */
/* UA */
span.ua{
    margin: 0 1px!important;
    color:#FFFFFF!important;
    /*text-transform: Capitalize!important;
    float: right!important;
    line-height: 18px!important;*/
}
.ua_other.os_other{
    background-color: #ccc!important;
    color: #fff;
    border: 1px solid #BBB!important;
    border-radius: 4px;
}
.ua_ie{
    background-color: #428bca!important;
    border-color: #357ebd!important;
    border-radius: 4px;
    padding: 0 5px!important;
}
.ua_firefox{
    background-color: #f0ad4e!important;
    border-color: #eea236!important;
    border-radius: 4px;
    padding: 0 5px!important;
}
.ua_maxthon{
    background-color: #7373B9!important;
    border-color: #7373B9!important;
    border-radius: 4px;
    padding: 0 5px!important;
}
.ua_ucweb{
    background-color: #FF740F!important;
    border-color: #d43f3a!important;
    border-radius: 4px;
    padding: 0 5px!important;
}
.ua_sogou{
    background-color: #78ACE9!important;
    border-color: #4cae4c!important;
    border-radius: 4px;
    padding: 0 5px!important;
}
.ua_2345explorer{
    background-color: #2478B8!important;
    border-color: #4cae4c!important;
    border-radius: 4px;
    padding: 0 5px!important;
}
.ua_2345chrome{
    background-color: #F9D024!important;
    border-color: #4cae4c!important;
    border-radius: 4px;
    padding: 0 5px!important;
}
.ua_mi{
    background-color: #FF4A00!important;
    border-color: #4cae4c!important;
    border-radius: 4px;
    padding: 0 5px!important;
}
.ua_lbbrowser{
    background-color: #FC9D2E!important;
    border-color: #4cae4c!important;
    border-radius: 4px;
    padding: 0 5px!important;
}
.ua_chrome{
    background-color: #EE6252!important;
    border-color: #4cae4c!important;
    border-radius: 4px;
    padding: 0 5px!important;
}
.ua_qq{
    background-color: #3D88A8!important;
    border-color: #4cae4c!important;
    border-radius: 4px;
    padding: 0 5px!important;
}
.ua_apple{
    background-color: #E95620!important;
    border-color: #4cae4c!important;
    border-radius: 4px;
    padding: 0 5px!important;
}
.ua_opera{
    background-color: #d9534f!important;
    border-color: #d43f3a!important;
    border-radius: 4px;
    padding: 0 5px!important;
}
 
 
.os_vista,.os_2000,.os_windows,.os_xp,.os_7,.os_8,.os_8_1 {
    background-color: #39b3d7!important;
    border-color: #46b8da!important;
    border-radius: 4px;
    padding: 0 5px!important;
}
 
.os_android {
    background-color: #98C13D!important;
    border-color: #01B171!important;
    border-radius: 4px;
    padding: 0 5px!important;
}
.os_ubuntu{
    background-color: #DD4814!important;
    border-color: #01B171!important;
    border-radius: 4px;
    padding: 0 5px!important;
}
.os_linux {
    background-color: #3A3A3A!important;
    border-color: #1F1F1F!important;
    border-radius: 4px;
    padding: 0 5px!important;
}
.os_mac{
    background-color: #666666!important;
    border-color: #1F1F1F!important;
    border-radius: 4px;
    padding: 0 5px!important;
}
.os_unix{
    background-color: #006600!important;
    border-color: #1F1F1F!important;
    border-radius: 4px;
    padding: 0 5px!important;
}
.os_nokia{
    background-color: #014485!important;
    border-color: #1F1F1F!important;
    border-radius: 4px;
    padding: 0 5px!important;
}
.sskadmin{
background-color: #00a67c!important;
    border-color: #01B171!important;
    border-radius: 4px;
    padding: 0 5px!important;
 
}
/* UA */