The Perfect Server - CentOS 5.2 [ISPConfig 3]

Version 1.1
Author: Falko Timme
Last edited 03/16/2010

This tutorial shows how to prepare a CentOS 5.2 server for the installation of ISPConfig 3, and how to install ISPConfig 3. ISPConfig 3 is a webhosting control panel that allows you to configure the following services through a web browser: Apache web server, Postfix mail server, MySQL, MyDNS nameserver, PureFTPd, SpamAssassin, ClamAV, and many more.

Please note that this setup does not work for ISPConfig 2! It is valid for ISPConfig 3 only!

I do not issue any guarantee that this will work for you!


1 Requirements

To install such a system you will need the following:


2 Preliminary Note

In this tutorial I use the hostname with the IP address and the gateway These settings might differ for you, so you have to replace them where appropriate.


3 Install The Base System

Boot from your first CentOS 5.2 CD (CD 1) or the CentOS 5.2 DVD. Press <ENTER> at the boot prompt:

It can take a long time to test the installation media so we skip this test here:

The welcome screen of the CentOS installer appears. Click on Next:

Choose your language next:

Select your keyboard layout:

I'm installing CentOS 5.2 on a fresh system, so I answer Yes to the question Would you like to initialize this drive, erasing ALL DATA?

Now we must select a partitioning scheme for our installation. For simplicity's sake I select Remove linux partitions on selected drives and create default layout. This will result in a small /boot and a large / partition as well as a swap partition. Of course, you're free to partition your hard drive however you like it. Then I hit Next:

Answer the following question (Are you sure you want to do this?) with Yes:

On to the network settings. The default setting here is to configure the network interfaces with DHCP, but we are installing a server, so static IP addresses are not a bad idea... Click on the Edit button at the top right.

In the window that pops up uncheck Use dynamic IP configuration (DHCP) and Enable IPv6 support and give your network card a static IP address (in this tutorial I'm using the IP address for demonstration purposes) and a suitable netmask (e.g.; if you are not sure about the right values, might help you):

Set the hostname manually, e.g., and enter a gateway (e.g. and up to two DNS servers (e.g. and

Choose your time zone:

Give root a password:

Share this page:

34 Comment(s)

Add comment


From: neon at: 2009-03-31 20:09:13

and sharing of information technology needed .... good to hit the target.

From: at: 2009-03-27 17:01:04

Nice looking guide! One thing I figured out so far was that I had to install the Development groups in the opposite order they are here for them to go.  I was getting an error about the kernel-headers dependency not resolving.

Correct order for me was:

yum groupinstall 'Development Libraries'

yum groupinstall 'Development Tools'

From: Tom at: 2010-03-17 19:49:42

in the  /etc/fstab the first line should read this otherwise you will get a quota error:


/dev/VolGroup00/LogVol00 /                       ext3    defaults,usrquota,grpquota        0 1



From: COMPUTERONIX, LLC at: 2009-05-01 14:01:22

mkdir $HOME/rpm
mkdir $HOME/rpm/SOURCES
mkdir $HOME/rpm/SPECS
mkdir $HOME/rpm/BUILD
mkdir $HOME/rpm/SRPMS
mkdir $HOME/rpm/RPMS
mkdir $HOME/rpm/RPMS/i386

if you are using an x86_64 bit machine don't forget to add this when making the directories

mkdir $HOME/rpm/RPMS/x86_64

otherwise when you get to the second compile phase it will compile and then give a permission denied error for putting the rpm into the x86_64 folder.

From: Jacob Hoover at: 2009-04-15 01:42:05

Also worth noting that if you are on a 64 bit machine, replace

mkdir $HOME/rpm/RPMS/i386


mkdir $HOME/rpm/RPMS/x86_64

and that the RPMs that are built will have a x86_64 postfix instead of i386 and will be in the x86_64 sub folder created.

From: Anonymous at: 2009-04-04 14:39:13

On the next section of the step #10:

Now we download the source files from

cd /tmp

 Now (2009.04.04) the last available courier-authlib is 0.62.2 one. So please download that one:


At least for me the 0.62.1 one got me into the trouble and error during next steps. Problem was solved as I removed the $HOME/rpm/ directory, downloaded latest version of the above file and start again step #10.



From: Steven at: 2009-09-16 18:54:53

Same issue here but no fix:

[compileuser@C53Postfix tmp]$ rpmbuild -ta courier-authlib-0.62.4.tar.bz2
error: Unable to open temp file.

RPM build errors:
    Unable to open temp file.


Any ideas?

From: gmonange at: 2009-12-07 12:54:48

From: dnilson at: 2009-10-14 22:16:31

 The Link to the postfix source has been depricated


No longer works


Use this instead:


From: Dimitri Visser at: 2009-05-18 21:53:19

I tried today 0.6.2, 0.7.0 and 0.7.1 but cannot get it to work. After ./configure etc etc it gives an error:

checking for APR... configure: error: the --with-apr parameter is incorrect. It must specify an install prefix, a build directory, or an apr-config file.

From: Steven at: 2009-07-09 13:56:33

I found that using this command:

yum install php-cli httpd-devel

allowed suPHP to install correctly without the error:

checking for APR... configure: error: the --with-apr parameter is incorrect. It must specify an install prefix, a build directory, or an apr-config file.


I found that you needed to install these as prerequisites on the following tutorial:


From: John at: 2009-05-09 23:24:55

 jailkit-2.7.tar.gz is now available.

 I notices iptables --list was empty, so :-

chkconfig --add bastille-firewall
chkconfig bastille-firewall on
service bastille-firewall start
iptables --list

From: John at: 2009-05-09 23:09:42

I suggest also installing denyhosts to help ssh attacks

yum install rkhunter denyhosts

chkconfig denyhosts on

service denyhosts start

From: at: 2009-05-08 13:56:32

I tried it today with version 0.7.1 (and CentOS 5.3) and it was built without errors.

From: COMPUTERONIX, LLC at: 2009-05-01 21:49:16

when i got to this section....

Next we install suPHP:

cd /tmp
tar xvfz suphp-0.7.0.tar.gz
cd suphp-0.7.0/
./configure --prefix=/usr --sysconfdir=/etc --with-apr=/usr/bin/apr-1-config --with-apxs=/usr/sbin/apxs --with-apache-user=apache --with-setid-mode=owner --with-php=/usr/bin/php-cgi --with-logfile=/var/log/httpd/suphp_log --enable-SUPHP_USE_USERGROUP=yes
make install

i could not get it to work so i used this instead (and then continued on with the instructions)

cd /tmp
tar xvfz suphp-0.6.2.tar.gz
cd suphp-0.6.2/
./configure --prefix=/usr --sysconfdir=/etc --with-apr=/usr/bin/apr-1-config --with-apxs=/usr/sbin/apxs --with-apache-user=apache --with-setid-mode=paranoid --with-php=/usr/bin/php-cgi --with-logfile=/var/log/httpd/suphp_log --enable-SUPHP_USE_USERGROUP=yes
make install

if anyone could shed some light on 0.7.0 that would be great

btw at the time of wiriting 0.7.1 has been released for suPHP (and that did NOT work either)

From: kisfoka at: 2009-05-28 11:36:18

I have CentOS 5.3 x64 and suPHP 0.7.1

Try: yum install apr-devel.x86_64

Run suphp ./configure after that.

Hope it helps!

From: COMPUTERONIX, LLC at: 2009-05-01 22:13:19

when you get to this section

PureFTPd can be installed with the following command:

yum install pure-ftpd

change it to

yum -npgpgcheck install pure-ftpd


From: at: 2009-05-29 05:14:33

When I was debugging my installed server following these instructions, I kept finding this errors in /var/log/maillog

ClamAV-clamd: Connecting to socket  /tmp/clamd.socket, retry #1
ClamAV-clamd: Can't connect to UNIX socket /tmp/clamd.socket: No such file or dir
ectory, retrying (2)

I fixed the problem by editing the file /etc/amavisd.conf

And replacing the line:

  \&ask_daemon, ["CONTSCAN {}\n", "/tmp/clamd.socket"],


  \&ask_daemon, ["CONTSCAN {}\n", "/var/run/clamav/clamd.sock"], 


The other thing that I would do is to add  /usr/bin/freshclam into my daily cron, so it refresh the virus definitions automatically.

Edit the file /etc/crontab  and add the following line at the end of it

02 5 * * * root /usr/bin/freshclam

 Then do a

#service crond reload

There's a lot of information of  Amavisd-new and ClamAV in


From: Arvid at: 2010-08-11 18:49:10

Same as dimity visser, is there an other alternative

From: Anonymous at: 2010-12-15 19:15:08

root@matrix tmp]# rpm -ivh mydns-mysql-1.1.0-1.i386.rpm
mydns-mysql-1.1.0-1.i386.rpm: no es un paquete rpm (o manifiesto de paquete):

From: drokmed at: 2009-05-09 22:48:42

Excellent!  Thank you for this great howto!

 Just installed on CentOS 5.3, works great!

I did encounter the version glitch at the end, as documented in comment below.  Just edit the lib file and it will work.

From: Anonymous at: 2009-04-28 16:08:10

gracias.... excelente tutorial, funciona perfecto

From: Ricardo Vergara at: 2009-07-06 18:45:30

Excelente, guia, funcionando Ok, solo retoque con los comentarios finales. Gracias.

From: at: 2009-04-27 07:49:38

After install IspConfig 3 in file /etc/httpd/conf/sites-available/ispconfig.conf you need

LogFormat "%v %h %l %u %t \"%r\" %>s %b \"%{Referer}i\" \"%{User-Agent}i\"" combined_ispconfig


LogFormat "%v %h %l %u %t \"%r\" %>s %B \"%{Referer}i\" \"%{User-Agent}i\"" combined_ispconfig

Lowercase b to uppercase B. It looks that vlogger does not understand dash - when it's zero it must be zero.

As it is written here already:

%B (Bytes sent, excluding HTTP headers),
%b (Bytes sent, in CLF format i.e. a '-' rather than a 0 when no bytes are sent)

 thanks to cvladan for "reading docs with open eyes")))

From: dorulk at: 2009-04-20 02:54:39

Thanks for this tutorial, work fine with centOS 5.3.

From: Sanjay K at: 2009-04-13 21:05:34

 Works Great with CentOS 5.3 as well.

This tutorial is fantastic! Thanks.

I did not realise that I was updated to 5.3. I worked through the tutorial and it worked like a charm up until the last step while installing ISPConfig3. Where it complained:

>> Initial configuration  

PHP Notice:  Undefined variable: distver in /tmp/ispconfig3_install/install/lib/install.lib.php on line 135
PHP Notice:  Undefined variable: distid in /tmp/ispconfig3_install/install/lib/install.lib.php on line 135
PHP Notice:  Undefined variable: distbaseid in /tmp/ispconfig3_install/install/lib/install.lib.php on line 135
Linux Distribution or Version not recognized.

I checked my version in /etc/redhat-release and realised it was 5.3 so came back to 

/tmp/ispconfig3_install/install/lib and edited the file install.lib.php and made one change to line 122 (changed 5.2 to 5.3) :

               if(stristr($content,'CentOS release 5.3 (Final)')) {
 And it worked without any problems. I guess this has been registered with ISPConfig as a bug and would be fixed in due course of time but in the meanwhile if anyone gets stuck in a similar position, this is the quick solution.

Thanks once again for a great tutorial.


From: Leo Reice at: 2009-08-12 15:48:21

Thanks for this update...made your change and then was able to small hitch in this excellent tutorial

From: leonidas at: 2009-04-13 00:57:18

edit /tmp/ispconfig3_install/install/lib/install.lib.php, and change:


if(stristr($content,'CentOS release 5.2 (Final)')) {
$distname = 'CentOS';
$distver = '5.2';
$distid = 'centos52';
$distbaseid = 'fedora';
swriteln("Operating System: CentOS 5.2 or compatible\n");


if(stristr($content,'CentOS release 5.3 (Final)')) {
$distname = 'CentOS';
$distver = '5.3';
$distid = 'centos52';
$distbaseid = 'fedora';
swriteln("Operating System: CentOS 5.3 or compatible\n");


after that, everything works fine.

From: Omar at: 2009-04-09 15:46:33

Hi, thanks for this, perfect one, Juste in the install process of ISPConfig if you have downloaded the latest version of centos dvd will be unable to install ISPconfig you got : PHP Notice: Undefined variable: distver in /tmp/ispconfig3_install/install/lib/install.lib.php on line 135 PHP Notice: Undefined variable: distid in /tmp/ispconfig3_install/install/lib/install.lib.php on line 135 PHP Notice: Undefined variable: distbaseid in /tmp/ispconfig3_install/install/lib/install.lib.php on line 135 Linux Distribution of Version not recognized. until you edit :/tmp/ispconfig3_install/install/lib/install.lib.php replacing this : if(stristr($content,'CentOS release 5.2 (Final)')) { $distname = 'CentOS'; $distver = '5.2'; $distid = 'centos52'; $distbaseid = 'fedora'; swriteln("Operating System: CentOS 5.2 or compatible\n"); } by this : if(stristr($content,'CentOS release 5.3 (Final)')) { $distname = 'CentOS'; $distver = '5.3'; $distid = 'centos52'; $distbaseid = 'fedora'; swriteln("Operating System: CentOS 5.3 or compatible\n"); } bye.

From: Marco Cacchiani at: 2009-06-27 14:11:47

Absolutely perfect Tutorial!

Every step adequately commented, any ambiguity reported, every doubt prevented.

The best tutorial I have stumbled in in (many) years!

Thank you very much.


From: at: 2009-06-30 19:43:49

this is the by far the best tutorial i have seen before and i did the install and it works like a charm for me so thank you so very much !

From: Peter Sauer at: 2009-07-10 05:22:45

Congratulation to this HOWTO.

Following changes for Centos 5.3 were done - necessary due ongoing changes in the RPMFORGE REPO
This problems prevented to perform a yum update - some of these perl libs are necessary for ISP Config 3. This problem seems to be fixed .  But there were also some other dependency resolution problems (yum update) during installation. (eg. lzo-lib). So I changed the priority of the RPMFORGE REPO for my third test installation -  Per aspera ad astra!.

[base], [addons], [updates], [extras] ... priority=1
[centosplus],[contrib] ... priority=2
[RPMFORGE] ... priority=3

Due my repo problems I installed all needed programs (yum install...) of this documentation before the configuraion jobs step by step with a accompanying yum update to indentify depency problems.

Section 10 - newer versions available

Section 11 - I added postfix to the global exlude list of yum (yum.conf) to prevent killing this special postfix version by the next yum update!

Section 15 - package perl-DBD-mysql seems obsolet - package with the same name/content was included sooner from a CENTOS repo

Section 16 - to avoid more third party repos I download mod_fcigid and installed this package manually
add suPHP - newer version available

Section 18 - mydns - I tried also mydns-ng latest version instead of mydns. But mydns-ng dies sometimes - see So I used mydns for Centos.

As last step I installed an Open-Exchange - works fine

From: will at: 2009-07-21 07:47:03

Perfect Installation! Very well done.

From: Leo Reice at: 2009-08-12 16:43:41

Thanks so much for all the work you did on this.  Not only was I able to get a system up, but I also learned a lot.