Updating Centos 5 to php 5.3

Updating centos 5 to php 5.3

The version of php shipped with Centos 5 is 5.1.6 , lots of programs now need php 5.2 or 5.3 to install. The latest version of WordPress for example will not install or update on servers running 5.1.6.

When Centos 5.6 came out it had the opportunity to install PHP 5.3 from Centos – the problem is not all the PHP rpms available at 5.1.6 are there in the Centos repository at 5.3 e.g. php-pear php-mcrypt

One way around this is use a different repository , a good one for PHP is IUS . IUS has some nice features such as an add on to yum to make replacing the Centos PHP very easy – also it names it’s RPMs differently to Centos so you don’t have to worry about it overwriting Centos RPMs when you do a yum update. You may need to upgrade tour PHP applications to work with PHP 5.3 so check them out before you upgrade.

The following upgrade procedure is taken mostly from here

wget http://dl.iuscommunity.org/pub/ius/stable/Redhat/5/x86_64/ius-release-1.0-8.ius.el5.noarch.rpm

wget http://dl.iuscommunity.org/pub/ius/stable/Redhat/5/x86_64/epel-release-5-4.noarch.rpm

rpm -Uvh ius-release*.rpm epel-release*.rpm

Check you can now see the  PHP 5.3 rpms from IUS

yum list | grep -w \.ius\.

Install the IUS add-on to yum :-

yum install yum-plugin-replace

Stop Apache

service httpd stop

List what php rpms you have installed

-bash-3.2# rpm -qa | grep php
Now replace those rpms with the ones from IUS using the IUS yum add-on

-bash-3.2# yum replace php –replace-with php53
Loaded plugins: fastestmirror, priorities, replace
Loading mirror speeds from cached hostfile
* addons: mirror.netrino.co.uk
* base: mirror.netrino.co.uk
* epel: mirror01.th.ifl.net
* extras: mirror.netrino.co.uk
* ius: mirror.rackspace.co.uk
* rpmforge: fr2.rpmfind.net
* updates: mirror.netrino.co.uk
1872 packages excluded due to repository priority protections
Replacing packages takes time, please be patient…

WARNING: Unable to resolve all providers: [‘config(php)’, ‘php’, ‘config(php-ldap)’, ‘php-ldap’, ‘config(php-mbstring)’, ‘php-mbstring’, ‘config(php-mysql)’, ‘php-mysql’, ‘config(php-pgsql)’, ‘php-pgsql’, ‘config(php-common)’, ‘dbase.so()(64bit)’, ‘php-dbase’, ‘php-mime_magic’, ‘php-pspell’, ‘php-common’, ‘config(php-pdo)’, ‘php-pdo’, ‘config(php-odbc)’, ‘php-odbc’, ‘config(php-gd)’, ‘php-gd’, ‘config(php-bcmath)’, ‘php-bcmath’]

This may be normal depending on the package.  Continue? [y/N]
Resolving Dependencies
Resolving Dependencies
–> Running transaction check
—> Package php.x86_64 0:5.1.6-27.el5_5.3 set to be erased
–> Processing Dependency: php >= 4.0.4 for package: squirrelmail
—> Package php-bcmath.x86_64 0:5.1.6-27.el5_5.3 set to be erased
—> Package php-cli.x86_64 0:5.1.6-27.el5_5.3 set to be erased
—> Package php-common.x86_64 0:5.1.6-27.el5_5.3 set to be erased
—> Package php-devel.x86_64 0:5.1.6-27.el5_5.3 set to be erased
—> Package php-gd.x86_64 0:5.1.6-27.el5_5.3 set to be erased
—> Package php-ldap.x86_64 0:5.1.6-27.el5_5.3 set to be erased
—> Package php-mbstring.x86_64 0:5.1.6-27.el5_5.3 set to be erased
—> Package php-mysql.x86_64 0:5.1.6-27.el5_5.3 set to be erased
—> Package php-odbc.x86_64 0:5.1.6-27.el5_5.3 set to be erased
—> Package php-pdo.x86_64 0:5.1.6-27.el5_5.3 set to be erased
—> Package php-pgsql.x86_64 0:5.1.6-27.el5_5.3 set to be erased
—> Package php53.x86_64 0:5.3.3-1.el5_6.1 set to be updated
—> Package php53-bcmath.x86_64 0:5.3.3-1.el5_6.1 set to be updated
—> Package php53-cli.x86_64 0:5.3.3-1.el5_6.1 set to be updated
—> Package php53-common.x86_64 0:5.3.3-1.el5_6.1 set to be updated
—> Package php53-devel.x86_64 0:5.3.3-1.el5_6.1 set to be updated
—> Package php53-gd.x86_64 0:5.3.3-1.el5_6.1 set to be updated
—> Package php53-ldap.x86_64 0:5.3.3-1.el5_6.1 set to be updated
—> Package php53-gd.x86_64 0:5.3.3-1.el5_6.1 set to be updated
—> Package php53-ldap.x86_64 0:5.3.3-1.el5_6.1 set to be updated
—> Package php53-mbstring.x86_64 0:5.3.3-1.el5_6.1 set to be updated
—> Package php53-mysql.x86_64 0:5.3.3-1.el5_6.1 set to be updated
—> Package php53-odbc.x86_64 0:5.3.3-1.el5_6.1 set to be updated
—> Package php53-pdo.x86_64 0:5.3.3-1.el5_6.1 set to be updated
—> Package php53-pgsql.x86_64 0:5.3.3-1.el5_6.1 set to be updated
—> Package php53-process.x86_64 0:5.3.3-1.el5_6.1 set to be updated
—> Package php53-xml.x86_64 0:5.3.3-1.el5_6.1 set to be updated
–> Running transaction check
—> Package squirrelmail.noarch 0:1.4.8-5.el5.centos.10 set to be erased
–> Finished Dependency Resolution
–> Running transaction check
—> Package squirrelmail.noarch 0:1.4.8-5.el5.centos.10 set to be erased
–> Processing Dependency: php >= 4.0.4 for package: squirrelmail
–> Processing Dependency: php-mbstring for package: squirrelmail
–> Running transaction check
—> Package squirrelmail.noarch 0:1.4.8-5.el5.centos.10 set to be erased
–> Finished Dependency Resolution

Dependencies Resolved
Package             Arch        Version                    Repository      Size
php53               x86_64      5.3.3-1.el5_6.1            updates        1.3 M
php53-bcmath        x86_64      5.3.3-1.el5_6.1            updates         42 k
php53-cli           x86_64      5.3.3-1.el5_6.1            updates        2.4 M
php53-common        x86_64      5.3.3-1.el5_6.1            updates        605 k
php53-devel         x86_64      5.3.3-1.el5_6.1            updates        590 k
php53-gd            x86_64      5.3.3-1.el5_6.1            updates        109 k
php53-ldap          x86_64      5.3.3-1.el5_6.1            updates         37 k
php53-mbstring      x86_64      5.3.3-1.el5_6.1            updates        1.2 M
php53-mysql         x86_64      5.3.3-1.el5_6.1            updates         92 k
php53-odbc          x86_64      5.3.3-1.el5_6.1            updates         52 k
php53-pdo           x86_64      5.3.3-1.el5_6.1            updates         67 k
php53-pgsql         x86_64      5.3.3-1.el5_6.1            updates         74 k
php53-process       x86_64      5.3.3-1.el5_6.1            updates         38 k
php53-xml           x86_64      5.3.3-1.el5_6.1            updates        119 k
php                 x86_64      5.1.6-27.el5_5.3           installed      6.2 M
php-bcmath          x86_64      5.1.6-27.el5_5.3           installed       33 k
php-cli             x86_64      5.1.6-27.el5_5.3           installed      5.3 M
php-common          x86_64      5.1.6-27.el5_5.3           installed      397 k
php-devel           x86_64      5.1.6-27.el5_5.3           installed      2.5 M
php-gd              x86_64      5.1.6-27.el5_5.3           installed      333 k
php-ldap            x86_64      5.1.6-27.el5_5.3           installed       49 k
php-mbstring        x86_64      5.1.6-27.el5_5.3           installed      1.8 M
php-mysql           x86_64      5.1.6-27.el5_5.3           installed      196 k
php-odbc            x86_64      5.1.6-27.el5_5.3           installed       88 k
php-pdo             x86_64      5.1.6-27.el5_5.3           installed      114 k
php-pgsql           x86_64      5.1.6-27.el5_5.3           installed      128 k
Removing for dependencies:
squirrelmail        noarch      1.4.8-5.el5.centos.10      installed       14 M

Transaction Summary
Install      14 Package(s)
Upgrade       0 Package(s)
Remove       13 Package(s)
Reinstall     0 Package(s)
Downgrade     0 Package(s)

Total download size: 6.7 M
Is this ok [y/N]:
Downloading Packages:
(1/14): php53-ldap-5.3.3-1.el5_6.1.x86_64.rpm             |  37 kB     00:00
(2/14): php53-process-5.3.3-1.el5_6.1.x86_64.rpm          |  38 kB     00:00
(3/14): php53-bcmath-5.3.3-1.el5_6.1.x86_64.rpm           |  42 kB     00:00
(4/14): php53-odbc-5.3.3-1.el5_6.1.x86_64.rpm             |  52 kB     00:00
(5/14): php53-pdo-5.3.3-1.el5_6.1.x86_64.rpm              |  67 kB     00:00
(6/14): php53-pgsql-5.3.3-1.el5_6.1.x86_64.rpm            |  74 kB     00:00
(7/14): php53-mysql-5.3.3-1.el5_6.1.x86_64.rpm            |  92 kB     00:00
(8/14): php53-gd-5.3.3-1.el5_6.1.x86_64.rpm               | 109 kB     00:00
(9/14): php53-xml-5.3.3-1.el5_6.1.x86_64.rpm              | 119 kB     00:00
(10/14): php53-devel-5.3.3-1.el5_6.1.x86_64.rpm           | 590 kB     00:00
(11/14): php53-common-5.3.3-1.el5_6.1.x86_64.rpm          | 605 kB     00:00
(12/14): php53-mbstring-5.3.3-1.el5_6.1.x86_64.rpm        | 1.2 MB     00:00
(13/14): php53-5.3.3-1.el5_6.1.x86_64.rpm                 | 1.3 MB     00:00
(14/14): php53-cli-5.3.3-1.el5_6.1.x86_64.rpm             | 2.4 MB     00:00

Total                                            3.2 MB/s | 6.7 MB     00:02
Running rpm_check_debug
Running Transaction Test
Finished Transaction Test
Transaction Test Succeeded
Running Transaction
Installing     : php53-common                                             1/27
warning: /etc/php.d/json.ini created as /etc/php.d/json.ini.rpmnew
Installing     : php53-pdo                                                2/27
Installing     : php53-cli                                                3/27
Installing     : php53                                                    4/27
Installing     : php53-mbstring                                           5/27

Installing     : php53-bcmath                                             6/27
Installing     : php53-pgsql                                              7/27
Installing     : php53-mysql                                              8/27
Installing     : php53-ldap                                               9/27
Installing     : php53-xml                                               10/27
Installing     : php53-process                                           11/27
Installing     : php53-gd                                                12/27
Installing     : php53-devel                                             13/27
Installing     : php53-odbc                                              14/27
Erasing        : php-ldap                                                15/27
Erasing        : php-pdo                                                 17/27
Erasing        : php-mysql                                               18/27
Erasing        : php-devel                                               19/27
Erasing        : php-odbc                                                20/27
Erasing        : php-gd                                                  21/27
Erasing        : php                                                     22/27
Erasing        : php-common                                              23/27
Erasing        : php-bcmath                                              24/27
Erasing        : php-cli                                                 25/27

Erasing        : squirrelmail                                            26/27
Erasing        : php-pgsql                                               27/27

php.x86_64 0:5.1.6-27.el5_5.3         php-bcmath.x86_64 0:5.1.6-27.el5_5.3
php-cli.x86_64 0:5.1.6-27.el5_5.3     php-common.x86_64 0:5.1.6-27.el5_5.3
php-devel.x86_64 0:5.1.6-27.el5_5.3   php-gd.x86_64 0:5.1.6-27.el5_5.3
php-ldap.x86_64 0:5.1.6-27.el5_5.3    php-mbstring.x86_64 0:5.1.6-27.el5_5.3
php-mysql.x86_64 0:5.1.6-27.el5_5.3   php-odbc.x86_64 0:5.1.6-27.el5_5.3
php-pdo.x86_64 0:5.1.6-27.el5_5.3     php-pgsql.x86_64 0:5.1.6-27.el5_5.3

Dependency Removed:
squirrelmail.noarch 0:1.4.8-5.el5.centos.10

php53.x86_64 0:5.3.3-1.el5_6.1         php53-bcmath.x86_64 0:5.3.3-1.el5_6.1
php53-cli.x86_64 0:5.3.3-1.el5_6.1     php53-common.x86_64 0:5.3.3-1.el5_6.1
php53-devel.x86_64 0:5.3.3-1.el5_6.1   php53-gd.x86_64 0:5.3.3-1.el5_6.1
php53-ldap.x86_64 0:5.3.3-1.el5_6.1    php53-mbstring.x86_64 0:5.3.3-1.el5_6.1
php53-mysql.x86_64 0:5.3.3-1.el5_6.1   php53-odbc.x86_64 0:5.3.3-1.el5_6.1
php53-pdo.x86_64 0:5.3.3-1.el5_6.1     php53-pgsql.x86_64 0:5.3.3-1.el5_6.1
php53-process.x86_64 0:5.3.3-1.el5_6.1 php53-xml.x86_64 0:5.3.3-1.el5_6.1


Check all the php rpms you had installed at 5.1.6 are now there at 5.3

-bash-3.2# rpm -qa | grep php
-bash-3.2# php -v
PHP 5.3.3 (cli) (built: Mar 30 2011 13:51:54)
Copyright (c) 1997-2010 The PHP Group
Zend Engine v2.3.0, Copyright (c) 1998-2010 Zend Technologies

Set your timezone for PHP ( if you do not do this you may see errors like PHP Warning:  strtotime(): It is not safe to rely on the system’s timezone settings. You are *required* to use the date.timezone setting or the date_default_timezone_set() function. )

vi /etc/php.ini

date.timezone = ‘Europe/London’

Restart Apache

service httpd start

Check your applications now work


Weather Station Display

Display weather on a web page

I wanted to have my own weather station and output the weather on a web page on my VPS server. There are plenty of weather stations available that will output data to a PC and several applications that will display that data on a web page. Most weather stations come with software but it is Windoze based and not Linux. Looking around for weather display software that will run on Linux I found Weather Display this supports a large range of stations , has lots of nice features , runs on Linux ( as well as Mac OSX and Windoze ) but costs around $70.

Looking for free software I found open2300 , this will get data from a La crosse WS2300/WS2305/WS2310/WS2315 Weather Station as well as sending data to Weather Underground and Citizen Weather. There are some very nice web sites using this software as a base for some extra coding. It will also run on a Linksys NSLU2.

Next I found wview , this supports a number of weather stations :-

  • Davis Vantage Pro/Pro2
  • Vaisala WXT510
  • La Crosse WS-2300/2308/2310/2315
  • Oregon Scientific WMR918/968
  • This produces a nice web page as on my server. The software will also run on a Linksys NSLU2 which has been modified to run a full version of Linux which means I don’t have to leave my main PC on all the time to collect the data. I happen to have a NSLU2 which I modifed to run a full version of Linux which I was using as a media streamer ( Firefly ) to stream audio to a Roku Soundbridge and as a backup server  – I have now bought a SqueezeBox Duet and the NSLU2 is a bit too weedy for the SqueezeCenter software so I decided to run wview on this and send the generated HTML over to my VPS server on the net.

    Weather Station choice

    Having decided on wview the supported weather stations currently available in the UK are  the La Crosse WS2300 series and the Davis Vantage Pro, as the Davis Vantage Pro with a PC cable is around four times the price of the La Crosse I decided to buy a La Crosse WS2308. This weather station will also work with the open2300 and WeatherDisplay software mentioned above. It measures indoor/outdoor temperature and humidity ,dew point, wind chill, wind speed and direction, atmospheric pressure and has a rain gauge to measure rain fall. It has a large LCD display unit that can either receive the data from the instruments via cable or wireless – I chose the wireless option as It is the most convenient although it can be less reliable and if you do lose contact with the sensors the PC output will show the outside temperature as 80 degrees C which buggers up your graphs !

    The outside instruments are housed in three units connected together by cable. I mounted the wind anemometer on a TV aerial mast and the rain gauge on a simple L bracket. See the picture below. The TV mast and the bracket to mount it on the wall came from Maplin Electronics.

    WS2308 weather station instruments
    WS2308 weather station instruments

    Prepare the NSLU2 for the Wview software

    As noted above I wanted to install wview on my Linksys NSLU2, the version of Linux I had on there was too old to install wview and so I had to install a new version. To do this the instructions are on the NSLU2 Wiki site. Initially I installed the latest SlugOS ( 5.3 Beta ) but the wview packages ( I decided against compiling the latest version from source as I wanted to get something up and running quickly )  had dependency problems so I installed SlugOS 4.8 Beta as suggested in the manual. As I already had a version of Linux on the NSLU2 ( Unslung ) it was easy to do and it even kept all my data on the USB disk attached. I used sudo upslug2 –image=”slugosbe-4.8-beta-nslu2.bin” from by Ubuntu desktop to flash the new image onto the NSLU2 and once rebooted df showed :-

    root@nslug:~$ df
    Filesystem           1k-blocks      Used Available Use% Mounted on
    /dev/mtdblock4            6528      4948      1580  76% /
    /dev/mtdblock4            6528      4948      1580  76% /dev/.static/dev
    tmpfs                     2048        28      2020   1% /dev
    tmpfs                    15188        20     15168   0% /var/volatile
    tmpfs                    15188         0     15188   0% /dev/shm
    /dev/sda2               116661     18664     91973  17% /media/sda2
    /dev/sda1            240190052  33692576 204057284  14% /media/sda1

    and fdisk /dev/sda :-

    Disk /dev/sda: 250.0 GB, 250059350016 bytes
    255 heads, 63 sectors/track, 30401 cylinders
    Units = cylinders of 16065 * 512 = 8225280 bytes

    Device Boot      Start         End      Blocks  Id System
    /dev/sda1               1       30379   244019286  83 Linux
    /dev/sda2           30380       30394      120487+ 83 Linux
    /dev/sda3           30395       30401       56227+ 82 Linux swap

    /media/sda2 was the Unslung root partition so I made it the SlugOS one :-
    root@nslug:~$  umount /media/sda2
    root@nslug:~$ mkfs.ext3 /dev/sda2
    root@nslug:~$ turnup disk -i /dev/sda2 -t ext3

    Rebooted the NSLU2

    I already had swap on sda3 but it was the wrong version so I remade it :-

    root@nslug:~# mkswap /dev/sda3
    Setting up swapspace version 1, size = 57572864 bytes
    vi /etc/fstab
    /dev/sda3       swap    swap    defaults        0       0
    root@nslug:~# swapon -a

    The NSLU2 does not have an accessible serial port to connect to the weather station. To use a serial connection to the NSLU2 see the Linux NSLU2 Wiki page here.

    I choose the easy option to use a serial to USB converter cable ( from Maplin Electronics code ZP43 ).

    root@nslug:~$ ipkg update
    Downloading http://ipkg.nslu2-linux.org/feeds/slugosbe/cross/4.8-beta/Packages.g
    Inflating http://ipkg.nslu2-linux.org/feeds/slugosbe/cross/4.8-beta/Packages.gz
    Updated list of available packages in /var/lib/ipkg/cross
    Downloading http://ipkg.nslu2-linux.org/feeds/slugosbe/native/4.8-beta/Packages.gz
    Inflating http://ipkg.nslu2-linux.org/feeds/slugosbe/native/4.8-beta/Packages.gz
    Updated list of available packages in /var/lib/ipkg/native

    root@nslug:~$ ipkg install kernel-module-pl2303
    Installing kernel-module-pl2303 ( to root…
    Downloading http://ipkg.nslu2-linux.org/feeds/slugosbe/cross/4.8-beta/kernel-module-pl2303_2.6.21.7+svnr927-r0_nslu2be.ipk
    Configuring kernel-module-pl2303
    root@nslug:~$ depmod -a
    root@nslug:~$ echo usbserial >> /etc/modutils/modules
    root@nslug:~$ echo pl2303 >> /etc/modutils/modules

    shutdown and plug in the Serial to USB cable

    root@nslug:~$ dmesg
    <6>usbcore: registered new interface driver usbserial
    <6>drivers/usb/serial/usb-serial.c: USB Serial support registered for generic
    <6>usbcore: registered new interface driver usbserial_generic
    <6>drivers/usb/serial/usb-serial.c: USB Serial Driver core
    <6>drivers/usb/serial/usb-serial.c: USB Serial support registered for pl2303
    <6>pl2303 2-1:1.0: pl2303 converter detected
    <6>usb 2-1: pl2303 converter now attached to ttyUSB0
    <6>usbcore: registered new interface driver pl2303

    Set the timezone and date :-

    root@nslug:~$ ipkg install tzdata
    Installing tzdata (2007e-r1) to root…
    Downloading http://ipkg.nslu2-linux.org/feeds/slugosbe/cross/4.8-beta/tzdata_2007e-r1_armv5teb.ipk
    Configuring tzdata
    root@nslug:~$ ln -s /usr/share/zoneinfo/Europe/London   /etc/localtime
    logout and back in again
    Set the date MMDDHHMM

    Installing Wview on the NSLU2

    root@nslug:~$ cd /etc/ipkg
    root@nslug:/etc/ipkg$ wget http://www.wviewweather.com/ipkg/wview.conf
    Connecting to www.wviewweather.com[]:80
    wview.conf           100% |*****************************|    59    –:–:– ETA
    root@nslug:/etc/ipkg$ ipkg update
    Downloading http://ipkg.nslu2-linux.org/feeds/slugosbe/cross/4.8-beta/Packages.gz
    Inflating http://ipkg.nslu2-linux.org/feeds/slugosbe/cross/4.8-beta/Packages.gz
    Updated list of available packages in /var/lib/ipkg/cross
    Downloading http://ipkg.nslu2-linux.org/feeds/slugosbe/native/4.8-beta/Packages.gz
    Inflating http://ipkg.nslu2-linux.org/feeds/slugosbe/native/4.8-beta/Packages.gz
    Updated list of available packages in /var/lib/ipkg/native
    Downloading http://www.scorpiocomputing.com/weather/ipk/Packages.gz
    Inflating http://www.scorpiocomputing.com/weather/ipk/Packages.gz
    Updated list of available packages in /var/lib/ipkg/_wview
    root@nslug:/etc/ipkg$ ipkg list | grep wview

    Look for your weather station model – in my case ws2300 :-

    wview-ws2300-mysql – 4.0.1-r0 – wview is a weather site generator and more for a variety of weather stations

    root@nslug:/etc/ipkg$ ipkg install wview-ws2300-mysql
    Installing wview-ws2300-mysql (4.0.1-r0) to root…
    downloads lots of dependent libraries etc.

    Make the archive directory go to disk rather than in /var ( which is memory on the NSLU2 )

    root@nslug:~$ mkdir /media/sda1/wview
    root@nslug:~$ mkdir /media/sda1/wview/archive
    root@nslug:~$ rmdir /var/wview/archive
    root@nslug:~$ ln -s /media/sda1/wview/archive /var/wview/archive

    Next run the setup script wviewconfig. In most cases I accepted the defaults except as below


    Serial port device – check with dmesg what in is – in my case it is /dev/ttyUSB0

    Use metric measures
    Weather station elevation (feet above sea level ) you can get this information from various sites on the Internet – I used http://www.earthtools.org/

    This site will also give you latitude and longitude

    Local Radar use Google to find a site that you can link to for a radar display or look at other weather sites to see what other people have used.

    Ditto for local forcast

    Run the rsync/ssh daemon wviewsshd?
    As I wanted to use my VPS server on the Internet I use the wviewsshd daemon which does rsync over ssh to get the data to the external server – more about this below.

    After wviewconfig has finished run the script wviewhtmlconfig – I accepted defaults.

    You can always change settings getnerated by the above two scripts at a later date by editing /etc/wview/wview.conf or /etc/wview/htmlgen.conf and restarting wview.

    Setting up rsync to send the data to an external web server

    On the NSLU2

    root@nslug:/etc/ipkg$ ipkg install rsync

    ssh-keygen -t rsa           don’t set a passphrase and accept the defaults

    cat /root/id_rsa.pub

    On your external server

    -bash-3.2# useradd -m -d /home/wview -c “Wview weather” wview
    -bash-3.2# cd ~wview
    -bash-3.2# mkdir .ssh
    -bash-3.2# vi .ssh/authorized_keys

    paste in the output of the cat /root/id_rsa.pub command you ran on the NSLU2 above

    -bash-3.2# chown -R wview:wview /home/wview/.ssh
    -bash-3.2# chmod 700 /home/wview/.ssh
    -bash-3.2# mkdir /var/www/html/weather         (replace /var/www/html with your web server’s document root )

    -bash-3.2# chown wview:wview /var/www/html/weather

    -bash-3.2# ln -s /var/www/html/weather data

    If rsync is not installed then install it :-

    yum install rsync

    On the NSLU2

    Test the ssh connection :-

    root@nslug:-$ ssh -l wview yourextserver.org ls -l /home

    Answer yes to the question about if you want to connect and you should get a listing of the external server’s /home without being prompted for a password.

    root@nslug:-$ vi /root/.ssh/config

    Host yourextserver.org

    User wview

    This means that root will always ssh as user wview when going to your external server.

    Test rsync

    root@nslug:-$ rsync -aqz –rsh=ssh /var/wview/img/ tuqix.org:data
    root@nslug:-$  ssh yourextserver.org ls -l data

    root@nslug:-$  vi /etc/wview/wviewssh.conf
    #Interval Source                        Remote Host               Remote Destination
    #——– —————————–  ————————-         ————–
    1         /var/wview/img                yourextserver.org                                 data

    Plug in the weather station LCD control panel to the serial to USB cable using the serial cable that comes with the weather station.

    Start up wview and monitor the mesages file:-

    root@nslug:-$ /etc/init.d/wview start

    root@nslug:-$ tail -f /var/log/messages

    You should see messages like :-

    Jun 20 16:36:59 (none) user.info wviewd[949]: <1245512219362> : station pollinginterval set to 15 seconds
    Jun 20 16:36:59 (none) user.info wviewd[949]: <1245512219409> : — Station Init
    Start —
    Jun 20 16:36:59 (none) user.info wviewd[949]: <1245512219479> : WS-2300 on /dev/ttyUSB0 opened …
    Jun 20 16:36:59 (none) user.info wviewd[949]: <1245512219555> : station archiveinterval: 5 minutes
    Jun 20 16:37:00 (none) user.info wviewsqld[953]: <1245512220422> : radlib: wview sqld started as a daemon …
    Jun 20 16:37:00 (none) user.warn wviewsqld[953]: <1245512220438> : SQL archiving disabled in wview.conf – exiting…
    Jun 20 16:37:00 (none) user.info htmlgend[956]: <1245512220520> : radlib: htmlgend started as a daemon …
    Jun 20 16:37:00 (none) user.info htmlgend[956]: <1245512220552> : !! configured for metric units/conversion !!
    Jun 20 16:37:00 (none) user.info htmlgend[956]: <1245512220554> : !! Rain units will be mm !!
    Jun 20 16:37:00 (none) user.info htmlgend[956]: <1245512220556> : generating to /var/wview/img
    Jun 20 16:37:00 (none) user.alert wvalarmd[958]: <1245512220579> : /etc/wview/wv alarm.conf does not exist – exiting…
    Jun 20 16:37:00 (none) user.info wviewsshd[963]: <1245512220979> : rsync: updating /var/wview/img ==> yourextserver.org:data every 1 minutes
    Jun 20 16:37:00 (none) user.crit wviewsshd[963]: <1245512220981> : rsync: starting updates in 4 mins 15 secs
    Jun 20 16:40:11 (none) user.info htmlgend[956]: <1245512411515> : Generated: 124
    5Jun 20 16:41:11 (none) user.info htmlgend[956]: <1245512471160> : Generated: 890 ms: 17 images, 14 template files
    Jun 20 16:41:15 (none) user.info wviewsshd[963]: <1245512475271> : Updating: /var/wview/img ==> yourextserver.org:data
    ms: 25 images, 14 template files

    Once you see messages about Generated images and template files followed by wviewsshd updating /var/view/img ==> yourextserver.org then you should get a nice web page at yourextserver.org/weather

    To Do list / Task List manager ; Taskfreak

    When ( not if ! ) you decide you need a To Do list / Task List then I suggest you head over to the Lifehacker web site. This is an excellent site for productivity ideas ( also some fun non productive ones ! ). It covers both computer based and non computer based ( e.g. paper notebooks etc. ) tools. If you decide on a paper based approach then head over to Cultpens to select you required pen or pencil from their very interesting collection.

    If you decide that  a computer based To Do list / Task List manager  is the way to go then check out a comparison of software .

    I wanted a tool that was web based , that could be installed on my own web server and is easy to add and “cross off” tasks.

    I tried a few different ones and found Taskfreak to be just want I needed.  It features amongst other things :-

    • Display tasks by project
    • Display tasks by deadline
    • Display completed tasks
    • Add comments to tasks
    • Simple progress bar for tasks
    • Pop up calender when adding deadlines

    See the screen shots below for an idea of how it looks

    It was also by far the easiest software I tested to create a new task. It is also multi user with several levels of users ( don’t worry if you just want to use it for one person – it is fine to do so ). There is a single user version on the site but it does not have as many features so I suggest you install the multi user version even if it is going to be used by only one person.

    The license is GPL and it requires PHP 4.3.1+ or PHP 5 plus MySql  . It also works with PHP 7 if you use the fork on Github :-

    Although TaskFreak looks like it is no longer maintained I found a fork on Github that allows TaskFreak to work with PHP 7 so I suggest you use this.

    If you are using PHP 5.3 or greater  you need to edit /etc/php.ini and set your timezone :-

    date.timezone = ‘Europe/London’

    Otherwise you will see messages complaining about the timezone in the Apache logs :-

    PHP Warning:  strtotime(): It is not safe to rely on the system’s timezone settings. You are *required* to use the date.timezone setting or the date_default_timezone_set() function. In case you used any of those methods and you are still getting this warning, you most likely misspelled the timezone identifier. We selected ‘Europe/London’ for ‘BST/1.0/DST’ instead in /var/www/html/taskfreak/include/classes/pkg_project.php on line 28, referer: https://tuqix.org/taskfreak/index.php?PHPSESSID=59b7orgmpe4sj64a9b7rpjal40

    Installing Taskfreak

    This assumes you already have MySql and PHP setup. These instructions are for Centos but will be similar for various Linux distributions.

    Create the database

    mysql -u root -p
    mysql> create database taskfreak;
    mysql> grant all privileges on taskfreak.* to taskfreak@localhost identified by ‘Password’ ;

    mysql>flush privileges;

    I suggest restricting access to the Taskfreak directory for security in Apache. There is a good guide to do this here.

    cd /var/www/html

    Clone the Git repo

    git clone git://github.com/wnoisephx/TaskFreak

    rename the directory to taskfreak

    chmod -R 755 taskfreak

    cd taskfreak/include

    vi config.php

    Change the value of TZN_DB_USER to be taskfreak

    Change the value of TZN_DB_PASS to the password you set above

    Point your browser at the taskfreak/install/index.php  script and click on Check install

    If everything is OK it will ask you if you want to create the missing tables – click on yes install missing tables for me.

    If all is OK then click on Launch Taskfreak

    Login as admin ( no password ) and you will be in the application.

    You will see a warning about removing the install directory – this should be done so no one can overwrite you install.

    cd to the directory you installed Taskfreak in and rm -r install

    Set the Admin password and profile

    Go to Manage – My Profile

    Set your details including a password

    Click on return to list

    To create another user click on the taskfreaknu1new user icon :-

    Fill in the details and click on Account is enabled – this will then let you setup the user as an Administaror , Manager, Intern or Guest.

    From the README file explains the privileges :-General permissions:
    – guests, interns and managers can view only tasks that belong to the
    projects they are associated with
    – interns, managers and administrator can create tasks (guests can not)
    – interns, managers and administrator can see internal tasks (guests can not)
    – managers and administrator can create projects
    – managers and administrator can create users
    – administrator can edit everything (tasks, projects, users)

    Then we can give a specific position to a user when linking him to a project:
    – extern: can only see tasks, can not do anything
    – official: can add comments (later)
    – member: can create tasks
    – moderator: can add, edit, delete tasks and comments, manage users and change
    project’s status
    – leader: can do everything

    Associating a task to a user is only for you to organize yourself.
    Someone who has access to the system and is associated to a project can see
    all (public) tasks of the project.

    Using Taskfreak

    Taskfreak is easy to use, one of the reason why I chose it was becuase it is so easy to add a task.

    To add a new task – Task – New To Do

    Fill in the form as desired. The Context selection is for using TaskFreak as part of Getting Things Done (GTD)

    If you need to create a new project at the same time just click on the link. To bring up a calendar for the deadline click on the icon.

    Add a task
    Add a task

    Displaying tasks

    You can display only tasks belonging to a particular project, display completed tasks only , display both completed and future tasks.

    You can order the display by priority, project, deadline, status just by clicking on the headings

    Display tasks
    Display tasks

    Adding comments

    You can add time stamped comments by clicking on the “bubble” icon in the Com. field.

    TaskFreak adding comments
    TaskFreak adding comments

    You also have a history and descrption tag

    To change the status of a task ( e.g. 40% done ) just click on the Status grids next to the task

    To complete a task you can click on the final grid in the status column for the task

    You can edit a task just by clicking on it in the Title column.

    Customizations and add-ons

    As TaskFreak is open source you can customize colours , contexts etc. Head over to the TaskFreak forums where there are lots of hints and also details of plugins .

    If you find TaskFreak useful then there is a donation button on the TaskFreak website.

    Installing Clipperz password manager

    Clipperz password manager

    There are various password managers around. I wanted one that was web based so I could access it from anywhere , I also wanted to install it on my own web server. I would never use it for anything financial , just for the numerous web sites that require a user name and password.

    After searching around I found Clipperz .  This seemed to do everything I wanted and the community edition is  licensed with  an open source  AGPL license . If you don’t want to install it on your own web server then Clipperz offers a hosted service for users. The Clipperz site explains how the data is encrypted and why it is secure.

    Clipperz has some very nice features :

    • You can copy the password into the clipboard without it showing in clear text.
    • You can create a read only copy on your local desktop in a single HTML file than can be read with a browser , keeping the same encryption method – very cool!
    • You can import passwords from CSV, Excel , KeePass, Password Plus.
    • You can export the passwords and import them into another Clipperz account.
    • It can be run it a Firefox Sidebar or Opera panel

    Installation on Centos 5

    This assumes you already have Apache, PHP and Mysql already installed and working.

    For my Centos server I needed to install json and the bcmath PHP extensions.

    Installing PHP json on Centos 5

    I had to do the following :-

    yum install php-devel

    yum install php-pear        ( this will also install pecl )

    pear install pecl/json            ( if you try to just use pecl to install json you will get an error about a 8MB limit the solution is to use pear – I found this thanks to this page )

    vi /etc/php.d/json.ini and add a line :-


    Install bcmath

    yum install php-bcmath

    If you don’t install bcmath you will get the following in the Apache error log when you try to register a user :-

    PHP Fatal error:  Call to undefined function bcscale() in /var/www/html/mytools/clipperz/php/index.php on line 72

    Restart Apache

    service httpd restart

    Creating the database for Clipperz

    mysql -u root -p

    You will be prompted for the Mysql root password you first set when you setup Mysql

    create database clipperz ;

    grant all privileges on clipperz.* to “clipperzadmin”@”localhost” identified by “passwd” ;

    flush privileges ;

    exit ;

    passwd is the password you want for the clipperzadmin DB user

    Installing the PHP files

    Download the community edition of Clipperz from sourceforge

    Goto the HTML directory of your Apache installation – /var/www/html on Centos and if ncessary create a subdirectory where you want to install Clipperz. You probably want this directory protected by Apache authorisation. Unzip the Clipperz zip file you downloaded and rename the directory extracted to something like clipperz. Goto the directory and look at the INSTALL.txt file.

    vi php/configuration.php

    Set the database name , database user and database password you set when creating the database.

    Point you browser to the location of Clipperz /php/setup/index.php

    e.g. If you installed Clipperz in /var/www/html/mytools/clipperz you would go to yourdomain/mytools/cliperz/php/setup/index.php

    You will now be in a page with POG  ( PHP Object Generator ). Hit the POG ME UP button and if all goes well you will have a proceed button. Hit that and you will go onto another page where you can examine the database. On the plugins tab make sure you do not install base64 if you do Clipperz will not work on Centos – if the tab says it is installed then click on uninstall.

    You are now ready to use Clipperz. Point your browser at the Clipperz location yourdomain/mytools/cliperz if you used the setting above. Click on the Create One button to create an account.

    There are links on the pages for help and the main Clipperz site is very helpful.

    You may want to donate some money to the project – there are links on the Clipperz site.

    Once installed it is recommended you remove the php/setup directory to prevent someone deleting database records .

    You can backup your settings by exporting the data to json format  ( Data – Export – Export to json format ), this will keep all your settings and can be restored into another Clipperz account.

    Another useful thing is to create an offline copy – this will create a single HTML file that can be loaded in a browser , keeping the same encryption protection.

    Problems with json

    On another server I had a problem with json . If I tried to create an account it failed. Looking at the ssl error log I got :-

    [Wed Dec 28 16:57:45 2011] [error] [client] PHP Fatal error:  Call to undefined function json_decode() in /var/www/html/tools/clipperz/php/index.php on line 227, referer: https://myserver.mydomain/tools/clipperz/

    And in the error_log :-

    PHP Warning:  PHP Startup: Unable to load dynamic library ‘/usr/lib64/php/module
    s/json.so’ – /usr/lib64/php/modules/json.so: undefined symbol: ZVAL_DELREF in Un
    known on line 0

    The solution was found here ( note that is not for PHP53 if you followed my advise to use the IUS reposity to upgrade PHP – use php53-common – see below)

    I used

    cd /var/tmp
    yum install yum-utils.noarch
    yumdownloader php53-common
    rpm -Uvh –force php53-common-5.3.3-1.el5_7.3.x86_64.rpm
    service httpd restart


    Using SiteBar – online bookmark manager

    SiteBar online web based bookmark manager

    In a previous post I explained how to install SiteBar on your own server. This post is my experiences of using SiteBar , if you don’t have a server to install SiteBar on, you can use the service provided by the authors of SiteBar. SiteBar is GPL open source.

    Once you have signed up and logged in you are ready to go.

    Although SiteBar works with any browser it looks and works best with a browser that can have a site displayed in a sidebar such as Firefox , Opera and  later versions of IE.

    Setting up Firefox to display SiteBar in a sidebar

    Go to the start link of your SiteBar web site , highlight the web address including the http:// part and then Edit – Copy.

    Next select Bookmarks from the Firefox tool bar , then Organise Bookmarks. A new window appears, expand Bookmarks Menu and select the folder you want the SiteBar bookmark to go to.

    Firefox Organise your bookmarks window
    Firefox Organise your bookmarks window

    Select Organise – Add Bookmark from the toolbar. A new window appears as below. Fill in the Name , right click-  paste in the Location field so the web address of your Sitebar site you copied to the clipboard above inserts. Fill in the Keyword and Description fields. Click the box Load this bookmark in the sidebar , then click Add.

    Firefox adding a bookmark in a sidebar
    Firefox adding a bookmark in a sidebar

    Close the organise bookmarks window. Now when you go to bookmarks and select the bookmark you created above a sidebar will be opened with the SiteBar in it.

    Having Sitebar in a sidebar really makes SiteBar brilliant to use.

    Firefox showing SiteBar bookmark manager in a sidebar
    Firefox showing SiteBar bookmark manager in a sidebar

    Sign into SiteBar. If you want to import your current bookmarks into SiteBar this is easy to do and it can handle various formats. First you have to export you browser bookmarks into a file. For Firefox go to Bookmark – Organise Bookmarks – Import and Backup – Export HTML , save the file and remember the filename and location.

    For Internet Explorer follow the instructions here.

    On your SiteBar menu right click on your user name just below public bookmarks and select Import Bookmarks

    Import Bookmarks into SiteBar
    Import Bookmarks into SiteBar

    The Import Bookmarks screen will display, use the Browse button to select the export file you saved above with your browsers bookmarks in it. The rest of the options can normally be left as default. Then click on Submit.

    SiteBar Import Bookmarks screen
    SiteBar Import Bookmarks screen

    Once done , if you click on you username all of your imported bookmarks will display. You can delete bookmarks and folders by right clicking on the entry.

    To go to a web site using a SiteBar bookmark just click on the bookmark and the website will appear in a new tab, the SiteBar sidebar will still be available.

    SiteBar displaying a web page
    SiteBar displaying a web page

    Adding Bookmarks in SiteBar

    To add a new folder just right click where you want the new folder to be and fill in the form to give it a name.

    To add a link go to the web site in a browser tab . In SiteBar right click on the folder you want the bookmark to appear in and Add Link. Highlight the web address of the web site you want to bookmark in the browser tab and holding down the left mouse button drag the URL into the URL field in the SiteBar menu.

    Next click on the Retrieve Link Information button – and here is the really nifty bit – SiteBar will go and get the link information from the web site you want to bookmark including the Favicon if available. What information it brings back is dependent on the target web site – some sites seem very good and SiteBar will even fill in the description field. Edit the fields as you wish and click Submit.

    SiteBar adding a link
    SiteBar adding a link

    Searching your bookmarks

    Type a keyword in the SiteBar dialogue box and then click on the backend bookmark icon

    SiteBar search bookmarks icon

    This will display in a tab your SiteBar bookmarks matching the keyword in the top half of the screen ordered by how often you have clicked on them together with links from the SiteBar community and a Google search ( you can change your default search engine ) in the bottom half . See below as example of a search for the keyword news. It has picked up two bookmarks in my SiteBar – Freshmeat and BBC news.

    Displayed bookmark seach results

    There are lots of other features in SiteBar that I need to explore. I highly recommend SiteBar as a web based bookmark manager.

    Web based bookmark manager SiteBar

    Web based bookmark mangers

    There are plenty of web based bookmark manager services out there but I wanted to install my own one on my Linux VPS server.

    After looking at numerous bookmark managers I settled on SiteBar

    See my post here for a walk through using SiteBar

    It is open source , works with any browser, can import and export bookmarks.

    SiteBar provides a service you sign up for if you don’t want to install your own server.

    Installation is very easy. You need to have PHP and Mysql on your server.

    Ensure in your php.ini system file ( /etc/php.ini  on Centos ) you have set the timezone like

    date.timezone = ‘Europe/London’

    otherwise you will get a warning

    Warning: getdate() [function.getdate]: It is not safe to rely on the system’s timezone settings. You are required to use the date.timezone setting or the date_default_timezone_set() function. In case you used any of those methods and you are still getting this warning, you most likely misspelled the timezone identifier.

    Make a directory somewhere  under your web document root

    mkdir /var/www/html/sitebar

    You probably want to restrict access to the directory using Apache authentication controls

    Download the zip file from the SiteBar site download page.

    Unzip  :-

    cd /var/www/html

    unzip sitebar-master.zip
    rename the directory to what you want to call it

    mv sitebar-master.zip  sitebar
    Fire up your browser and go to hostname/sitebar/index.php

    Fill in the DB Password ( this is the root password you set when you setup MySql )

    The rest  left as default

    Click on Create Database

    Click on Check Settings

    Click on Download Settings and save the config.inc.php file to your desktop

    Copy the config.inc.php file to /var/www/html/sitebar/adm directory

    Click Check Settings and you should now go to a new page with an Install Button

    Click Install

    Click setup

    Select language , fill in username , admin passwd, email , real name

    Select the other options as required

    Click on submit

    Everything is now setup and you can start using things.

    There is a link to the help documents but in general you right click on things to bring up an action menu. ( If right click does not work do Control-Right- click , you need to do this with some browsers like Galeon.).


    Preventing ssh brute force attacks with DenyHosts

    Looking in /var/log/secure

    Well my VPS server has been up for just over a week and a check of /var/log/secure shows there have been a number of ssh brute force attacks.

    An example from /var/log/secure :-

    Feb 18 19:30:17 vm sshd[29470]: pam_succeed_if(sshd:auth): error retrieving information about user jodie
    Feb 18 19:30:19 vm sshd[29470]: Failed password for invalid user jodie from port 35485 ssh2
    Feb 18 19:30:19 vm sshd[29471]: Received disconnect from 11: Bye Bye
    Feb 18 19:30:21 vm sshd[29478]: Invalid user jody from
    Feb 18 19:30:21 vm sshd[29479]: input_userauth_request: invalid user jody
    Feb 18 19:30:21 vm sshd[29478]: pam_unix(sshd:auth): check pass; user unknown
    Feb 18 19:30:21 vm sshd[29478]: pam_unix(sshd:auth): authentication failure; logname= uid=0 euid=0 tty=ssh ruser= rhost=
    Feb 18 19:30:21 vm sshd[29478]: pam_succeed_if(sshd:auth): error retrieving information about user jody
    Feb 18 19:30:23 vm sshd[29478]: Failed password for invalid user jody from port 35986 ssh2
    Feb 18 19:30:23 vm sshd[29479]: Received disconnect from 11: Bye Bye
    Feb 18 19:30:25 vm sshd[29486]: Invalid user joe from
    Feb 18 19:30:25 vm sshd[29487]: input_userauth_request: invalid user joe
    Feb 18 19:30:25 vm sshd[29486]: pam_unix(sshd:auth): check pass; user unknown

    I started adding the IP addresses to /etc/hosts.deny but I thought there must be a way of automating things.

    A Google search found DenyHosts which parses the secure log and automatically updates hosts.deny

    DenyHosts has plenty of useful options ( including listing IP addresses that will never be added to hosts.deny – very handy so you don’t lock yourself out ! ). It can run from cron or in daemon mode.

    Installation on Centos

    Get the RPM from the Epel repository ( there are a great number of useful RPMS in the Epel repository and it is well worth adding to yum.

    yum install denyhosts

    Edit the configuration file

    vi /etc/denyhosts.conf

    The default setting will work fine but you may want to change things such as :-

    ADMIN_EMAIL   if you want to be emailed about blocked hosts

    The date format and log format.

    The configuration file is very well documented.

    Run the script on your /var/log/secure file :-

    denyhosts.py –file=/var/log/secure

    cat /etc/hosts.deny to see all the hosts it has found causing problems.

    vi /var/lib/denyhosts/allowed-hosts  and add IP addresses you never want to be blocked each one on their own line.

    Check if denyhosts will be started automatically at boot :-

    -bash-3.2# chkconfig –list denyhosts
    denyhosts          0:off    1:off    2:on    3:on    4:on    5:on    6:off

    Then start it up :-

    -bash-3.2# service denyhosts start

    Yum update

    Checking for Centos updates and fixes

    Centos yum command has an option of check-update  which has a return code of 100 if there are updates together with a list of the updates. If there are no updates but the command worked then it returns 0.

    I wrote a quick script to be run from cron to check for updates and send an email if they are any.

    # Checks for updates from Centos


    yum check-update  > $YUMTMPF  2>&1
    if  [ “$RETCODE”  -eq 100 ]
    cat $YUMTMPF | mail -s  “There are Centos updates available on `hostname`” $MAILADDR

    if   [ “$RETCODE” -ne 0 ]
    cat $YUMTMPF | mail -s   ” Problems with yum check-updates on `hostname`” $MAILADDR
    rm  $YUMTMPF
    exit 1
    rm $YUMTMPF
    When I actually ran the yum update command I got some errors :-

    Transaction Check Error:
    file /usr/share/emacs/site-lisp/psvn.el from install of subversion-1.5.5-0.1.el5.rf conflicts with file from package subversion-1.4.2-2.el5
    file /usr/share/man/man1/svn.1.gz from install of subversion-1.5.5-0.1.el5.rf conflicts with file from package subversion-1.4.2-2.el5
    file /usr/share/man/man1/svnadmin.1.gz from install of subversion-1.5.5-0.1.el5.rf conflicts with file from package subversion-1.4.2-2.el5
    file /usr/share/man/man1/svnlook.1.gz from install of subversion-1.5.5-0.1.el5.rf conflicts with file from package subversion-1.4.2-2.el5
    file /usr/share/man/man5/svnserve.conf.5.gz from install of subversion-1.5.5-0.1.el5.rf conflicts with file from package subversion-1.4.2-2.el5
    file /usr/share/man/man8/svnserve.8.gz from install of subversion-1.5.5-0.1.el5.rf conflicts with file from package subversion-1.4.2-2.el5
    file /usr/share/xemacs/site-packages/lisp/psvn.el from install of subversion-1.5.5-0.1.el5.rf conflicts with file from package subversion-1.4.2-2.el5

    Doing a rpm -qa | grep subversion

    -bash-3.2# rpm -qa | grep subversion

    Showed two versions of subversion installed so I removed the older one :-

    -bash-3.2# yum remove subversion-1.4.2-2.el5
    Loading “fastestmirror” plugin
    Setting up Remove Process
    Loading mirror speeds from cached hostfile
    * dag: apt.sw.be
    * base: centosb2.centos.org
    * updates: centosh2.centos.org
    * addons: centosj3.centos.org
    * extras: centosb2.centos.org
    Resolving Dependencies
    –> Running transaction check
    —> Package subversion.i386 0:1.4.2-2.el5 set to be erased
    –> Finished Dependency Resolution

    Dependencies Resolved

    Package                 Arch       Version          Repository        Size
    subversion              i386       1.4.2-2.el5      installed         7.6 M

    Transaction Summary
    Install      0 Package(s)
    Update       0 Package(s)
    Remove       1 Package(s)

    Is this ok [y/N]: y
    Downloading Packages:
    Running rpm_check_debug
    Running Transaction Test
    Finished Transaction Test
    Transaction Test Succeeded
    Running Transaction
    Erasing   : subversion                   ######################### [1/1]

    Removed: subversion.i386 0:1.4.2-2.el5

    Looking at the Dependencies Resolved section it showed the RPM to be i386 whereas my system is X86_64 so that looked like it was the problem. The update worked after that successfully.

    Had a problem today with yum update :-

    Resolving Dependencies
    –> Running transaction check
    —> Package file.x86_64 0:4.17-15.el5_3.1 set to be updated
    Traceback (most recent call last):
    File “/usr/bin/yum”, line 29, in ?
    yummain.user_main(sys.argv[1:], exit_code=True)
    File “/usr/share/yum-cli/yummain.py”, line 229, in user_main
    errcode = main(args)
    File “/usr/share/yum-cli/yummain.py”, line 145, in main
    (result, resultmsgs) = base.buildTransaction()
    File “/usr/lib/python2.4/site-packages/yum/sqlitesack.py”, line 94, in _read_db_obj
    setattr(self, item, _share_data(db_obj[item]))
    TypeError: unsubscriptable object

    A search on Google gave me the answer  :-

    yum clean all

    Afterwards I was able to do the yum update successfully

    WordPress backups

    My WordPress is only a few days old but logging in on the admin dashboard showed a new version of WordPress is out. I was going to sort out backups a little later but now seems a very good time to do it and then I can do the upgrade.

    The Worpress site has a section on backing up Worpress , basically you backup the database and backup the flat files in your WordPress HTML directory.

    First create a directory to store the backups :-

    mkdir -p /backups

    chmod 700 /backups

    To backup the WordPress database I created a little script in /usr/local/bin :-


    TODAY=`date  ‘+%Y%m%d’`




    mysqldump –opt -u ${DBUSER} ${DBNAME} | gzip > /backups/wordpress.dump.${TODAY}.gz


    The values for DBNAME , DBPASS and DBUSER  are those setup in the wp-config.php file for your install.

    To backup the flat files I just did a tar :-

    cd /var/www/html ; tar cvf /backups/my-wordpress.20090211.tar  wordpress

    Of course no one cares about backups – only restores count, so you should test your restore on another server. You should also backup the Mysql database which holds the usernames and passwords

    mysqldump mysql -p > /backups/mysql.db.dump.20090211

    You will be prompted for the root user password for the Mysql database which you would have set when you first started up mysqld at install time.

    Don’t forget to copy the dumps and tars to another server in case of a total server loss !

    I will automate all the above with cron and rsync in the future

    Setting up email on a Linux VPS server


    In my previous blogs I have documented getting my Linux VPS server and installing WordPress blogging software. Next comes email.

    There are really two parts – the sending and receiving of emails at the server level and the reading and sending emails from the desktop client. I will also setup Webmail sometime in the future.

    For the server the two most popular *IX  MTAs are Sendmail and Postfix , with Sendmail being the standard on Unix servers and Postfix the standard on Linux servers. I choose Postfix as I’ve exclusively used Sendmail in the past and I wanted to see what it was like.

    As for the client reading and sending emails I decided to use Dovecot which has become very popular at providing POP3 and IMAP services.

    I wanted to avoid connecting to the server with plain text passwords and so TLS was to be used for encryption and  SASL for authentication.

    There are two excellent Wiki entries for setting up Postfix , Dovecot and SASL/TLS on Centos.

    Setup basic Postfix and Dovecot first ( the only thing extra I had to do was a chown -R user /home/user/Maildir in section 3.3 )

    Once the above works then do the  SASL/TLS setup

    If you have a firewall setup like me then you need to allow ports 993 and 995 for the encrypted versions of imap and pop3.

    For Centos 6 use system-config-firewall-tui to easily configure the firewall for IMAP and optionally pop3.

    Future things to do are to install a Spam control system and a Webmail application.