Static Blog

We are in 2015 but we still have problems with blogging, at least I have problems. What I am looking for:

  • Simple WYSIWYG editor to write posts
  • Simple GUI to manage current posts
  • Different themes to select or at least easily customize a theme
  • To get static html version of whole blog
  • Html version should work seamless in a simple server (no PHP, or database support required)
  • A bonus feature, automatically update web site when I change local version (auto export and deploy)

Unfortunately, I couldn’t find any product/service satisfying these conditions. There are lots of Jekyll like products but obviously they are failing to match first two conditions. They are not user friendly, I don’t want to deal with technical things to write a simple blog post. At the other side of spectrum, there are lots of easy web site generator services. However mostly they are closed and I don’t want to depend on a closed service. After trying lots of service/product I settled on again WordPress with HTML Output plugin. It is an old plugin but it is working.

Result:

Install a local WordPress in your PC, install HTML Output plugin, customize your theme, write your posts, export, update to server. It is not that complicated. In future, I will try to automatize export and update process, but for now lets follow the “simple is better” principle.

Rediska Instance Problem

I am building a task module, to do time consuming jobs in background. A worker instance is constantly pooling redis db for a new task. However after first connection, somehow rediska (a php redis client) closes connection, and when I make query to db, it automatically creates a new connection using default settings. At this point new connection is not using the settings in the configuration. It is using hard coded default values. I don’t know why it is doing this but here is the solution.

Whenever you use a rediska key, explicitly tell the instance name you want to use.
$option = array("rediska"=>"use_this_instance_name");
$pointer = new Rediska_Key("job:$index:pointer",$option);

To define aforementioned rediska instance:

$options = array (
                    'addToManager' => true,
                    'name'         => "use_this_instance_name",
                    'namespace'    => '',
                    'servers'      => array(
                        array(
                            'host'   => Rediska_Connection::DEFAULT_HOST,
                            'port'   => Rediska_Connection::DEFAULT_PORT,
                            'weight' => Rediska_Connection::DEFAULT_WEIGHT,
                            'db'=>2,
                            'persistent'=>TRUE,
                            'timeout'=>0
                            
                        )
                    )  
                );
$redis = new Rediska($options);

Nginx 1.010 + PHP 5.3.8 (on Centos 5.7)

Installing nginx is straightforward, so I will not go into details, just check the nginx documentation for more.

First create a repo file.

vi /etc/yum.repos.d/nginx.repo

and add following content to repo file:

CentOS
[nginx]
name=nginx repo
baseurl=http://nginx.org/packages/centos/$releasever/$basearch/
gpgcheck=0
enabled=1

To install php 5.3.8 we need extra repos (source article).

## Remi Dependency on CentOS 5 and Red Hat (RHEL) 5 ##
rpm -Uvh http://download.fedora.redhat.com/pub/epel/5/i386/epel-release-5-4.noarch.rpm
 
## CentOS 5 and Red Hat (RHEL) 5 ## 
rpm -Uvh http://rpms.famillecollet.com/enterprise/remi-release-5.rpm

Install using added repos.

yum --enablerepo=remi install nginx php php-fpm php-common

Install necessary php modules for you.

yum --enablerepo=remi install php-pear

Start Nginx

/etc/init.d/nginx start ## use restart after update
## OR ##
service nginx start ## use restart after update

Start PHP-FPM

/etc/init.d/php-fpm start ## use restart after update
## OR ##
service php-fpm start ## use restart after update

Autostart Nginx on boot

chkconfig --add nginx
chkconfig --levels 235 nginx on
#Autostart PHP-FPM on boot
chkconfig --add php-fpm
chkconfig --levels 235 php-fpm on

Now it is time to configure nginx to work with php.

vi /etc/nginx/conf.d/test.conf

put these lines into file.

server {
    server_name example.net;
    access_log /var/logs/nginx/example.access.log;
    error_log /var/logs/nginx/example.error.log;
    root /var/www/example;
 
    location / {
        index index.html index.htm index.php;
    }
 
    location ~ \.php$ {
        include /etc/nginx/fastcgi_params;
        fastcgi_pass  127.0.0.1:9000;
        fastcgi_index index.php;
        fastcgi_param SCRIPT_FILENAME /var/www/example$fastcgi_script_name;
    }
}

restart nginx

service nginx restart

create an index file to test.

vi /var/www/example/index.php
<?php phpinfo(); ?>