#+TITLE: Blog with Org Mode
#+AUTHOR: Peng Li
#+EMAIL: seudut@gmail.com
-#+DATE: 2016-10-26
+#+DATE: <2016-10-26>
#+STARTUP: showall
#+STARTUP: inlineimages
#+OPTIONS: toc:nil date:t
+[[http://orgmode.org][Org-mode]] is an Emacs package, which is used for keeping notes, maintaining TODO lists, planing projects, and authoring
+ documents with a fast and effective plain-text system. In this blog, I am going to introduce how to setup a blog site
+ using Org-mode. As you can see, this website is generated by Org-mode. All the souce code is located at [[https://github.com/seudut/blog][blog]]. It has
+ refered to lots of other websites, like [[http://orgmode.org/worg/][worg]], [[http://orgmode.org/worg/org-tutorials/org-publish-html-tutorial.html][Publishing Org-mode files to HTML]], [[https://ogbe.net/blog/blogging_with_org.html][Blogging using org-mode (and nothing else)]].
-
-
-今天总算把 Blog 的框架大致弄好了。主要参考了 =Org-mode= 的 tutorial, [[http://orgmode.org/worg/org-tutorials/org-publish-html-tutorial.html#Special-comment-section][Publishing Org-mode files to HTML]] 和 [[https://ogbe.net/blog/blogging_with_org.html][Blogging using org-mode (and
-nothing else)]]。 其中 =css= , 利用的是 =worg.css=, 并参考了[[http://dayigu.github.io/WhyUseOrgModeToWriteBlog.html][为什么用org-mode写 blog?]] 和 [[http://wiki.houye.xyz/blogwithorg-mode.html][用org-mode写博客]]。
-
-* Org-publish 配置
-其中有些配置可能是 =Org= 版本不同的原因,有些不同。比如 =htlm-head=, 代替 了 =style=
-#+BEGIN_SRC emacs-lisp :tangle yes :results silent
- (require 'ox-publish)
-
- (setq org-publish-project-alist
- `(
- ("org-notes"
- :base-directory "~/Private/blog/"
- :base-extension "org"
- :publishing-directory "~/Private/publish_html"
- :recursive t
- :publishing-function org-html-publish-to-html
- :headline-levels 4
- :section-numbers nil
- :auto-preamble t
- :auto-sitemap t ;Generate sitmap.org automagicaly...
- :sitemap-filename "sitemap.org" ;... call it sitemap.org (it's the default )...
- :sitemap-title "Sitemap"
-
- :table-of-contents nil
- :html-postamble nil ;dont export creator auto validation info in html postamble div
- :html-link-home "/"
- :html-head "<link rel='stylesheet' href='./css/org.css' />"
- ;; :html-head-extra ,my-blog-extra-head
- :html-head-include-default-style nil
- :html-head-include-scripts nil)
- ("org-static"
- :base-directory "~/Private/blog/"
- :base-extension "css\\|js\\|png\\|gif\\|pdf\\|mp3\\|ogg\\|swf"
- :publishing-directory "~/Private/publish_html"
- :recursive t
- :publishing-function org-publish-attachment)
- ("org" :components ("org-notes" "org-static"))))
-#+END_SRC
-
+* Org-publish configure
+Here is the configure of Org-publish (=my-publish.el= in the source code). It setups the most important variable
+=org-publish-project-alist=. Also, it defines the header and footer of the html page.
+#+INCLUDE: "../my-publish.el" src emacs-lisp :lines "29-"
#+BEGIN_SRC sh
sudo aptitude install tmux emacs
#+END_SRC
+
+
* CI build
+Here is the =Makefile= in the source code.
+#+INCLUDE: "../Makefile" src makefile :lines "2-"
+
* Web server
-* CGI update
+* Crontab
+Here is the crontab on my VPS. It updates the source code of blog and generates the web pages every 30 minutes.
+#+BEGIN_SRC sh
+ # m h dom mon dow command
+ */30 * * * * cd /home/seudut/blog && make publish OUTDIR="~/www/html/" emacs=/usr/local/bin/emacs UPDATE=true
+#+END_SRC