Jekyll 生成的網(wǎng)站是靜態(tài)的,因此有很多種部署方法。下面列出了一些常見的部署方法。
傳統(tǒng)的網(wǎng)絡(luò)托管服務(wù)商允許你使用 FTP 上傳文件到他們的服務(wù)器。想通過 FTP 上傳一個(gè) Jekyll 站點(diǎn),只需要運(yùn)行 jekyll
命令然后復(fù)制生成的 _site
目錄到你的托管賬號(hào)根目錄。多數(shù)托管服務(wù)商的跟目錄會(huì)是 httpdocs
或 public_html
目錄。
有一個(gè)叫 Glynn 的項(xiàng)目,可以幫助你簡(jiǎn)單的生成 Jekyll 站點(diǎn)并通過 FTP 發(fā)送到你的主機(jī)。
如果你能夠直接連接到部署的網(wǎng)絡(luò)服務(wù)器,你可能有其它的方法傳輸文件 (如 scp
,或者直接操作文件系統(tǒng)),而其它過程都一樣。要記住保證生成的 _site
目錄放到網(wǎng)絡(luò)服務(wù)器正確的根目錄下。
也有一些自動(dòng)化部署 Jekyll 站點(diǎn)的方法。下面列出了幾種,如果你還有其它的,歡迎貢獻(xiàn),這樣其它人就也能知道它了。
如果你使用 Git 管理你的 jekyll 站點(diǎn),自動(dòng)化部署非常簡(jiǎn)單,只需要給你的 Git 倉(cāng)庫(kù)設(shè)置一個(gè) post-update 鉤子,就像這樣
要讓一個(gè)遠(yuǎn)程服務(wù)器在你每次用 Git 推送修改時(shí)進(jìn)行部署,可以創(chuàng)建一個(gè)擁有所有要部署機(jī)器公鑰的賬號(hào),然后設(shè)置 post-receive 鉤子,其余的跟上面方法一樣。
laptop$ ssh deployer@example.com
server$ mkdir myrepo.git
server$ cd myrepo.git
server$ git --bare init
server$ cp hooks/post-receive.sample hooks/post-receive
server$ mkdir /var/www/myrepo
接著, 添加下面的代碼到 hooks/post-receive ,并保證服務(wù)器上已安裝 Jekyll:
GIT_REPO=$HOME/myrepo.git
TMP_GIT_CLONE=$HOME/tmp/myrepo
PUBLIC_WWW=/var/www/myrepo
git clone $GIT_REPO $TMP_GIT_CLONE
jekyll build -s $TMP_GIT_CLONE -d $PUBLIC_WWW
rm -Rf $TMP_GIT_CLONE
exit
最后, 在任意可以通過此鉤子部署的用戶機(jī)器上運(yùn)行下面的命令:
laptops$ git remote add deploy deployer@example.com:~/myrepo.git
剩下的就是告訴 nginx 或 Apache 監(jiān)聽 /var/www/myrepo
目錄,然后運(yùn)行下面的命令:
laptops$ git push deploy master
另一個(gè)部署 Jekyll 站點(diǎn)的方法是使用 Rake,HighLine,和 Net::SSH。一個(gè)比較復(fù)雜的使用 Rake 部署多個(gè)分支的例子可以參考 Git Ready。
假如你已經(jīng)生成了 _site
目錄,就可以使用一個(gè)像 部署腳本 這樣的 shell 腳本 tasks/deploy
rsync 到服務(wù)器了。當(dāng)然需要修改你的站點(diǎn)相應(yīng)的值。甚至還有 一個(gè) TextMate 匹配命令 可以幫你在 Textmate 中運(yùn)行這個(gè)腳本。 this script from within Textmate.
Rack-Jekyll 是一個(gè)部署站點(diǎn)到任意 Rack 服務(wù)的簡(jiǎn)單方法,如 Amazon EC2, Slicehost, Heroku 等。它也可以 shotgun, rackup, mongrel, unicorn, and others 一起運(yùn)行。
可以閱讀 這篇文章 了解如何使用 Rack-Jekyll 部署到 Heroku 。
如果想在 Rails 中維護(hù) Jekyll 站點(diǎn),Jekyll-Admin 包含了實(shí)現(xiàn)此功能直接可用的代碼。詳細(xì)可查看 Jekyll-Admin 的 README 。
如果要在 Amazon S3 上托管你的站點(diǎn),可以使用 s3_website 。它會(huì)推送你的站點(diǎn)到 Amazon S3 上,Amazon S3 跟任意網(wǎng)絡(luò)服務(wù)器一樣,卻能夠動(dòng)態(tài)擴(kuò)容到幾乎無限流量。這種方式適用小流量博客站點(diǎn),因?yàn)槟阒恍枰獮槟闶褂玫牧髁扛顿M(fèi)。
如果你希望將網(wǎng)站部署到 OpenShift gear 上面,這里有一份教程 一份教程。
ProTip?: 使用 GitHub Pages 零麻煩托管
GitHub Pages 內(nèi)部由 Jekyll 驅(qū)動(dòng), 所以如果你想找個(gè)零麻煩、零花費(fèi)解決方案,Github Pages 是托管 Jekyll 驅(qū)動(dòng)站點(diǎn)的首選。