原文連接:http://tabalt.net/blog/make-b...node
GitHub Pages搭建的網站,在百度搜索引擎訪問的時候,常常性的會返回 403 forbidden
,從而百度會認爲網站訪問不穩定,對網站降權,甚至K站。c++
要想解決這個問題,只有買個VPS本身撘一個jekyll解析博客了。可是個人域名沒有備案,單純用國外的VPS,用戶訪問起來也會有慢的問題,畢竟Github Pages的CDN仍是很牛逼的(頁面響應時間200ms左右)。那有沒有什麼辦法,讓百度爬蟲去抓國外VPS上的內容,普通用戶直接訪問Github Pages呢?git
如今科技這麼發達,這玩意固然是小Case啦。通常大公司內的域名解析是能夠按省、運營商等來作的;你們經常使用的DNSPOD也支持這麼牛逼的功能,免費用戶能夠 按電信、聯通、教育網、百度、搜索引擎等分別設置解析,付費用戶能夠分省、分國家、分大洲等等。對於個人小博客來講,免費的就很是夠用了。github
下面是個人折騰過程,記錄下來備忘。web
編譯安裝Node.jsnpm
Jekyll是基於Ruby開發的,用到了Ruby的execjs方法來執行JavaScript代碼,而這須要本身指定一個JavaScript runtime;這裏咱們選擇安裝Node.js。ruby
sudo yum install libtool automake autoconf gcc-c++ openssl-devel wget mkdir ~/soft/ cd ~/soft/ wget http://nodejs.org/dist/v0.12.4/node-v0.12.4.tar.gz tar -zxvf node-v0.12.4.tar.gz cd node-v0.12.4 ./configure --prefix=/usr make && sudo make install node -v npm -v
安裝Ruby、RubyGems服務器
sudo yum install ruby ruby-devel gem
使用RubyGems安裝Jekylldom
gem install jekyll
克隆博客代碼工具
sudo yum install git sudo mkdir -p ~/mydomain.com/ git clone https://github.com/username/username.github.io.git ./
定時更新博客代碼
配置crontab 2分鐘pull一下代碼:
crontab -e # 添加下面的代碼: */2 * * * * cd ~/mydomain.com/; git pull >> /tmp/github_blog_pull_record.log 2>&1;
啓動博客站點
Jekyll 2.4 版本以後,會關注文件的變更,自動從新生成靜態文件。使用--detach
參數指定在後臺執行,--port
指定端口,--host
指定當前機器的外網ip。
cd ~/mydomain.com/ jekyll serve --port 80 --host 192.168.1.101 --detach
綁host 測試,能正常訪問則搭建完成。更多Jekyll的用法能夠參考文檔: http://jekyllrb.com/docs/usage/ 。
使用web服務器Nginx
使用前述方式啓動的http服務,會獨佔這臺服務器的 80
端口,若是這臺機器還需部署其餘的web站點,則不得不使用其餘非80的端口。
使用Nginx能夠解決這個問題,配置一個Nginx的vhost,可使用jekyll build --watch &
生成博客的靜態內容,並將站點根目錄設置爲 ~/mydomain.com/_site/
,這裏不作具體介紹了。
登陸DNSPOD,進入域名解析的設置頁面,添加一條針對百度的解析:
以上步驟作完後,再用百度的抓取工具測試,就能正常抓取到內容了。
我作完後次日,本來剩下的8條收錄,立馬變成了1條。固然這個是能夠理解的,畢竟是忽然換了個ip,多發發文章和外鏈,恢復收錄和權重是遲早的事。另外我這個vps在國內訪問仍是有點慢,首次請求返回要500ms左右,仍是得把域名備案了,在國內弄個雲主機才行。