說起獨立博客的技術演變,從數據庫到純文本放git是一大進步,從HTML到markdown又是一大進步。
解析技術有沒有進步呢?既然markdown是純文本了,再用PHP/Python/Ruby去實時解析,多么多此一舉啊(比如github用的Jekyll),還需要配置服務器環境。如果用shell把markdown轉換成HTML,生成純靜態博客多么愉快,無需服務器,直接放到雲存儲CDN上,飛快!
先看療效!openwrt.io就是這么一個純靜態網站,網址:http://openwrt.io/,代碼在coding上:https://coding.net/u/openwrtio/p/portal/git。

打造這么一個酷炫的博客需要幾步?
只需要兩步,比把大象放進冰箱里還要簡單^_^
第一步:把代碼提交coding
注冊登錄 coding.net,fork或創建一個項目,比如blog,代碼:https://coding.net/u/openwrtio/p/portal/git/tree/1.0.0/,修改其中的docs/index.md即為博客首頁,然后提交,打tag(比如0.1.0),push。指令如下:
git clone xxx cd xxx wget -O blog.zip https://coding.net/u/openwrtio/p/portal/git/archive/1.0.0 unzip blog.zip rm blog.zip echo "Hello! 樹先生" > docs/index.md git add . git commit -m 'first commit' git push origin master git tag -a 0.1.0 -m 'first commit' git push --tags
第二步:使用daocloud自動構建和部署
打開daocloud.io,創建一個項目,“設置代碼源”為剛才提交coding的項目即可,將觸發自動構建。等待構建完成,即生成了一個debian系統鏡像,點“查看鏡像”——》“部署”——》“基礎設置”——》“立即部署”,即可。daocloud會贈送一個子域名,訪問即可看到博客已經跑起來了。建議購買一個自己的域名,CNAME綁定即可,比如dnspod域名注冊服務。



構建的過程為什么這么漫長?
請看這個文件: https://coding.net/u/openwrtio/p/portal/git/blob/1.0.0/Dockerfile
FROM nginx MAINTAINER sinkcup <sinkcup@163.com> RUN apt-get update -qq RUN apt-get upgrade -y RUN apt-get install -y python-pip RUN pip install mkdocs RUN mkdir -p /usr/share/nginx/html/portal ADD . /usr/share/nginx/html/portal/ RUN cd /usr/share/nginx/html/portal/ && \ mkdocs build RUN rm -f /etc/nginx/conf.d/* ADD nginx/conf.d /etc/nginx/conf.d/
可以看到每次構建都需要apt-get升級、安裝環境、安裝mkdocs,最后用mkdocs生成HTML。前面幾個步驟每次都一樣,那就想辦法重用即可。
把Dockerfile改成兩個,一個是每次都不變的服務器環境:
FROM nginx MAINTAINER sinkcup <sinkcup@163.com> RUN apt-get update -qq RUN apt-get upgrade -y RUN apt-get install -y python-pip RUN pip install mkdocs RUN cd /usr/share/nginx/html/ && \ mkdocs new demo RUN cd /usr/share/nginx/html/demo && \ mkdocs build RUN rm -f /etc/nginx/conf.d/* ADD nginx/conf.d /etc/nginx/conf.d/
我把它提交到了github(https://github.com/sinkcup/docker-library-nginx-mkdocs),然后注冊登錄docker.com,創建一個項目,選擇來自github的代碼(https://registry.hub.docker.com/u/sinkcup/nginx-mkdocs/),構建成功,生成的鏡像是 sinkcup/nginx-mkdocs:0.1.0。
daocloud的Dockerfile里直接使用這個docker鏡像即可,從此構建飛快!代碼如下:
FROM sinkcup/nginx-mkdocs:0.1.0 MAINTAINER sinkcup <sinkcup@163.com> ADD . /usr/share/nginx/html/portal RUN cd /usr/share/nginx/html/portal/ && \ mkdocs build RUN rm -f /etc/nginx/conf.d/* ADD nginx/conf.d /etc/nginx/conf.d/
完整代碼在 https://coding.net/u/openwrtio/p/portal/git/tree/1.1.0/,這是一個開源項目,歡迎fork一起協作。
mkdocs文檔在:http://www.mkdocs.org/
