Hiawatha installation with Nibbleblog
Here's the steps I took to install the Hiawatha web server along with Nibbleblog
1. Install the Anku CentOS & Fedora repos:
yum install http://anku.ecualinux.com/20/x86_64/anku-release-8-1.noarch.rpm -y
2. Now install the hiawatha package:
yum install hiawatha -y
3. Make Hiawatha start on boot:
chkconfig hiawatha on
4. Add a Hiawatha user:
useradd -s /sbin/nologin -M hiawatha
5. Edit the config file /etc/hiawatha/hiawatha.conf
and add a VirtualHost to host our website:
VirtualHost {
Hostname = www.domain1.com
WebsiteRoot = /var/www/domain1
StartFile = index.php
AccessLogfile = /var/log/hiawatha/domain1-access.log
ErrorLogfile = /var/log/hiawatha/domain1-error.log
TimeForCGI = 5
UseFastCGI = PHP5
UseToolkit = nibbleblog
}
Now find this section:
#FastCGIserver {
# FastCGIid = PHP5
# ConnectTo = 127.0.0.1:2005
# Extension = php
#}
Change it to:
FastCGIserver {
FastCGIid = PHP5
ConnectTo = /var/lib/hiawatha/php-fcgi.sock
Extension = php
}
Add the rewrite rules necessary for nibbleblog:
UrlToolkit {
ToolkitID = nibbleblog
Match ^/admin$ Rewrite /admin.php?controller=user&action=login
Match ^/category/([^/]+)/page-([0-9]+)$ Rewrite /index.php?controller=blog&action=view&category=$1&number=$2
Match ^/category/([^/]+)/$ Rewrite /index.php?controller=blog&action=view&category=$1&number=0
Match ^/page-([0-9]+)$ Rewrite /index.php?controller=blog&action=view&number=$1
Match ^/post/([^/]+)/$ Rewrite /index.php?controller=post&action=view&post=$1
Match ^/post-([0-9]+)/(.*)$ Rewrite /index.php?controller=post&action=view&id_post=$1
Match ^/page/([^/]+)/$ Rewrite /index.php?controller=page&action=view&page=$1
Match ^/feed/$ Rewrite /feed.php
Match ^/([^/]+)/$ Rewrite /index.php?controller=page&action=$1
}
Now find this:
#ServerId = www-data
Change it to:
ServerId = hiawatha:hiawatha
If you are going to upload any files you'll need to increase the MaxRequestSize from the default 64KB to something higher - e.g. 256KB.
To do this you need to find the "Binding" section:
Binding {
Port = 80
# Interface = 127.0.0.1
# MaxKeepAlive = 30
# TimeForRequest = 3,20
}
Change it to:
Binding {
Port = 80
MaxRequestSize = 256
}
exit and save.
6. Now install php-fpm and other supporting PHP libraries that Nibbleblog needs - you can check the requirements here: http://docs.nibbleblog.com/post/system-requirements/
yum install php-fpm php-gd php-xml -y
7. Edit the php-fpm configuration file /etc/php-fpm.d/www.conf
:
Find the line:
listen = 127.0.0.1:9000
Change it to:
listen = /var/lib/hiawatha/php-fcgi.sock
Find the lines:
user = apache
; RPM: Keep a group allowed to write in log dir.
group = apache
Change it to:
user = hiawatha
group = hiawatha
Find the line:
pm = dynamic
Change it to:
pm = static
Find the line:
pm.max_children = 50
Change it to:
pm.max_children = 3
Find the line:
php_value[session.save_path] = /var/lib/php/session
Change it to:
php_value[session.save_path] = /var/lib/php
8. Download Nibbleblog - Note - I am installing the latest version supporting MarkDown from here:
cd /tmp; wget http://tcpdiag.dl.sourceforge.net/project/nibbleblog/v4.0/nibbleblog-v4.0.2-markdown.zip
9. Install the unzip tool:
yum install unzip -y
10. unzip it inside our WebsiteRoot: /var/www/domain1
mkdir /var/www/domain1
unzip nibbleblog-v4.0.2-markdown.zip -d /var/www/domain1/
mv /var/www/domain1/nibbleblog-markdown/* /var/www/domain1/
rm -r -f /var/www/domain1/nibbleblog-markdown/
11. Fix the permissions for the PHP session directory and for the blog directory:
chown -R hiawatha:hiawatha /var/lib/php/
chown -R hiawatha:hiawatha /var/www/domain1
12. Start hiawatha:
/etc/init.d/hiawatha start
Starting webserver: Hiawatha
13. Start PHP-CGI:
/etc/init.d/php-fpm start
Starting php-fpm: [ OK ]
14. Get your public IPv4 IP address:
curl -4 icanhazip.com
45.58.43.73
15. Now add that IP to your /etc/hosts
, in my case this will look like this:
45.58.43.73 www.domain1.com
16. Now point your browser to www.domain1.com and finish the installation!
Following the instructions from here to add an SSL certificate for the admin panel only:
1. Create a self-signed SSL cert:
cd /etc/ssl/
openssl req -subj '/CN=domain1.com/C=US' -new -newkey rsa:2048 -sha256 -days 365 -nodes -x509 -keyout serverkey.pem -out server.crt
cat server.crt >> serverkey.pem
rm -f server.crt
chmod 400 serverkey.pem
2. Add a Binding for SSL in Hiawatha:
Replace this part:
#Binding {
# Port = 443
# Interface = ::1
# MaxKeepAlive = 30
# TimeForRequest = 3,20
# SSLcertFile = hiawatha.pem
#}
with:
Binding {
Port = 443
SSLcertFile = /etc/ssl/serverkey.pem
}
3. Modify the rewrite rule to force SSL for the /admin
Find this rule:
Match ^/admin$ Rewrite /admin.php?controller=user&action=login
Change it to: (replace www.domain1.com with your domain)
Match ^/admin$ Rewrite https://www.domain1.com/admin.php?controller=user&action=login
Then restart Hiawatha to enable the changes:
/etc/init.d/hiawatha restart