CentOS – Installing Apache and PHP5

CentOS comes with Apache v.2.2.3 and PHP v.5.1.6 and they are easily installed via the default CentOS Package Manager ‘yum’.

The advantage of using yum (as opposed to installing via source code) is that you will get any security updates (if and when distributed) and dependencies are automatically taken care of.

Apache Install

A basic Apache install is very easy:

sudo yum install httpd mod_ssl


Oddly, the server does not start automatically when you install it so you have to do this by hand:

sudo /etc/init.d/httpd start

The first thing you will see is this error:

Starting httpd: httpd: Could not reliably determine the server's fully qualified domain name,
using for ServerName

As you can see, the address is used as the ServerName by default. It’s a good idea to set the ServerName for the next time the server is started.

Open the main apache config:

sudo nano /etc/httpd/conf/httpd.conf

Towards the end of the file you will find a section that starts with ‘ServerName’ and gives the example:


All you need to do is enter your Slice hostname or a FQDN:

ServerName demo

Note that my Slice hostname is ‘demo’.

Reload Apache:

sudo /etc/init.d/httpd reload

Now the warning has gone. Nice.

Default Page

If you navigate to your Slice IP address:

You will see the default CentOS Apache welcome screen:

Apache Welcome Screen Listing

I think that’s a good start.


Now that we have Apache installed and working properly, we need to make sure that it’s set to start automatically if the slice is rebooted.

sudo /sbin/chkconfig httpd on

Let’s check our work to confirm:

sudo /sbin/chkconfig --list httpd
httpd           0:off        1:off  2:on    3:on    4:on    5:on    6:off


PHP5 Install

Let’s move on to the PHP5 install. I’m not going to install all the modules available. Just a few common ones so you get the idea.

As before, due to using yum to install PHP5, any dependencies are taken care of:

sudo yum install php-common php-gd php-mcrypt php-pear php-pecl-memcache php-mhash php-mysql php-xml

Once done, do a quick Apache reload:

sudo /etc/init.d/httpd reload



Well, almost done.

We do need to configure Apache for our setup so we can host multiple sites and so on.

The next articles will go through the Apache layout and configuration as it may differ from a layout you have used previously (especially if you used a Debian based OS).