The Perfect Server - CentOS 5.2 [ISPConfig 3] - Page 3

4 Adjust /etc/hosts

Next we edit /etc/hosts. Make it look like this:

vi /etc/hosts

# Do not remove the following line, or various programs
# that require network functionality will fail.               localhost.localdomain localhost  server1
::1             localhost6.localdomain6 localhost6


5 Configure Additional IP Addresses

(This section is totally optional. It just shows how to add additional IP addresses to your network interface eth0 if you need more than one IP address. If you're fine with one IP address, you can skip this section.)

Let's assume our network interface is eth0. Then there is a file /etc/sysconfig/network-scripts/ifcfg-eth0 which contains the settings for eth0. We can use this as a sample for our new virtual network interface eth0:0:

cp /etc/sysconfig/network-scripts/ifcfg-eth0 /etc/sysconfig/network-scripts/ifcfg-eth0:0

Now we want to use the IP address on the virtual interface eth0:0. Therefore we open the file /etc/sysconfig/network-scripts/ifcfg-eth0:0 and modify it as follows (we can leave out the HWADDR line as it is the same physical network card):

vi /etc/sysconfig/network-scripts/ifcfg-eth0:0

# Advanced Micro Devices [AMD] 79c970 [PCnet32 LANCE]

Afterwards we have to restart the network:

/etc/init.d/network restart

You might also want to adjust /etc/hosts after you have added new IP addresses, although this is not necessary.

Now run


You should now see your new IP address in the output:

[root@server1 ~]# ifconfig
eth0      Link encap:Ethernet  HWaddr 00:0C:29:B1:97:E1
          inet addr:  Bcast:  Mask:
          inet6 addr: fe80::20c:29ff:feb1:97e1/64 Scope:Link
          RX packets:310 errors:0 dropped:0 overruns:0 frame:0
          TX packets:337 errors:0 dropped:0 overruns:0 carrier:0
          collisions:0 txqueuelen:1000
          RX bytes:28475 (27.8 KiB)  TX bytes:72116 (70.4 KiB)
          Interrupt:177 Base address:0x1400

eth0:0    Link encap:Ethernet  HWaddr 00:0C:29:B1:97:E1
          inet addr:  Bcast:  Mask:
          Interrupt:177 Base address:0x1400

lo        Link encap:Local Loopback
          inet addr:  Mask:
          inet6 addr: ::1/128 Scope:Host
          UP LOOPBACK RUNNING  MTU:16436  Metric:1
          RX packets:8 errors:0 dropped:0 overruns:0 frame:0
          TX packets:8 errors:0 dropped:0 overruns:0 carrier:0
          collisions:0 txqueuelen:0
          RX bytes:560 (560.0 b)  TX bytes:560 (560.0 b)

[root@server1 ~]#


6 Disable The Firewall And SELinux

(You can skip this chapter if you have already disabled the firewall and SELinux at the end of the basic system installation (in the Setup Agent).)

I want to install ISPConfig at the end of this tutorial which comes with its own firewall. That's why I disable the default CentOS firewall now. Of course, you are free to leave it on and configure it to your needs (but then you shouldn't use any other firewall later on as it will most probably interfere with the CentOS firewall).

SELinux is a security extension of CentOS that should provide extended security. In my opinion you don't need it to configure a secure system, and it usually causes more problems than advantages (think of it after you have done a week of trouble-shooting because some service wasn't working as expected, and then you find out that everything was ok, only SELinux was causing the problem). Therefore I disable it, too (this is a must if you want to install ISPConfig later on).



Set both Security Level and SELinux to Disabled and hit OK:

Afterwards we must reboot the system:



7 Install Some Software

First we import the GPG keys for software packages:

rpm --import /etc/pki/rpm-gpg/RPM-GPG-KEY*

Then we update our existing packages on the system:

yum update

Now we install some software packages that are needed later on:

yum groupinstall 'Development Tools'

yum groupinstall 'Development Libraries'


8 Quota

(If you have chosen a different partitioning scheme than I did, you must adjust this chapter so that quota applies to the partitions where you need it.)

To install quota, we run this command:

yum install quota

Edit /etc/fstab and add ,usrquota,grpquota to the / partition (/dev/VolGroup00/LogVol00):

vi /etc/fstab

/dev/VolGroup00/LogVol00 /                       ext3    defaults,usrquota,grpquota        1 1
LABEL=/boot             /boot                   ext3    defaults        1 2
tmpfs                   /dev/shm                tmpfs   defaults        0 0
devpts                  /dev/pts                devpts  gid=5,mode=620  0 0
sysfs                   /sys                    sysfs   defaults        0 0
proc                    /proc                   proc    defaults        0 0
/dev/VolGroup00/LogVol01 swap                    swap    defaults        0 0

Then run

touch /aquota.user /
chmod 600 /aquota.*
mount -o remount /
quotacheck -avugm
quotaon -avug

to enable quota.


9 Install Apache, MySQL, phpMyAdmin

First we enable the RPMforge repository on our CentOS system as lots of the packages that we are going to install in the course of this tutorial are not available in the official CentOS 5.2 repositories:

rpm --import

cd /tmp
rpm -ivh rpmforge-release-0.3.6-1.el5.rf.i386.rpm

(If the above link doesn't work anymore, you can find the current version of rpmforge-release here:

Afterwards we can install the needed packages with one single command (including the packages we need to build Courier-IMAP):

yum install ntp httpd mysql-server php php-mysql php-mbstring php-mcrypt phpmyadmin rpm-build gcc mysql-devel openssl-devel cyrus-sasl-devel pkgconfig zlib-devel pcre-devel openldap-devel postgresql-devel expect libtool-ltdl-devel openldap-servers libtool gdbm-devel pam-devel gamin-devel

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.