CMake variables
===============
CMAKE_INSTALL_PREFIX
In addition to standard CMake variables, the following can be set to tweak
blahgd's behavior:
DEFAULT_SCGI_PORT - default port to listen on for SCGI requests
DEFAULT_HTML_INDEX_STORIES
- default number of posts per page (index,
archive)
DEFAULT_FEED_INDEX_STORIES
- default number of posts per page (Atom/RSS
feeds)
DEFAULT_COMMENT_MAX_THINK
- default maximum number of seconds of think
time after which a submission is
considered a spam
DEFAULT_COMMENT_MIN_THINK
- default minimum number of seconds of think
time before which a submission is
considered a spam
DEFAULT_DATA_DIR - default path to the data directory
DEFAULT_THEME_DIR - default path to the theme directory
VAR_MAX_SCOPES - maximum number of internal scopes
VAR_NAME_MAXLEN - maximum length of a variable name
COND_STACK_DEPTH - template engine function stack size
DEFAULT_TAGCLOUD_MIN_SIZE
- default min font size of tag cloud entries
DEFAULT_TAGCLOUD_MAX_SIZE
- default max font size of tag cloud entries
PREVIEW_SECRET - key used to previewing unpublished posts
Dependencies
============
To build blahgd you must have:
- gcc/clang or other C99 compiler with compatible arguments
- flex & bison
- libjeffpc (http://hg.31bits.net/libjeffpc/)
Building and Installing
=======================
$ cmake . -DCMAKE_INSTALL_PREFIX=/prefix
$ make
$ make install
This will install the binaries under the specified prefix.
Note: If libjeffpc is not installed in a location that's part of the
compiler and linker search path, you'll have to give cmake a hint where to
find it. You do this by defining these as necessary:
- WITH_JEFFPC_LIB=x - directory containing libjeffpc.so
- WITH_JEFFPC_INCLUDES=x - directory containing jeffpc/jeffpc.h
- WITH_JEFFPC=x - same as setting WITH_JEFFPC_LIB=x/lib and
WITH_JEFFPC_INCLUDES=x/include
For example:
$ cmake . -DWITH_JEFFPC=/opt/jeffpc <...other cmake args...>
Running
=======
You can start the blahg daemon (blahgd):
$ ./blahgd
At this point, blahgd is listening on port 2014 for SCGI connections. Now,
you need to configure your webserver to pass requests to blahgd. For example,
for nginx, use a config stanza similar to:
server {
listen 80;
server_name blahg.example.com;
location / {
include scgi_params;
scgi_pass localhost:2014;
}
}
The scgi_params file should include:
scgi_param REQUEST_METHOD $request_method;
scgi_param REQUEST_URI $request_uri;
scgi_param QUERY_STRING $query_string;
scgi_param CONTENT_TYPE $content_type;
scgi_param DOCUMENT_URI $document_uri;
scgi_param DOCUMENT_ROOT $document_root;
scgi_param SCGI 1;
scgi_param SERVER_PROTOCOL $server_protocol;
scgi_param HTTPS $https if_not_empty;
scgi_param REMOTE_ADDR $remote_addr;
scgi_param REMOTE_PORT $remote_port;
scgi_param SERVER_PORT $server_port;
scgi_param SERVER_NAME $server_name;