1. Why bother to do it?
Well, I love Scheme. That's all.
OK, seriously, Scheme is cool enough to hassle, especially after you've learned SICP.
2. Preparetion
2.1 Which implementation?
I picked GNU Guile Scheme for the work. Because it appears in almost every GNU/Linux distro.
But you may need to install Guile2 rather than Guile-1.8:
sudo apt-get install guile-2.0
2.2 How about the blog engine?
- Hey! I'll shut this page if you tell me to output HTML with bunch of `display' calling! - Don't worry, we're not going that way.
Here's a nice blog engine provided by Andy Wingo, Tekuti is its name. Tekuti is a Git based blog engine, so there's no more SQL-injection risk. All the data are handled by Git on the server side.
I know many folks like to build their blog on github nowadays. All you need is a static-page-generator, I could write another tutorial for this on Scheme too! But you don't have to use github if you've already had a VPS, right?
Anyway, this blog is built with Tekuti.
I suggest you try my fork of Tekuti, it's easier to use:
git clone http://github.com/NalaGinrut/nala-tekuti.git
And compile then install it:
./configure && make && sudo make install
3. Configuration
3.1 Tekuti config
You have to modify your own config file.
cd nala-tekuti/tekuti cp config.template config.scm emacs config.scm
There're several items in config.scm, but the most significant is `*admin-user*' and `*admin-pass*'. Change them to your prefered admin name and passwd. And you may modify others as you wish.
3.2 Nginx config
Although Tekuti can run independently with its own inner-server, it's better to take advantage of reverse-proxy in Nginx, rather than disposing 8080 port to internet.
You may add these line to your /etc/nginx/nginx.conf:
location /blog { proxy_pass http://127.0.0.1:8080; proxy_set_header Host $host; proxy_set_header X-Real-IP $remote_addr; proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; }
Then restart you Nginx:
sudo service nginx restart
4. Run your blog
Now you can start you blog engine:
sudo service tekuti start
Then visit the site http://your_domain_name/blog if you're lucky enough ;-)
Happy hacking!