site  contact  subhomenews

First blog post, shellCMS

November 16, 2017 — MrPerson

There are two installations of shellCMS on this computer, at ~/.shellcms/www and ~/.shellcms/www/news. The former is configured as a documentation CMS (Content Management System), the latter as a blog.

This is an arbitrary choice, a site can have any number of shellCMS installations, nested or otherwise.

A local installation of shellCMS is for creating and editing posts. At any time, the local site can be uploaded to a remote site. shellCMS is just static HTML pages, so uploading is just a matter of using ftp or rsync.

shellCMS is run by shell scripts, that are located in /usr/local/shellcms. The main script is /usr/local/shellcms/shellcms, a CLI (commandline) app. There is also remotesync, mozeditor and shellcmsgui. These scripts are also linked from /usr/local/bin.

As the name suggests, remotesysnc is for uploading to a remote site. Script mozeditor is a wrapper for SeaMonkey Composer WYSIWYG HTML editor, and is called from shellcms. Script shellcmsgui is a GUI frontend.

Blog posts are filed by date, in folders named "yyyymm". This post is filed as ~/.shellcms/www/news/201711/first-blog-post-shellcms.htmraw. The published post, with header, footer and layout, is ~/.shellcms/www/news/first-blog-post-shellcms.html.

As shown in the first documentation post, each post may have images. For this post, there is folder ~/.shellcms/www/news/201711/images, so create a relative link "images/image-name.png"

Documentation posts have just one category, however, blog posts may have more than one. if you had, for example, categories "linux" and "puppy", you could post to both.

A useful technical detail: Configuration settings are managed via the GUI frontend, however, you can also directly edit the configuration files. The script /usr/local/shellcms/shellcms has default variables, any of which can be overridded by ~/.shellcms/www/news/cms_config/config (or, for the documentation CMS, ~/.shellcms/www/cms_config/config).

In fact, everything can be done from the commandline, if you have an aversion to the GUI frontend. For example, to create a new post to this blog, and upload to a remote site:
# cd ~/.shellcms
# shellcms www/news post
# remotesync www/news
...quite simple!

Tags: admin