1<!DOCTYPE html> 2<html> 3<head> 4 <!-- 5 * Author: forthxu 6 --> 7 <meta charset="utf-8" /> 8 <title>使ç¨Github Pages建ç¬ç«å客 | Forthxu.com</title> 9 <meta name="author" content="forthxu" /> 10 <meta name="renderer" content="webkit"> 11 <meta name="description" content="forthxu's Blog" /> 12 <meta name="viewport" content="width=device-width, initial-scale=1.0, minimum-scale=1.0"> 13 <link rel="stylesheet" href="/css/default.css" type="text/css" /> 14 <link rel="shortcut icon" href="/favicon.ico" type="image/x-icon" /> 15 <link rel="alternate" type="application/atom+xml" title="Recent Entries" href="/atom.xml" /> 16
16<script src="/js/jquery-1.7.1.min.js" type="text/javascript"></script>
16 17</head> 18<body> 19 20 <div class="home-menu"> 21 <div class="home-icon-con"> 22 <a class="home-menu-icon" href="/">forthxu</a> 23 <a class="home-follow" href="#" title="Contact Me">+</a> 24 </div> 25 <div class="home-contact"> 26 <a href="http://weibo.com/forthxu/" target="_blank" style="margin-left:-5px;"><img src="http://www.weibo.com/favicon.ico" alt="" width="25"/></a> 27 </div> 28 </div> 29 30 <link rel="stylesheet" href="/js/prettify/prettify.css" /> 31<style type="text/css"> 32 body { background:#e8e8e8; } 33 @media screen and (max-width: 750px){ 34 body { background:#fff; } 35 } 36 @media screen and (max-width: 1020px){ 37 body { background:#fff; } 38 } 39</style> 40 41<div id="content"> 42 <div class="entry"> 43 <h1 class="entry-title"><a href="/blog/github-pages" title="使ç¨Github Pages建ç¬ç«å客">使ç¨Github Pages建ç¬ç«å客</a></h1> 44 <p class="entry-date">2012-02-22</p> 45 <p><a href="http://github.com" title="Github">Github</a>å¾å¥½çå°ä»£ç å社åºèç³»å¨äºä¸èµ·ï¼äºæ¯åçäºå¾å¤æè¶£çäºæ ï¼ä¸çä¹å 为ä»ç¾å¥½äºä¸ç¹ç¹ãGithubä½ä¸ºç°å¨ææµè¡ç代ç ä»åºï¼å·²ç»å¾å°å¾å¤å¤§å ¬å¸å项ç®çéçï¼æ¯å¦<a href="https://github.com/jquery/jquery" title="jQuery@github">jQuery</a>ã<a href="https://github.com/twitter/bootstrap" title="Twitter@github">Twitter</a>çãä¸ºä½¿é¡¹ç®æ´æ¹ä¾¿ç被人çè§£ï¼ä»ç»é¡µé¢å°ä¸äºï¼çè³ä¼éè¦å®æ´çææ¡£ç«ï¼Githubæ¿ä½ æ³å°äºè¿ä¸ç¹ï¼ä»æä¾äº<a href="http://pages.github.com/" title="Github Pages">Github Pages</a>çæå¡ï¼ä¸ä» å¯ä»¥æ¹ä¾¿ç为项ç®å»ºç«ä»ç»ç«ç¹ï¼ä¹å¯ä»¥ç¨æ¥å»ºç«ä¸ªäººå客ã</p> 46 47<p>Github Pagesæä»¥ä¸å 个ä¼ç¹ï¼</p> 48 49<ul> 50 <li>è½»é级çå客系ç»ï¼æ²¡æéº»ç¦çé ç½®</li> 51 <li>ä½¿ç¨æ è®°è¯è¨ï¼æ¯å¦<a href="http://markdown.tw">Markdown</a></li> 52 <li>æ éèªå·±æå»ºæå¡å¨</li> 53 <li>æ ¹æ®Githubçéå¶ï¼å¯¹åºçæ¯ä¸ªç«æ300MB空é´</li> 54 <li>å¯ä»¥ç»å®èªå·±çåå</li> 55</ul> 56 57 58<p>å½ç¶ä»ä¹æç¼ºç¹ï¼</p> 59 60<ul> 61<li>使ç¨<a href="https://github.com/mojombo/jekyll" title="Jekyll">Jekyll</a>模æ¿ç³»ç»ï¼ç¸å½äºéæé¡µåå¸ï¼éååå®¢ï¼ææ¡£ä»ç»çã</li> 62<li>卿ç¨åºçé¨åç¸å½å±éï¼æ¯å¦æ²¡æè¯è®ºï¼ä¸è¿è¿å¥½æä»¬æè§£å³æ¹æ¡ã</li> 63<li>åºäºGitï¼å¾å¤ä¸è¥¿éè¦å¨æï¼ä¸åWordpressæå¼ºå¤§çåå°</li> 64</ul> 65 66 67<p>大è´ä»ç»å°æ¤ï¼ä½ä¸ºä¸ªäººå客æ¥è¯´ï¼ç®æ´æ¸ ç½ç表达èªå·±çå·¥ä½ãå¿å¾ï¼å°±å·²è¾¾ç®æ ï¼æä»¥Github Pagesæ¯æè®¤ä¸ºæ¤éæ±æå®ç¾çè§£å³æ¹æ¡äºã</p> 68 69<h2>è´ä¹°ãç»å®ç¬ç«åå</h2> 70 71<p>è½è¯´<a href="http://www.godaddy.com/" title="Godaddy">Godaddy</a>æ¾æ¯æè¿SOPAï¼å¹¶ä¸é¦é¡µæ¾çæå ¶ä¸ä¸ä¸ç大è¸ç¾å¥³ï¼ä½æ¯ä½ä¸ºååæå¡åä»åçè¿ä¸èµï¼éæ©å®æéè¦çåå æ¯ä»æ¯ææ¯ä»å®ï¼æ²¡æä¿¡ç¨å¡ææ¶ççå¾é¾è¿ã</p> 72 73<p>ååçè´ä¹°ä¸ç¨å¤è®²ï¼æ³¨åãéååãæ¯ä»ï¼æç½è´ç»éªç齿¯«æ ååï¼ä¼æ ç ä¹éå°çæ¯ãååçé ç½®éè¦æéä¸ä¸ï¼å 为ä¼å¤§è±æçGFWçåå¨ï¼æä»¬å¿ é¡»å¤åäºäºæ ã</p> 74 75<p>æµä¼ Godaddyçååè§£ææå¡å¨è¢«å¢æï¼å¯¼è´ååæ æ³è®¿é®ï¼åæ¥è¿ä¸ªäºæ å¨<a href="http://beiyuu.com" title="BeiYuu">BeiYuu</a>ä¹åçäºï¼ä¸å¾å·²éè¦æååè§£ææå¡è¿ç§»å°å½å æ¯è¾ç¨³å®çæå¡åå¤ï¼è¿ä¸ªè¿ç§»å¯¹äºååæ¥è¯´æ²¡æä»ä¹é£é©ï¼æç»çæ§å¶æè¿æ¯å¨Godaddyé£éï¼ä½ éæ¶é½å¯ä»¥æ¹åå»ã</p> 76 77<p>æä»¬éæ©<a href="https://www.dnspod.cn/" title="DNSPod">DNSPod</a>çæå¡ï¼ä»ä»¬ç产ååå¾ä¸éï¼æç¨ãå è´¹ï¼æ¶è´¹çææ´é«ç«¯çåè½ï¼æä¸éè¦ã注åç»å½ä¹åï¼æç §DNSPodç说æ³ï¼åªé䏿¥ï¼æä»¬æå ¥ä¸æ¥ï¼ï¼</p> 78 79<ul> 80 <li>é¦å æ·»å ååè®°å½ï¼å¯åèDNSPodçå¸®å©ææ¡£ï¼<a href="https://www.dnspod.cn/Support">https://www.dnspod.cn/Support</a></li> 81 <li>å¨DNSPodèªå·±çåå䏿·»å 䏿¡<a href="http://baike.baidu.com/view/65575.htm">Aè®°å½</a>ï¼å°åå°±æ¯Github Pagesçæå¡IPå°åï¼207.97.227.245</li> 82 <li>å¨ååæ³¨ååå¤ä¿®æ¹DNSæå¡:å»Godaddyä¿®æ¹Nameservers为è¿ä¸¤ä¸ªå°åï¼f1g1ns1.dnspo
82d.netãf1g1ns2.dnspod.netãå¦æä½ ä¸æç½å¨åªéä¿®æ¹ï¼å¯ä»¥åèè¿éï¼<a href="https://www.dnspod.cn/support/index/fid/119">Godaddy注åçååå¦ä½ä½¿ç¨DNSPod</a></li> 83 <li>çå¾ ååè§£æçæ</li> 84</ul> 85 86 87<p>ååçé ç½®é¨å宿ï¼è·ªè°¢æ¹æ ¡é¿ã</p> 88 89<h2>é ç½®å使ç¨Github</h2> 90 91<p>Gitæ¯çæ¬ç®¡ççæªæ¥ï¼ä»çä¼ç¹æä¸åèµè¿°ï¼ç¸å ³èµæå¾å¤ãæ¨èè¿æ¬<a href="http://progit.org/book/zh/" title="Pro Git䏿ç">Git䏿æç¨</a>ã</p> 92 93<p>è¦ä½¿ç¨Gitï¼éè¦å®è£ å®ç客æ·ç«¯ï¼æ¨èå¨Linuxä¸ä½¿ç¨Gitï¼ä¼æ¯è¾æ¹ä¾¿ãWindowsççä¸è½½å°åå¨è¿éï¼<a href="http://code.google.com/p/msysgit/downloads/list" title="WindowsçGit客æ·ç«¯">http://code.google.com/p/msysgit/downloads/list</a>ãå ¶ä»ç³»ç»çå®è£ ä¹å¯ä»¥åè宿¹ç<a href="http://help.github.com/mac-set-up-git/" title="Macä¸Gitå®è£ ">å®è£ æç¨</a>ã</p> 94 95<p>ä¸è½½å®è£ 客æ·ç«¯ä¹åï¼å个系ç»çé 置就类似äºï¼æä»¬ä½¿ç¨windowsä½ä¸ºä¾åï¼LinuxåMac䏿¤ç±»ä¼¼ã</p> 96 97<p>å¨Windowsä¸ï¼æå¼Git Bashï¼å ¶ä»ç³»ç»ä¸é¢åæå¼ç»ç«¯ï¼Terminalï¼ï¼ 98<img src="/images/githubpages/bootcamp_1_win_gitbash.jpg" alt="Git Bash" /></p> 99 100<h3>1ãæ£æ¥SSH keysç设置</h3> 101 102<p>é¦å æä»¬éè¦æ£æ¥ä½ çµèä¸ç°æçssh keyï¼</p> 103 104<pre><code>$ cd ~/.ssh 105</code></pre> 106 107<p>妿æ¾ç¤ºâNo such file or directoryâï¼è·³å°ç¬¬ä¸æ¥ï¼å¦åç»§ç»ã</p> 108 109<h3>2ãå¤ä»½åç§»é¤åæ¥çssh key设置ï¼</h3> 110 111<p>å 为已ç»åå¨keyæä»¶ï¼æä»¥éè¦å¤ä»½æ§çæ°æ®å¹¶å é¤ï¼</p> 112 113<pre><code>$ ls 114config id_rsa id_rsa.pub known_hosts 115$ mkdir key_backup 116$ cp id_rsa* key_backup 117$ rm id_rsa* 118</code></pre> 119 120<h3>3ãçææ°çSSH Keyï¼</h3> 121 122<p>è¾å ¥ä¸é¢ç代ç ï¼å°±å¯ä»¥çææ°çkeyæä»¶ï¼æä»¬åªéè¦é»è®¤è®¾ç½®å°±å¥½ï¼æä»¥å½éè¦è¾å ¥æä»¶åçæ¶åï¼å车就好ã</p> 123 124<pre><code>$ ssh-keygen -t rsa -C "é®ä»¶å°å@youremail.com" 125Generating public/private rsa key pair. 126Enter file in which to save the key (/Users/your_user_directory/.ssh/id_rsa):<å车就好> 127</code></pre> 128 129<p>ç¶åç³»ç»ä¼è¦ä½ è¾å ¥å å¯ä¸²ï¼<a href="http://help.github.com/ssh-key-passphrases/">Passphrase</a>ï¼ï¼</p> 130 131<pre><code>Enter passphrase (empty for no passphrase):<è¾å ¥å å¯ä¸²> 132Enter same passphrase again:<忬¡è¾å ¥å å¯ä¸²> 133</code></pre> 134 135<p>æåçå°è¿æ ·ççé¢ï¼å°±æå设置ssh keyäºï¼ 136<img src="/images/githubpages/ssh-key-set.png" alt="ssh key success" /></p> 137 138<h3>4ãæ·»å SSH Keyå°GitHubï¼</h3> 139 140<p>卿¬æºè®¾ç½®SSH Keyä¹åï¼éè¦æ·»å å°GitHubä¸ï¼ä»¥å®æSSH龿¥ç设置ã</p> 141 142<p>ç¨ææ¬ç¼è¾å·¥å ·æå¼id_rsa.pubæä»¶ï¼å¦æçä¸å°è¿ä¸ªæä»¶ï¼ä½ éè¦è®¾ç½®æ¾ç¤ºéèæä»¶ãåç¡®çå¤å¶è¿ä¸ªæä»¶çå å®¹ï¼æè½ä¿è¯è®¾ç½®çæåã</p> 143 144<p>å¨GitHubç主页ä¸ç¹å»è®¾ç½®æé®ï¼ 145<img src="/images/githubpages/github-account-setting.png" alt="github account setting" /></p> 146 147<p>éæ©SSH Keysé¡¹ï¼æå¤å¶çå 容ç²è´´è¿å»ï¼ç¶åç¹å»Add Keyæé®å³å¯ï¼ 148<img src="/images/githubpages/bootcamp_1_ssh.jpg" alt="set ssh keys" /></p> 149 150<p>PSï¼å¦æéè¦é ç½®å¤ä¸ªGitHubè´¦å·ï¼å¯ä»¥åçè¿ä¸ª<a href="http://omiga.org/blog/archives/2269">å¤ä¸ªgithubå¸å·çSSH key忢</a>ï¼ä¸è¿éè¦æéä¸ä¸çæ¯ï¼å¦æä½ åªæ¯éè¿è¿ç¯æç« ä¸æè¿°é ç½®äºHostï¼é£ä¹ä½ å¤ä¸ªè´¦å·ä¸é¢çæäº¤ç¨æ·ä¼æ¯ä¸ä¸ªäººï¼æä»¥éè¦éè¿å½ä»¤<code>git config --global --unset user.email</code>å é¤ç¨æ·è´¦æ·è®¾ç½®ï¼å¨æ¯ä¸ä¸ªrepoä¸é¢ä½¿ç¨<code>git config --local user.email 'ä½ çgithubé®ç®±@mail.com'</code> å½ä»¤åç¬è®¾ç½®ç¨æ·è´¦æ·ä¿¡æ¯</p> 151 152<h3>5ãæµè¯ä¸ä¸</h3> 153 154<p>å¯ä»¥è¾å ¥ä¸é¢çå½ä»¤ï¼çç设置æ¯å¦æåï¼<code>[email protected]</code>çé¨åä¸è¦ä¿®æ¹ï¼</p> 155 156<pre><code>$ ssh -T [email protected] 157</code></pre> 158 159<p>妿æ¯ä¸é¢çååºï¼</p> 160 161<pre><code>The authenticity of host 'github.com (207.97.227.239)' can't be established. 162RSA key fingerprint is 16:27:ac:a5:76:28:2d:36:63:1b:56:4d:eb:df:a6:48. 163Are you sure you want to continue connecting (yes/no)? 164</code></pre> 165 166<p>ä¸è¦ç´§å¼ ï¼è¾å ¥<code>yes</code>就好ï¼ç¶åä¼çå°ï¼</p> 167 168<pre><code>Hi <em>username</em>! You've successfully authenticated, but GitHub does not provide shell access. 169</code></pre> 170 171<h3>6ãè®¾ç½®ä½ çè´¦å·ä¿¡æ¯</h3> 172 173<p>ç°å¨ä½ å·²ç»å¯ä»¥éè¿SSH龿¥å°GitHubäºï¼è¿æä¸äºä¸ªäººä¿¡æ¯éè¦å®åçã</p> 174 175<p>
175Git伿 ¹æ®ç¨æ·çåååé®ç®±æ¥è®°å½æäº¤ãGitHub乿¯ç¨è¿äºä¿¡æ¯æ¥åæéçå¤çï¼è¾å ¥ä¸é¢ç代ç è¿è¡ä¸ªäººä¿¡æ¯çè®¾ç½®ï¼æåç§°åé®ç®±æ¿æ¢æä½ èªå·±çï¼ååå¿ é¡»æ¯ä½ ççåï¼è䏿¯GitHubçæµç§°ã</p> 176 177<pre><code>$ git config --global user.name "ä½ çåå" 178$ git config --global user.email "[email protected]" 179</code></pre> 180 181<h4>设置GitHubçtoken</h4> 182 183<p>2012-4-28è¡¥å ï¼æ°ççæ¥å£å·²ç»ä¸éè¦é ç½®tokenäºï¼æä»¥ä¸é¢è¿æ®µå¯ä»¥è·³è¿äº</p> 184 185<p>æäºå·¥å ·æ²¡æéè¿SSHæ¥é¾æ¥GitHubã妿è¦ä½¿ç¨è¿ç±»å·¥å ·ï¼ä½ éè¦æ¾å°ç¶åè®¾ç½®ä½ çAPI Tokenã</p> 186 187<p>å¨GitHubä¸ï¼ä½ å¯ä»¥ç¹å»<em>Account Setting > Account Admin</em>ï¼ 188<img src="/images/githubpages/bootcamp_1_token.jpg" alt="set ssh keys" /></p> 189 190<p>ç¶åå¨ä½ çå½ä»¤è¡ä¸ï¼è¾å ¥ä¸é¢çå½ä»¤ï¼ætokenæ·»å è¿å»ï¼</p> 191 192<pre><code>$ git config --global user.name "ä½ çåå" 193$ git config --global user.token 0123456789your123456789token 194</code></pre> 195 196<p>å¦æä½ æ¹äºGitHubçå¯ç ï¼éè¦éæ°è®¾ç½®tokenã</p> 197 198<h3>æåäº</h3> 199 200<p>好äºï¼ä½ å·²ç»å¯ä»¥æåè¿æ¥GitHubäºã</p> 201 202<h2>使ç¨GitHub Pages建ç«å客</h2> 203 204<p>ä¸GitHub建ç«å¥½é¾æ¥ä¹åï¼å°±å¯ä»¥æ¹ä¾¿ç使ç¨å®æä¾çPagesæå¡ï¼GitHub Pageså两ç§ï¼ä¸ç§æ¯ä½ çGitHubç¨æ·å建ç«ç<code>username.github.io</code>è¿æ ·çç¨æ·&ç»ç»é¡µï¼ç«ï¼ï¼å¦ä¸ç§æ¯ä¾é项ç®çpagesã</p> 205 206<h3>User & Organization Pages</h3> 207 208<p>æ³å»ºç«ä¸ªäººå客æ¯ç¨ç第ä¸ç§ï¼å½¢å¦<code>beiyuu.github.io</code>è¿æ ·çå¯è®¿é®çç«ï¼æ¯ä¸ªç¨æ·åä¸é¢åªè½å»ºç«ä¸ä¸ªï¼å建ä¹åç¹å»<code>Admin</code>è¿å ¥é¡¹ç®ç®¡çï¼å¯ä»¥çå°æ¯è¿æ ·çï¼ 209<img src="/images/githubpages/user-pages.png" alt="user pages" /> 210èæ®éçé¡¹ç®æ¯è¿æ ·çï¼å³ä½¿ä½ 乿¯ç¨ç<code>othername.github.io</code>ï¼ 211<img src="/images/githubpages/other-pages.png" alt="other pages" /></p> 212 213<p>å建好<code>username.github.io</code>项ç®ä¹åï¼æäº¤ä¸ä¸ª<code>index.html</code>æä»¶ï¼ç¶å<code>push</code>å°GitHubç<code>master</code>忝ï¼ä¹å°±æ¯æ®éæä¹ä¸ç主干ï¼ãç¬¬ä¸æ¬¡é¡µé¢çæéè¦ä¸äºæ¶é´ï¼å¤§æ¦10åéå·¦å³ã</p> 214 215<p>çæä¹åï¼è®¿é®<code>username.github.io</code>å°±å¯ä»¥çå°ä½ ä¸ä¼ ç页é¢äºï¼<a href="http://beiyuu.github.com">beiyuu.github.com</a>å°±æ¯ä¸ä¸ªä¾åã</p> 216 217<p>å ³äºç¬¬äºç§é¡¹ç®<code>pages</code>ï¼ç®åæä¸ä¸ï¼ä»åç¨æ·pages使ç¨çåå°ç¨åºæ¯åä¸å¥ï¼åªä¸è¿å®çç®çæ¯é¡¹ç®çå¸®å©ææ¡£çè·é¡¹ç®ç»å®çå å®¹ï¼æä»¥éè¦å¨é¡¹ç®ç<code>gh-pages</code>忝ä¸å»æäº¤ç¸åºçæä»¶ï¼GitHubä¼èªå¨å¸®ä½ çæé¡¹ç®pagesãå ·ä½ç使ç¨å¸®å©å¯ä»¥åè<a href="http://pages.github.com/" title="Github Pages">Github Pages</a>ç宿¹ææ¡£ï¼</p> 218 219<h3>ç»å®åå</h3> 220 221<p>æä»¬å¨ç¬¬ä¸é¨åå°±æå°äºå¨DNSé¨åç设置ï¼åæ¥çå¨GitHubçé ç½®ï¼è¦æ³è®©<code>username.github.io</code>è½éè¿ä½ èªå·±çååæ¥è®¿é®ï¼éè¦å¨é¡¹ç®çæ ¹ç®å½ä¸æ°å»ºä¸ä¸ªå为<code>CNAME</code>çæä»¶ï¼æä»¶å 容形å¦ï¼</p> 222 223<pre><code>beiyuu.com 224</code></pre> 225 226<p>ä½ ä¹å¯ä»¥ç»å®å¨äºçº§ååä¸ï¼</p> 227 228<pre><code>blog.beiyuu.com 229</code></pre> 230 231<p>éè¦æéçä¸ç¹æ¯ï¼å¦æä½ 使ç¨å½¢å¦<code>beiyuu.com</code>è¿æ ·çä¸çº§ååçè¯ï¼éè¦å¨DNSå¤è®¾ç½®Aè®°å½å°<code>207.97.227.245</code>ï¼<strong>è¿ä¸ªå°å伿åå¨ï¼<a href="https://help.github.com/articles/my-custom-domain-isn-t-working">è¿é</a>æ¥ç</strong>ï¼ï¼è䏿¯å¨DNSå¤è®¾ç½®ä¸ºCNAMEçå½¢å¼ï¼å¦åå¯è½ä¼å¯¹å ¶ä»æå¡ï¼æ¯å¦emailï¼é æå½±åã</p> 232 233<p>设置æååï¼æ ¹æ®DNSçæ åµï¼æé¿å¯è½éè¦ä¸å¤©æè½çæï¼èå¿çå¾ å§ã</p> 234 235<h2>Jekyll模æ¿ç³»ç»</h2> 236 237<p>GitHub Pagesä¸ºäºæä¾å¯¹HTMLå å®¹çæ¯æï¼éæ©äº<a href="https://github.com/mojombo/jekyll" title="Jekyll">Jekyll</a>ä½ä¸ºæ¨¡æ¿ç³»ç»ï¼Jekyllæ¯ä¸ä¸ªå¼ºå¤§çéææ¨¡æ¿ç³»ç»ï¼ä½ä¸ºä¸ªäººå客使ç¨ï¼åºæ¬ä¸å¯ä»¥æ»¡è¶³è¦æ±ï¼ä¹è½ä¿æç®¡ççæ¹ä¾¿ï¼ä½ å¯ä»¥æ¥ç<a href="https://github.com/mojombo/jekyll/blob/master/README.textile">Jekyll宿¹ææ¡£</a>ã</p> 238 239<p>ä½ å¯ä»¥ç´æ¥fork<a href="https://github.com/beiyuu/beiyuu.github.com">æç项ç®</a>ï¼ç¶åæ¹åï¼å°±æäºä½ èªå·±ç满足Jekyllè¦æ±çææ¡£äºï¼å½ç¶ä½ ä¹å¯ä»¥æç §ä¸é¢çä»ç»èªå·±å建ã</p> 240 241<h3>Jekyllåºæ¬ç»æ</h3> 242 243<p>Jekyllçæ ¸å¿å ¶å®å°±æ¯ä¸ä¸ªææ¬ç转æ¢å¼æï¼ç¨ä½ æåæ¬¢çæ è®°è¯è¨åææ¡£ï¼å¯ä»¥æ¯MarkdownãTextileæè HTMLççï¼åéè¿<code>layout</code>å°ææ¡£æ¼è£ èµ·æ¥ï¼æ ¹æ®ä½ 设置çURLè§åæ¥å±ç°ï¼è¿äºé½æ¯éè¿ä¸¥æ ¼çé ç½®æä»¶æ¥å®ä¹ï¼æç»ç产åºå°±æ¯web页é¢ã</p> 244 245<p>åºæ¬çJekyllç»æå¦ä¸ï¼</p> 246 247<pre><code>|-- _config.yml 248|-- _includes 249|-- _layouts 250| |-- default.html 251| `-- post.html 252|-- _posts 253| |-- 2007-10-29-why-every-programmer-should-play-nethack.textile 254| `-- 2009-04-26-barcamp-boston-4-roundup.textile 255|-- _site 256`-- index.html 257</code></pre> 258 259<p>ç®åä»ç»ä¸ä¸ä»ä»¬çä½ç¨ï¼</p> 260 261<h4>_config.yml</h4> 262 263<p>é ç½®æä»¶ï¼ç¨æ¥å®ä¹ä½ æ³è¦çææï¼è®¾ç½®ä¹åå°±ä¸ç¨å ³å¿äºã</p> 264 265<h4>_includes</h4> 266 267<p>å¯ä»¥ç¨æ¥åæ¾ä¸äºå°çå¯å¤ç¨ç模åï¼æ¹ä¾¿éè¿<code>{ % include file.ext %}</code>ï¼å»æå两个{䏿è {ä¸%ä¸çç©ºæ ¼ï¼ä¸åï¼çµæ´»çè°ç¨ãè¿æ¡å½ä»¤ä¼è°ç¨_includes/file.extæä»¶ã</p> 268 269<h4>_layouts</h4> 270 271<p>è¿æ¯æ¨¡æ¿æä»¶åæ¾çä½ç½®ã模æ¿éè¦éè¿<a href="https://github.com/mojombo/jekyll/wiki/YAML-Front-Matter">YAML front matter</a>æ¥å®ä¹ï¼åé¢ä¼è®²å°ï¼<code>{ { content }}</code>æ è®°ç¨æ¥å°æ°æ®æå ¥å°è¿äºæ¨¡æ¿ä¸æ¥ã</p> 272 273<h4>_posts</h4> 274 275<p>ä½ ç卿å 容ï¼ä¸è¬æ¥è¯´å°±æ¯ä½ çåå®¢æ£æåæ¾çæä»¶å¤¹ãä»çå½åæä¸¥æ ¼çè§å®ï¼å¿ é¡»æ¯<code>2012-02-22-artical-title.MARKUP</code>è¿æ ·çå½¢å¼ï¼MARKUPæ¯ä½ æä½¿ç¨æ è®°è¯è¨çæä»¶åç¼åï¼æ ¹æ®_config.ymlä¸è®¾å®ç龿¥è§åï¼å¯ä»¥æ ¹æ®ä½ çæä»¶åçµæ´»è°æ´ï¼æç« çæ¥æåæ è®°è¯è¨åç¼ä¸æç« çæ é¢çç¬ç«çã</p> 276 277<h4>_site</h4> 278 279<p>è¿ä¸ªæ¯Jekyllçæçæç»çææ¡£ï¼ä¸ç¨å»å ³å¿ãæå¥½æä»æ¾å¨ä½ ç<code>.gitignore</code>æä»¶ä¸å¿½ç¥å®ã</p> 280 281<h4>å ¶ä»æä»¶å¤¹</h4> 282 283<p>ä½ å¯ä»¥å建任ä½çæä»¶å¤¹ï¼å¨æ ¹ç®å½ä¸é¢ä¹å¯ä»¥åå»ºä»»ä½æä»¶ï¼åè®¾ä½ å建äº<code>project</code>æä»¶å¤¹ï¼ä¸é¢æä¸ä¸ª<code>github-pages.md</code>çæä»¶ï¼é£ä¹ä½ å°±å¯ä»¥éè¿<code>yoursite.com/project/github-pages</code>
283访é®çå°ï¼å¦æä½ æ¯ä½¿ç¨ä¸çº§ååçè¯ãæä»¶åç¼å¯ä»¥æ¯<code>.html</code>æè <code>markdown</code>æè <code>textile</code>ãè¿éè¿æå¾å¤çä¾åï¼<a href="https://github.com/mojombo/jekyll/wiki/Sites">https://github.com/mojombo/jekyll/wiki/Sites</a></p> 284 285<h3>Jekyllçé ç½®</h3> 286 287<p>Jekyllçé ç½®åå¨_config.ymlæä»¶ä¸ï¼å¯é 置项æå¾å¤ï¼æä»¬ä¸å»ä¸ä¸è¿½ç©¶äºï¼å¾å¤é ç½®è½æç¨ä½æ¯ä¸è¬ä¸éè¦å»å ³å¿ï¼<a href="https://github.com/mojombo/jekyll/wiki/configuration">宿¹é ç½®ææ¡£</a>æå¾è¯¦ç»ç说æï¼ç¡®å®éè¦äºå¯ä»¥å»è¿éæ¥ï¼æä»¬ä¸»è¦è¯´ä¸¤ä¸ªæ¯è¾éè¦çä¸è¥¿ï¼ä¸ä¸ªæ¯<code>Permalink</code>ï¼è¿æå°±æ¯èªå®ä¹é¡¹ã</p> 288 289<p><code>Permalink</code>é¡¹ç¨æ¥å®ä¹ä½ æç»çæç« 龿¥æ¯ä»ä¹å½¢å¼ï¼ä»æä¸é¢å 个åéï¼</p> 290 291<ul> 292<li><code>year</code> æä»¶åä¸ç年份</li> 293<li><code>month</code> æä»¶åä¸çæä»½</li> 294<li><code>day</code> æä»¶åä¸çæ¥æ</li> 295<li><code>title</code> æä»¶åä¸çæç« æ é¢</li> 296<li><code>categories</code> æç« çåç±»ï¼å¦ææç« 没æåç±»ï¼ä¼å¿½ç¥</li> 297<li><code>i-month</code> æä»¶åä¸çé¤å»åç¼0çæä»½</li> 298<li><code>i-day</code> æä»¶åä¸çé¤å»åç¼0çæ¥æ</li> 299</ul> 300 301 302<p>ççæç»çé ç½®ææï¼</p> 303 304<ul> 305<li><code>permalink: pretty</code> /2009/04/29/slap-chop/index.html</li> 306<li><code>permalink: /:month-:day-:year/:title.html</code> /04-29-2009/slap-chop.html</li> 307<li><code>permalink: /blog/:year/:month/:day/:title</code> /blog/2009/04/29/slap-chop/index.html</li> 308</ul> 309 310 311<p>æä½¿ç¨çæ¯ï¼</p> 312 313<ul> 314<li><code>permalink: /:title</code> /github-pages</li> 315</ul> 316 317 318<p>èªå®ä¹é¡¹çå 容ï¼ä¾å¦æä»¬å®ä¹äº<code>title:BeiYuuçå客</code>è¿æ ·ä¸é¡¹ï¼é£ä¹ä½ å°±å¯ä»¥å¨æç« ä¸ä½¿ç¨<code>{ { site.title }}</code>æ¥å¼ç¨è¿ä¸ªåéäºï¼é常æ¹ä¾¿å®ä¹äºå ¨å±åéã</p> 319 320<h3>YAML Front Matter忍¡æ¿åé</h3> 321 322<p>对äºä½¿ç¨YAMLå®ä¹æ ¼å¼çæç« ï¼Jekyllä¼ç¹å«å¯¹å¾ ï¼ä»çæ ¼å¼è¦æ±æ¯è¾ä¸¥æ ¼ï¼å¿ é¡»æ¯è¿æ ·çå½¢å¼ï¼</p> 323 324<pre><code>--- 325layout: post 326title: Blogging Like a Hacker 327--- 328</code></pre> 329 330<p>ååç<code>---</code>ä¸è½çç¥ï¼å¨è¿ä¹é´ï¼ä½ å¯ä»¥å®ä¸äºä½ éè¦çåéï¼layoutå°±æ¯è°ç¨<code>_layouts</code>ä¸é¢çæä¸ä¸ªæ¨¡æ¿ï¼ä»è¿æä¸äºå ¶ä»çåéå¯ä»¥ä½¿ç¨ï¼</p> 331 332<ul> 333<li><code>permalink</code> ä½ å¯ä»¥å¯¹æä¸ç¯æç« 使ç¨éç¨è®¾ç½®ä¹å¤çæ°¸ä¹ é¾æ¥</li> 334<li><code>published</code> å¯ä»¥åç¬è®¾ç½®æä¸ç¯æç« æ¯å¦éè¦åå¸</li> 335<li><code>category</code> 设置æç« çåç±»</li> 336<li><code>tags</code> 设置æç« çtag</li> 337</ul> 338 339 340<p>ä¸é¢ç<code>title</code>å°±æ¯èªå®ä¹çå 容ï¼ä½ ä¹å¯ä»¥è®¾ç½®å ¶ä»çå 容ï¼å¨æç« ä¸å¯ä»¥éè¿<code>{ { page.title }}</code>è¿æ ·çå½¢å¼è°ç¨ã</p> 341 342<p>模æ¿åéï¼æä»¬ä¹å乿¶åäºä¸å°äºï¼è¿æå ¶ä»éè¦çåéï¼å¯ä»¥åè宿¹çææ¡£ï¼<a href="https://github.com/mojombo/jekyll/wiki/template-data" title="Jekyll Template Data">https://github.com/mojombo/jekyll/wiki/template-data</a></p> 343 344<h2>使ç¨Disqus管çè¯è®º</h2> 345 346<p>模æ¿é¨åå°æ¤å°±ç®æ¯é ç½®å®æ¯äºï¼ä½æ¯Jekyllåªæ¯ä¸ªéæé¡µé¢çåå¸ç³»ç»ï¼æ³åå°å ³ç½åºåæ¯å¾å®¹æï¼å¦ææ³è¦è¯è®ºå¢ï¼ä¹å¾ç®åã</p> 347 348<p>ç°å¨ä¸åè¯è®ºæ¨¡åç产åæå¾å¤ï¼æ¯å¦<a href="http://disqus.com/">Disqus</a>
348ï¼è¿æå½äº§ç<a href="http://duoshuo.com/">å¤è¯´</a>ï¼Disqus对ç°å¨åç§ç³»ç»çæ¯æé½æ¯è¾å ¨é¢ï¼å°åå客为æ¢ï¼å¤è¯´ç°å¨ä» æ¯WordPressçä¸ä¸ªæä»¶ï¼æä»¥æè¿éææ¶ä¹ä½¿ç¨ä¸äºï¼å¤è¯´ä¸å½å ç社交ç½ç»ç´§å¯ç»åï¼è¿æ¯æå¾å¤äº®ç¹çï¼å¼å¾æå¾ ä¸ä¸ãæå éæ©äºDisqusã</p> 349 350<p>注åè´¦å·ä»ä¹ç就䏿äºï¼Disqusæ¯æå¾å¤çå客平å°ï¼åè§ä¸å¾ï¼ 351<img src="/images/githubpages/disqus-site.jpg" alt="Disqus sites" /></p> 352 353<p>æä»¬éæ©æä¸é¢ç<code>Universal Code</code>就好ï¼ç¶åä¼çå°ä¸ä¸ªä»ç»é¡µé¢ï¼æä¸é¢è¿æ®µä»£ç å¤å¶å°ä½ çæ¨¡æ¿éé¢ï¼å¯ä»¥åªå¤å¶å°æ¾ç¤ºæç« çæ¨¡æ¿ä¸ï¼</p> 354 355<pre><code><div id="disqus_thread"></div> 356<script type="text/javascript"> 357 /* * * CONFIGURATION VARIABLES: EDIT BEFORE PASTING INTO YOUR WEBPAGE * * */ 358 var disqus_shortname = 'example'; // required: replace example with your forum shortname è¿ä¸ªå°æ¹éè¦æ¹æä½ é ç½®çç½ç«å 359 360 /* * * DON'T EDIT BELOW THIS LINE * * */ 361 (function() { 362 var dsq = document.createElement('script'); dsq.type = 'text/javascript'; dsq.async = true; 363 dsq.src = 'http://' + disqus_shortname + '.disqus.com/embed.js'; 364 (document.getElementsByTagName('head')[0] || document.getElementsByTagName('body')[0]).appendChild(dsq); 365 })(); 366</script> 367<noscript>Please enable JavaScript to view the <a href="http://disqus.com/?ref_noscript">comments powered by Disqus.</a></noscript> 368<a href="http://disqus.com" class="dsq-brlink">blog comments powered by <span class="logo-disqus">Disqus</span></a> 369</code></pre> 370 371<p>é ç½®å®ä¹åï¼ä½ ä¹å¯ä»¥åä¸äºå¼æ¥å è½½çå¤çï¼æé«æ§è½ï¼æ¯å¦æå°±å¨æå¼å§é¡µé¢æå¼çæ¶å䏿¾ç¤ºè¯è®ºï¼å½ä½ æ³çè¯è®ºçæ¶åï¼ç¹å»âæ¾ç¤ºè¯è®ºâåå è½½Disqusçæ¨¡åã代ç å¾ç®åï¼ä½ å¯ä»¥åèæçåæ³ã</p> 372 373<pre><code>$('#disqus_container .comment').on('click',function(){ 374 $(this).html('å è½½ä¸...'); 375 var disqus_shortname = 'beiyuu'; 376 var that = this; 377 BYB.includeScript('http://' + disqus_shortname + '.disqus.com/embed.js',function(){$(that).remove()}); //è¿æ¯ä¸ä¸ªå è½½jsç彿° 378}); 379</code></pre> 380 381<p>å¦æä½ ä¸å欢Disqusçæ ·å¼ï¼ä½ ä¹å¯ä»¥æ ¹æ®ä»çæçHTMLç»æï¼èªå·±æ¹åæ ·å¼è¦çå®çï¼Disqusç°å¨ä¹æä¾æ¯ä¸ªé¡µé¢çè¯è®ºæ°æ¥å£ï¼<a href="http://docs.disqus.com/developers/universal/">å¸®å©ææ¡£</a>å¨è¿éå¯ä»¥çå°ã</p> 382 383<h2>代ç é«äº®æä»¶</h2> 384 385<p>妿忿¯å客ï¼ä»£ç é«äº®å°ä¸äºï¼æä¸¤ä¸ªå¯éæä»¶<a href="http://mihai.bazon.net/projects/javascript-syntax-highlighting-engine">DlHightLight代ç é«äº®ç»ä»¶</a>å<a href="http://code.google.com/p/google-code-prettify/">Google Code Prettify</a>ãDLHightLightæ¯æçè¯è¨ç¸å¯¹è¾å°ä¸äºï¼æjsãcssãxmlåhtmlï¼Googleçé«äº®æä»¶åºæ¬ä¸ä»»ä½è¯è¨é½æ¯æï¼ä¹å¯ä»¥èªå®ä¹è¯è¨ï¼ä¹æ¯æèªå¨è¯å«ï¼ä¹æè¡å·çç¹å«æ¯æã</p> 386 387<p>Googleçé«äº®æä»¶ä½¿ç¨ä¹æ¯è¾æ¹ä¾¿ï¼åªéè¦å¨<code><pre></code>çæ ç¾ä¸å å ¥<code>prettyprint</code>å³å¯ãæä»¥æéæ©äºGoogle Code Prettifyã</p> 388 389<h2>æå»ºæ¬å°jekyllç¯å¢</h2> 390 391<p>è¿é主è¦ä»ç»ä¸ä¸å¨Mac OS Xä¸é¢çå®è£ è¿ç¨ï¼å ¶ä»æä½ç³»ç»å¯ä»¥åè宿¹ç<a href="https://github.com/mojombo/jekyll/wiki/Install">jekyllå®è£ </a>ã</p> 392 393<p>ä½ä¸ºçæ´»å¨æ°´æ·±ç«ççå¢å 人æ°ï¼æå¿ è¦è¿è¡ä¸é¢ä¸æ¥ä¿®æ¹gemçæºï¼æ¹ä¾¿æä»¬æ´å¿«çä¸è½½æéç»å»ºï¼</p> 394 395<pre><code>sudo gem sources --remove http://rubygems.org/ 396sudo gem sources -a http://ruby.taobao.org/ 397</code></pre> 398 399<p>ç¶åç¨Gemå®è£ jekyll</p> 400 401<pre><code>$ gem install jekyll 402</code></pre> 403 404<p>ä¸è¿ä¸è¬å¦ææåºéæç¤ºï¼ä½ å¯è½éè¦è¿æ ·å®è£ ï¼</p> 405 406<pre><code>$ sudo gem install jekyll 407</code></pre> 408 409<p>æå°äºè¿ä¸æ¥çæ¶åæ»æ¯æç¤ºé误<code>Failed to build gem native extension</code>ï¼å¾å¯è½çä¸ä¸ªåå æ¯æ²¡æå®è£ rvmï¼<a href="https://rvm.io/rvm/install/">rvmçå®è£ </a>å¯ä»¥åèè¿éï¼æè æ²å ¥ä¸é¢çå½ä»¤ï¼</p> 410 411<pre><code>$ curl -L https://get.rvm.io | bash -s stable --ruby 412</code></pre> 413 414<p>ç¶åè¿éè¦å®è£ Markdownçè§£éå¨ï¼è¿ä¸ªéè¦å¨ä½ ç_config.ymléé¢è®¾ç½®<code>markdown:rdiscount</code>ï¼</p> 415 416<pre><code>$ gem install jekyll rdiscount 417</code></pre> 418 419<p>好äºï¼å¦æä¸å顺å©çè¯ï¼æ¬å°ç¯å¢å°±åºæ¬æå»ºå®æäºï¼è¿å ¥ä¹åæä»¬å»ºç«çå客ç®å½ï¼è¿è¡ä¸é¢çå½ä»¤ï¼</p> 420 421<pre><code>$ jekyll --server 422</code></pre> 423 424<p>è¿ä¸ªæ¶åï¼ä½ å°±å¯ä»¥éè¿<code>localhost:4000</code>æ¥è®¿é®äºãè¿æå ³äº<a href="http://jekyllbootstrap.com/">jekyll bootstrap</a>çèµæï¼éè¦èªå·±ä¿®æ¹è°è¯çï¼å¯ä»¥ç ç©¶ä¸ä¸ã</p> 425 426<p>æå¨è¿ä¸ªè¿ç¨ä¸è¿éå°ä¸¤ä¸ªè¯¡å¼ç没æè§£å³çé®é¢ï¼ä¸ä¸ªæ¯ææ¾å¨æ ¹ç®å½ä¸é¢çblog.mdçæä»¶ï¼å¨GitHubçpagesæå¡ä¸ä¸åæ£å¸¸ï¼å¯ä»¥éè¿<code>beiyuu.com/blog</code>访é®çå°ï¼ä½æ¯å¨æ¬å°ç¯å¢ä¸ï¼æ»æ¯<code>not found</code>ï¼å¾æ¯è®©äººéé·ï¼ççæç<code>_site</code>ç®å½ä¸é¢çæä»¶ï¼ä¹æ¯æ£å¸¸ç<code>blog.html</code>ï¼ä½å°±æ¯æ¾ä¸å°ï¼åªæå½ææURLæ¹ä¸º<code>localhost:4000/blog.html</code>çæ¶åï¼æè½è®¿é®çå°ï¼ç¯å¢ä¸åçç³ç³ã</p> 427 428<p>è¿æä¸ä¸ªæ¯å ³äº<code>category</code>çé®é¢ï¼æ ¹æ®<code>YAML</code>çè¯æ³ï¼æä»¬å¨æç« 头é¨å¯ä»¥å®ä¹æç« æå±çç±»å«ï¼ä¹å¯ä»¥å®ä¹ä¸º<code>category:[blog,rss]</code>è¿æ ·åçå¤ç±»å«ï¼æå¨æ¬å°è¯ä¸åæ£å¸¸ï¼ä½æ¯pushå°GitHubä¹åï¼å°±æ æ³è¯»åäºï¼çè®©äººçæ¥ï¼æ²¡æåæ³ï¼åªè½éç¨å«çåæ³æ»¡è¶³æçéæ±äºãè¿éè¿æä¸ç¯<a href="http://chxt6896.github.com/blog/2012/02/13/blog-jekyll-native.html">Jekyll æ¬å°è°è¯ä¹è¥å¹²é®é¢</a>ï¼å®è£ ä¸å¦ææå ¶ä»é®é¢ï¼ä¹å¯ä»¥å¯¹ç §åèä¸ä¸ã</p> 429 430<h2>ç»è¯</h2> 431 432<p>å¦æä½ è·çè¿ç¯ä¸é£ä¹è¯¦å°½çæç¨ï¼æåæå»ºäºèªå·±çåå®¢ï¼æåä½ ï¼å©ä¸çå°±æ¯ä¿æçæ çå»åèªå·±çæç« å§ã</p> 433 434 435 <div id="disqus_container"> 436 <div style="margin-bottom:20px" class="right"> 437
437<script type="text/javascript" charset="utf-8"> 438 (function(){ 439 var _w = 86 , _h = 16; 440 var param = { 441 url:location.href, 442 type:'6', 443 count:'', /**æ¯å¦æ¾ç¤ºå享æ°ï¼1æ¾ç¤º(å¯é)*/ 444 appkey:'', /**æ¨ç³è¯·çåºç¨appkey,æ¾ç¤ºåäº«æ¥æº(å¯é)*/ 445 title:'', /**å享çæåå 容(å¯éï¼é»è®¤ä¸ºæå¨é¡µé¢çtitle)*/ 446 pic:'', /**å享å¾ççè·¯å¾(å¯é)*/ 447 ralateUid:'1855270953', /**å ³èç¨æ·çUIDï¼å享微åä¼@è¯¥ç¨æ·(å¯é)*/ 448 language:'zh_cn', /**设置è¯è¨ï¼zh_cn|zh_tw(å¯é)*/ 449 rnd:new Date().valueOf() 450 } 451 var temp = []; 452 for( var p in param ){ 453 temp.push(p + '=' + encodeURIComponent( param[p] || '' ) ) 454 } 455 document.write('<iframe allowTransparency="true" frameborder="0" scrolling="no" src="http://hits.sinajs.cn/A1/weiboshare.html?' + temp.join('&') + '" width="'+ _w+'" height="'+_h+'"></iframe>') 456 })() 457 </script>
457 458 </div> 459 <a href="#" class="comment" onclick="return false;">ç¹å»æ¥çè¯è®º</a> 460 <div id="disqus_thread"></div> 461 </div> 462 </div> 463 464 <div class="sidenav"> 465 <iframe width="100%" height="75" class="share_self" frameborder="0" scrolling="no" src="http://widget.weibo.com/weiboshow/index.php?language=&width=0&height=75&fansRow=2&ptype=1&speed=0&skin=5&isTitle=0&noborder=0&isWeibo=0&isFans=0&uid=1855270953&verifier=375b89d6&dpc=1"></iframe> 466 </div> 467 468 <div class="sidenav"> 469 <h2>Blog</h2> 470 <ul class="artical-list"> 471 472 <li><a href="/blog/skynet">äºé£skynetæ¡æ¶ç ç©¶</a></li> 473 474 <li><a href="/blog/github-pages">使ç¨Github Pages建ç¬ç«å客</a></li> 475 476 <li><a href="/blog/why-blog">æä¸ºä»ä¹åå客ï¼</a></li> 477 478 </ul> 479 480 <h2>Opinion</h2> 481 <ul class="artical-list"> 482 483 </ul> 484 485 <h2>Project</h2> 486 <ul class="artical-list"> 487 488 </ul> 489 </div> 490</div> 491
492<script src="/js/post.js" type="text/javascript"></script>
492 493 494 495 <div class="hide"> 496
496<script type="text/javascript">var cnzz_protocol = (("https:" == document.location.protocol) ? " https://" : " http://");document.write(unescape("%3Cspan id='cnzz_stat_icon_5913314'%3E%3C/span%3E%3Cscript src='" + cnzz_protocol + "s4.cnzz.com/stat.php%3Fid%3D5913314' type='text/javascript'%3E%3C/script%3E"));</script>
496 497 </div> 498
498<script type="text/javascript"> 499 $(function(){ 500 $('.home-follow').click(function(e){ 501 e.preventDefault(); 502 503 if($('.home-contact').is(':visible')){ 504 $('.home-contact').slideUp(100); 505 }else{ 506 $('.home-contact').slideDown(100); 507 } 508 }); 509 }) 510 </script>
510 511</body> 512</html>
Line numbers count LF bytes from the start of the resource, as the search results do. Vendor segments are library code the classifier recognised; they are stored but not indexed. Bytes are shown as Latin1 characters, one per byte.