Install Pimcore Digital Asset Management

Pimcore digital asset management is the third open source management system that we are looking at.

The other posts for Razuna and Resourcespace are under the links 🙂

As always I have installed this in the AWS Ec2 environment, I am  using the Market Place CentOS build.

The link for the software can be found at www.pimcore.org as with most open source software the instructions can be a little fuzzy and there is always an expectation of you know what you are doing.

The system requirements can be found at www.pimcore.org/wiki/display/PIMCORE/System+Requirements and the install instructions at www.pimcore.org/wiki/display/PIMCORE/Installation+and+Upgrade+Guide

So lets get stuck in with the install

mkdir /opt/software
cd /opt/software
yum -y install gcc gcc-c++ make wget mysql mysql-server gd libxml2 libxml2-devel 

Apache requires APR to be installed

 wget http://mirrors.ukfast.co.uk/sites/ftp.apache.org//apr/apr-1.4.6.tar.gz
 wget http://mirrors.ukfast.co.uk/sites/ftp.apache.org//apr/apr-util-1.4.1.tar.gz
 tar xzvf apr-1.4.6.tar.gz
 tar xzvf apr-util-1.4.1.tar.gz
 cd apr-1.4.6
 
 ./configure
 make
 make install
 cd ..
 cd apr-util-1.4.1
 ./configure --with-apr=/usr/local/apr
 make
 make install

To ensure that the server starts make sure you use this command, this creates all the links required for the shared libraries.

ldconfig

Now install Apache

When compiling apache I got the following error

pcre-config for libpcre not found. PCRE is required and available from http://pcre.org/

To fix this

yum -y install pcre pcre-devel

cd /opt/software

wget http://mirror.catn.com/pub/apache/httpd/httpd-2.4.4.tar.gz
tar xzf httpd-2.4.4.tar.gz 
cd httpd-2.4.*

./configure --enable-so \
--enable-authz_host=shared \
--enable-mod_dir=shared \
--enable-log_config=shared \
--enable-mime=shared \
--enable-rewrite=shared \
--enable-setenvif=shared \
--enable-alias=shared \
--enable-expires=shared \
--enable-headers=shared \
--enable-deflate=shared \
--enable-include=shared \
--with-included-apr=/usr/local/apr
make
make install

Now install PHP

cd /opt/software
wget http://uk3.php.net/get/php-5.3.22.tar.gz/from/this/mirror 
tar xzf php-5.3.22.tar.gz
wget http://sourceforge.net/projects/mcrypt/files/Libmcrypt/2.5.8/libmcrypt-2.5.8.tar.gz/download
tar -xvzf libmcrypt-2.5.8.tar.gz
cd libmcrypt-2.5.8
./configure --disable-posix-threadsmakemake install

When you run the make install command look for the following line and make a note as this will be needed when configuring php in the –with-mcrypt= line

Libraries have been installed in:
It will probably be /usr/local/lib

cd /opt/software
wget http://zlib.net/zlib-1.2.7.tar.gz
tar xzf zlib-1.2.7.tar.gz
cd zlib-1.2.7
./configure 
make
make install
yum -y install tcl-devel libpng-devel libjpeg-devel ghostscript-devel bzip2-devel freetype-devel libtiff-devel
cd /opt/software
wget http://www.imagemagick.org/download/ImageMagick-6.8.3-3.tar.gz
tar -xvzf ImageMagick-*.tar.gz 
cd ImageMagick*
./configure --prefix=/usr/local --with-bzlib=yes --with-fontconfig=yes --with-freetype=yes --with-gslib=yes --with-gvc=yes --with-jpeg=yes --with-jp2=yes --with-png=yes --with-tiff=yes
make
make install
cd /opt/software
wget http://pkgconfig.freedesktop.org/releases/pkg-config-0.27.1.tar.gz
tar xzf pkg-config-0.27.1.tar.gz
cd pkg-config-*
./configure --prefix=/usr \
-docdir=/usr/share/doc/pkg-config-0.27.1 \
-with-internal-glib
make
make install

When installing php this I got the following error

checking for DSA_get_default_method in -lssl… yes
checking for X509_free in -lcrypto… yes
checking for pkg-config… /usr/bin/pkg-config
configure: error: Cannot find OpenSSL’s <evp.h>

There are loads of bit in Google that refer to this error make sure that you yum the devel packages

yum -y install openssl-devel libcurl-devel

I found installing the latest openssl package and then changing the line in the configure file worked. I need to test this theory on a virgin install.

cd /opt/software
wget http://www.openssl.org/source/openssl-1.0.1e.tar.gz
tar xzf openssl-1.0.1e.tar.gz
cd openssl-1.0.1*
./config
make
make install

Also received this error

checking whether to enable embedded MySQLi support… no
checking for mysql_set_server_option in -lmysqlclient… no
configure: error: wrong mysql library version or lib not found. Check config.log for more information.

To fix this error

yum install mysql-devel

Now to install php

cd /opt/software/php*
./configure \
--with-gd \
--with-jpeg-dir=/usr/lib \
--with-png-dir=/usr/lib \
--with-mcrypt=/usr/local/lib \
--with-mysqli=/usr/lib/mysql/mysql_config \
--enable-mbstring \
--with-iconv \
--enable-dom \
--enable-simplexml \
--with-bz2=/usr/bin \
 --enable-libxml \
--enable-soap \
--enable-zip \
--with-zlib-dir=/opt/software/php-5.3.22/ext/zlib \
--with-openssl=/usr/local/ssl \
--with-curl=/usr/bin/curl \
--enable-pcntl \
--with-apxs2=/usr/local/apache2/bin/apxs \
--with-mysql=/usr/include/mysql \
--with-pdo-mysql

You might receive this error

configure: error: PDO_MYSQL configure failed. Please check config.log for more information.

I found out with some digging that when using php 5.3 you can use the built in drivers for Mysql. The command should therefore be as follows

./configure \
--with-gd \
--with-jpeg-dir=/usr/lib \
--with-png-dir=/usr/lib \
--with-mcrypt=/usr/local/lib \
--with-mysqli=mysqlnd \
--enable-mbstring \
--with-iconv \
--enable-dom \
--enable-simplexml \
--with-bz2=/usr/bin \
--enable-libxml \
--enable-soap \
--enable-zip \
--with-zlib-dir=/opt/software/php-5.3.22/ext/zlib \
--with-openssl=/usr/local/ssl \
--with-curl=/usr/bin/curl \
--enable-pcntl \
--with-apxs2=/usr/local/apache2/bin/apxs \
--with-mysql=mysqlnd \
--with-pdo-mysql=mysqlnd
make

You might get the following error when make finished

/usr/bin/ld: cannot find -lltdl
collect2: ld returned 1 exit status
make: *** [sapi/cgi/php-cgi] Error 1

You need to edit the Makefile find -lltdl and remove

vi Makefile

make test

make install

If you are successful in the installation you will probably get the following message

Wrote PEAR system config file at: /usr/local/etc/pear.conf
You may want to add: /usr/local/lib/php to your php.ini include_path
/opt/software/php-5.3.22/build/shtool install -c ext/phar/phar.phar /usr/local/bin
ln -s -f /usr/local/bin/phar.phar /usr/local/bin/phar
Installing PDO headers: /usr/local/include/php/ext/pdo

You now need a php.ini file

cd /opt/software/php*
cp php.ini-production /usr/local/lib/php.ini

We now need to include the recommended path as per the message received when installing php. You will need to edit the php.ini file and find the entry for include_path

vi /usr/local/lib/php.ini

You will find in in this area

;;;;;;;;;;;;;;;;;;;;;;;;;
; Paths and Directories ;
;;;;;;;;;;;;;;;;;;;;;;;;;

; UNIX: “/path1:/path2”
;include_path = “.:/php/includes”

Enter the following line

include_path = ".:/usr/local/lib/php"

Because of the nature of the server there is a good likely hood that you will need to increase the Max upload size. This is also done in the php.ini file as you are probably aware.

Find

; Maximum allowed size for uploaded files.
; http://php.net/upload-max-filesize
upload_max_filesize = 2M

; Maximum number of files that can be uploaded via a single request
max_file_uploads = 20

And alter to

; Maximum allowed size for uploaded files.
; http://php.net/upload-max-filesize
upload_max_filesize = 80M

; Maximum number of files that can be uploaded via a single request
max_file_uploads = 50

 

To install some of the PECL elements you need access to phpize. You will need to modify your PATH statement to avoid the following error

bash: phpize: command not found

PATH=$PATH:/usr/local/bin/

There are some additions that need to be added

cd /opt/software
wget http://pecl.php.net/get/APC-3.1.9.tgz
tar -xvzf APC-*.tgz
cd APC-*
phpize

You should be presented with

Configuring for:
PHP Api Version: 20090626
Zend Module Api No: 20090626
Zend Extension Api No: 220090626
config.m4:180: warning: AC_CACHE_VAL(PHP_APC_GCC_ATOMICS, …): suspicious cache-id, must contain _cv_ to be cached
../../lib/autoconf/general.m4:1974: AC_CACHE_VAL is expanded from…
../../lib/autoconf/general.m4:1994: AC_CACHE_CHECK is expanded from…
config.m4:180: the top level
config.m4:180: warning: AC_CACHE_VAL(PHP_APC_GCC_ATOMICS, …): suspicious cache-id, must contain _cv_ to be cached
../../lib/autoconf/general.m4:1974: AC_CACHE_VAL is expanded from…
../../lib/autoconf/general.m4:1994: AC_CACHE_CHECK is expanded from…
config.m4:180: the top level

To configure APC you need to know where the php-config file was installed

whereis php-config

This should return something like

php-config: /usr/local/bin/php-config

./configure --enable-apc --enable-apc-mmap --with-php-config=/usr/local/bin/php-config
make
make install

You now need to ensure that APC is install with PHP, so you need to add the extension line to php.ini

vi /usr/local/lib/php.ini
extension_dir = "/usr/local/lib/php/extensions/no-debug-zts-20090626"
extension=apc.so

Now to install the Imagemagick bit and pieces

 

I tried the manual install of ImageMagick (Don’t bother)

cd /opt/software
wget http://www.imagemagick.org/download/linux/CentOS/i386/ImageMagick-6.8.4-6.i386.rpm
rpm -Uvh ImageMagick-6.8.4-6.i386.rpm

I got the following error

Failed dependencies:

libfftw3.so.3 is needed by ImageMagick-6.8.4-4.i386
libgdk_pixbuf-2.0.so.0 is needed by ImageMagick-6.8.4-4.i386
liblcms.so.1 is needed by ImageMagick-6.8.4-4.i386
libltdl.so.3 is needed by ImageMagick-6.8.4-4.i386
librsvg-2.so.2 is needed by ImageMagick-6.8.4-4.i386

cd /opt/software
wget ftp://rpmfind.net/linux/centos/6.3/os/i386/Packages/fftw-3.2.1-3.1.el6.i686.rpm
rpm -Uvh fftw-3.2.1-3.1.el6.i686.rpm
wget ftp://rpmfind.net/linux/centos/6.3/os/i386/Packages/gtk2-2.18.9-10.el6.i686.rpm
rpm -Uvh gtk2-2.18.9-10.el6.i686.rpm

error: Failed dependencies:

atk >= 1.13.0-1 is needed by gtk2-2.18.9-10.el6.i686
hicolor-icon-theme is needed by gtk2-2.18.9-10.el6.i686
libXcomposite.so.1 is needed by gtk2-2.18.9-10.el6.i686
libXcursor.so.1 is needed by gtk2-2.18.9-10.el6.i686
libXdamage.so.1 is needed by gtk2-2.18.9-10.el6.i686
libXfixes.so.3 is needed by gtk2-2.18.9-10.el6.i686
libXi.so.6 is needed by gtk2-2.18.9-10.el6.i686
libXinerama.so.1 is needed by gtk2-2.18.9-10.el6.i686
libXrandr >= 1.2.99.4-2 is needed by gtk2-2.18.9-10.el6.i686
libXrandr.so.2 is needed by gtk2-2.18.9-10.el6.i686
libatk-1.0.so.0 is needed by gtk2-2.18.9-10.el6.i686
libpango-1.0.so.0 is needed by gtk2-2.18.9-10.el6.i686
libpangocairo-1.0.so.0 is needed by gtk2-2.18.9-10.el6.i686
libpangoft2-1.0.so.0 is needed by gtk2-2.18.9-10.el6.i686
pango >= 1.20.0-1 is needed by gtk2-2.18.9-10.el6.i686

wget ftp://rpmfind.net/linux/centos/6.3/os/i386/Packages/atk-1.28.0-2.el6.i686.rpm
rpm -Uhv atk-1.28.0-2.el6.i686.rpm
wget ftp://rpmfind.net/linux/centos/6.3/os/i386/Packages/hicolor-icon-theme-0.11-1.1.el6.noarch.rpm
rpm -Uvh hicolor-icon-theme-0.11-1.1.el6.noarch.rpm
wget ftp://rpmfind.net/linux/centos/6.3/os/i386/Packages/libXfixes-4.0.4-1.el6.i686.rpm
rpm -Uhv libXfixes-4.0.4-1.el6.i686.rpm
wget ftp://rpmfind.net/linux/centos/6.3/os/i386/Packages/libXi-1.3-3.el6.i686.rpm
rpm -Uhv libXi-1.3-3.el6.i686.rpm
wget ftp://rpmfind.net/linux/centos/6.3/os/i386/Packages/libXinerama-1.1-1.el6.i686.rpm
rpm -Uhv libXinerama-1.1-1.el6.i686.rpm
wget ftp://rpmfind.net/linux/centos/6.3/os/i386/Packages/libXrandr-1.3.0-4.el6.i686.rpm
rpm -Uhv libXrandr-1.3.0-4.el6.i686.rpm
wget ftp://rpmfind.net/linux/centos/6.3/os/i386/Packages/libXcomposite-0.4.1-2.el6.i686.rpm
rpm -Uvh libXcomposite-0.4.1-2.el6.i686.rpm
wget ftp://rpmfind.net/linux/centos/6.3/os/i386/Packages/libXcursor-1.1.10-2.el6.i686.rpm
rpm -Uhv libXcursor-1.1.10-2.el6.i686.rpm
wget ftp://rpmfind.net/linux/centos/6.3/os/i386/Packages/libXdamage-1.1.2-1.el6.i686.rpm
rpm -Uhv libXdamage-1.1.2-1.el6.i686.rpm

wget http://ftp.gnome.org/pub/GNOME/sources/pango/1.34/pango-1.34.0.tar.xz
xz -d pango-1.34.0.tar.xz
tar -xvf pango-1.34.0.tar
cd pango-1.34.0
./configure

You will get this error

checking for HARFBUZZ… no
no
checking for CoreText availability… no
checking for CAIRO… no
no
configure: error: *** Could not enable any backends.
*** Must have at least one backend to build Pango.

cd /opt/software
wget http://sourceforge.net/projects/freetype/files/freetype2/2.4.11/freetype-2.4.11.tar.gz/download
tar -xzf freetype-2.4.11.tar.gz
cd freetype-2.4.11
make
make install

cd /opt/software
wget http://www.freedesktop.org/software/fontconfig/release/fontconfig-2.10.92.tar.gz
tar -xzf fontconfig-2.10.92.tar.gz
cd fontconfig-2.10.92
./configure --enable-libxml2
make
make install
cd /opt/software
wget http://www.freedesktop.org/software/harfbuzz/release/harfbuzz-0.9.14.tar.bz2
bunzip2 harfbuzz-0.9.14.tar.bz2
tar -xf harfbuzz-0.9.14.tar
cd harfbuzz-0.9.14
./configure
make
make install
PATH=$PATH:/usr/local/lib
export PKG_CONFIG_PATH=usr/local/lib/pkgconfig
cd /opt/software/pango-1.34.0
./configure

I gave up and used the yum instead

yum install ImageMagick
PATH=$PATH:/usr/lib

cd /opt/software 
wget http://pecl.php.net/get/imagick-3.0.1.tgz
tar xzf imagick-*.tgz
cd imagick-* 
phpize 
./configure 
make

I got this error

checking ImageMagick MagickWand API configuration program… configure: error: not found. Please provide a path to MagickWand-config or Wand-config program.

yum install yum install ImageMagick-devel

This install has been done a few times to get this script correct I once returned the following error on one of the installs

make: *** [imagick_class.lo] Error 1

From this post http://semigr.livejournal.com/97622.html

Edit the configure file and add the following line after the line

INCLUDES=`$PHP_CONFIG –includes 2>/dev/null`

INCLUDES=$INCLUDES" -I/usr/local/include/ImageMagick "

Issue the commands again

./configure
make clean
make
make test  

Again I have run this script a few time and got this error on one ocasion

/usr/local/bin/php: symbol lookup error: /opt/software/imagick-3.0.1/modules/imagick.so: undefined symbol: MagickWandGenesis

/usr/local/bin/php: symbol lookup error: /opt/software/imagick-3.0.1/modules/imagick.so: undefined symbol: MagickWandGenesis

=====================================================================
PHP : /usr/local/bin/php
CWD : /opt/software/imagick-3.0.1
Extra dirs :
VALGRIND : Not used
=====================================================================
TIME START 2013-03-07 16:13:59
=====================================================================
No tests were run.

export PKG_CONFIG_PATH=/usr/local/lib/pkgconfig/:/usr/lib/pkgconfig/

./configure
make clean
make
make test
make install

cd /opt/software
wget http://pecl.php.net/get/memcache-2.2.7.tgz
tar xzf memcache-2.2.7.tgz
cd memcache-*
phpize
./configure --enable-memcache
make
make install

vi /usr/local/lib/php.ini
extension=memcache.so
extension=imagick.so

We need to change a few things in the web server configuration and how the web server works

Now we want to change the user who runs the web server to apache.

To run the web server as apache

groupadd apache
useradd -g apache apache
cd /usr/local
chown -R apache:apache apache2/

I have noticed some things referrer to apache opposed to apache2, link the directories to fix this

ln -s /usr/local/apache2 /usr/local/apache
chown apache:apache /usr/local/apache
echo "<FilesMatch \.php$>" >> /usr/local/apache2/conf/httpd.conf echo "SetHandler application/x-httpd-php" >> /usr/local/apache2/conf/httpd.conf echo "</FilesMatch>">> /usr/local/apache2/conf/httpd.conf

Some manual editing is also needed

vi /usr/local/apache2/conf/httpd.conf

Find

<IfModule unixd_module> #

# If you wish httpd to run as a different user or group, you must run

# httpd as root initially and it will switch.

# # User/Group: The name (or #number) of the user/group to run httpd as.

# It is usually good practice to create a dedicated user and group for # running httpd, as with most system services.

# User daemon Group daemon

</IfModule>

And change the User and Group to apache

Also find the following (hint /DirectoryIndex)

<IfModule dir_module>
DirectoryIndex index.html
</IfModule>

And change it to

<IfModule dir_module>
DirectoryIndex index.php
</IfModule>

To start the web server

cd /usr/local/apache2/bin
 ./apachectl start

To check what PHP bits are installed and also to check if Imagemagick is working:-

echo "<?php" > /usr/local/apache2/htdocs/phpinfo.php 
echo "// Show all information, defaults to INFO_ALL" >> /usr/local/apache2/htdocs/phpinfo.php
echo "phpinfo();" >> /usr/local/apache2/htdocs/phpinfo.php
echo "// Show just the module information." >> /usr/local/apache2/htdocs/phpinfo.php
echo "// phpinfo(8) yields identical results." >> /usr/local/apache2/htdocs/phpinfo.php
echo "phpinfo(INFO_MODULES);" >> /usr/local/apache2/htdocs/phpinfo.php
echo "?>" >> /usr/local/apache2/htdocs/phpinfo.php

chown apache:apache /usr/local/apache2/htdocs/phpinfo.php
chmod 755 /usr/local/apache2/htdocs/phpinfo.php

OK now we have a working server 🙂

cd /usr/local/apache/htdocs
mkdir pimcore
cd pimcore
wget http://www.pimcore.org/download/pimcore-latest.zip
unzip pimcore-latest.zip
cd /usr/local/apache/htdocs
chown -R apache:apache pimcore

change the httpd.conf file to allow the server to operate

echo "<VirtualHost *:80>"  >> /usr/local/apache2/conf/httpd.conf
echo "ServerName pimcore.xxxxxxx.com" >> /usr/local/apache2/conf/httpd.conf
echo "DocumentRoot /usr/local/apache2/htdocs/pimcore" >> /usr/local/apache2/conf/httpd.conf
echo "<Directory "/usr/local/apache2/htdocs/pimcore">" >> /usr/local/apache2/conf/httpd.conf
echo "allow from all" >> /usr/local/apache2/conf/httpd.conf
echo "Options +Indexes" >> /usr/local/apache2/conf/httpd.conf
echo "</Directory>" >> /usr/local/apache2/conf/httpd.conf
echo "</VirtualHost>" >> /usr/local/apache2/conf/httpd.conf

We also need to edit the httpd.conf file to allow the use of .htaccess files

Find

<Directory />
 Options FollowSymLinks
 AllowOverride ALL
</Directory>

and replace it with

<Directory />
Order Deny,Allow
Deny from all
Options None
AllowOverride None
</Directory>Also change

Find this part

#
# DocumentRoot: The directory out of which you will serve your
# documents. By default, all requests are taken from this directory, but
# symbolic links and aliases may be used to point to other locations.
#
DocumentRoot “/usr/local/apache2/htdocs”
<Directory “/usr/local/apache2/htdocs”>
#
# Possible values for the Options directive are “None”, “All”,
# or any combination of:
# Indexes Includes FollowSymLinks SymLinksifOwnerMatch ExecCGI MultiViews
#
# Note that “MultiViews” must be named *explicitly* — “Options All”
# doesn’t give it to you.
#
# The Options directive is both complicated and important. Please see
# http://httpd.apache.org/docs/2.4/mod/core.html#options
# for more information.
#
Options Indexes FollowSymLinks

#
# AllowOverride controls what directives may be placed in .htaccess files.
# It can be “All”, “None”, or any combination of the keywords:
# AllowOverride FileInfo AuthConfig Limit
#
AllowOverride None

#
# Controls who can get stuff from this server.
#
Require all granted

to

#
# DocumentRoot: The directory out of which you will serve your
# documents. By default, all requests are taken from this directory, but
# symbolic links and aliases may be used to point to other locations.
#
DocumentRoot “/usr/local/apache2/htdocs”
<Directory “/usr/local/apache2/htdocs”>
#
# Possible values for the Options directive are “None”, “All”,
# or any combination of:
# Indexes Includes FollowSymLinks SymLinksifOwnerMatch ExecCGI MultiViews
#
# Note that “MultiViews” must be named *explicitly* — “Options All”
# doesn’t give it to you.
#
# The Options directive is both complicated and important. Please see
# http://httpd.apache.org/docs/2.4/mod/core.html#options
# for more information.
#
Options Indexes FollowSymLinks

#
# AllowOverride controls what directives may be placed in .htaccess files.
# It can be “All”, “None”, or any combination of the keywords:
# AllowOverride FileInfo AuthConfig Limit
#
AllowOverride All

#
# Controls who can get stuff from this server.
#
Require all granted

Restart the server and lets try to configure Pimcore

cd /

./usr/local/apache/bin/apachectl restart

One change that is required

chmod -R 766 /usr/local/apache/htdocs/pimcore/website/var

I got the following error error in the error_log file

/usr/local/apache2/htdocs/pimcore/.htaccess: Invalid command ‘RewriteEngine’, perhaps misspelled or defined by a module not included in the server configuration

This was because when I compiled apache I did not include the rewrite module. This is an easy fix

vi /usr/local/apache2/conf/httpd.conf

Find the following line and uncomment it

LoadModule rewrite_module modules/mod_rewrite.so

OK if you browse to http://x.x.x.x you should be prompted with the Pimcore configuration screen.

We now need to create the database and users in Mysql

Login to the mysql database as the supper user

create database datbasename;
create user 'username'@'localhost' identified by 'password';
create user 'username'@'%' identified by 'password';
grant all on databasename.* to 'username'@'localhost' with grant option;
grant all on databasename.* to 'username'@'%' with grant option;

We are now ready to add the details into the Pimcore configuration screen.

If you notice there is a “Check Requirements” button, it is work doing this to ensure that you have met all of the requirements. I had not the first time that I got to this stage, this just makes sure that you have not missed anything out.

I had missed a few things out, you may see a warning about PCNTL not being present, I believe that this is present, but not via HTTP see the php PCNTL notes

You now have a working environment, not sure how to use it yet, but that is another post 🙂

Al

, ,

  1. Leave a comment

Leave a Reply

Fill in your details below or click an icon to log in:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out /  Change )

Google photo

You are commenting using your Google account. Log Out /  Change )

Twitter picture

You are commenting using your Twitter account. Log Out /  Change )

Facebook photo

You are commenting using your Facebook account. Log Out /  Change )

Connecting to %s

ifssoftware.wordpress.com/

Helping you achieve more

The Survival Guides's Blog

How to Survive IT and Holidays

WordPress.com

WordPress.com is the best place for your personal blog or business site.

%d bloggers like this: