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

ServerName

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 127.0.0.1 for ServerName

As you can see, the address 127.0.0.1 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:

#ServerName www.example.com:80

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:

http://123.45.67.890

You will see the default CentOS Apache welcome screen:

Apache Welcome Screen Listing

I think that's a good start.

Chkconfig

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

Good.

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

Done.

Almost

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).

PickledOnion.

Article Comments:

Mike Boone commented Sun Feb 17 01:32:30 UTC 2008:

I installed Apache using these instructions, and it works fine. However, when I rebooted my CentOS slice, httpd did not start automatically. What do I need to do to ensure it starts when the system boots?

Thanks.

Mark Sundt commented Thu Feb 21 16:15:14 UTC 2008:

You need to use the chkconfig command to auto start the httpd service -

$chkconfig httpd on

You can use 'chkconfig --list' command to see all of the services that are installed and at what run level they are configured to run at.

Mike Boone commented Fri Feb 22 19:27:10 UTC 2008:

Thanks Mark!

Samuel commented Sun Mar 16 18:04:47 UTC 2008:

These tutorials are fantastic! ;)

But I missed a thing that I think that is a good security point.

How I can disable the browsing to direct ip?

i.e. in your example I would like to block browsing to http://123.45.67.890 but allow browsing to any domain hosted using http://domain.com

Appraisers commented Sat Apr 19 16:19:06 UTC 2008:

I had to specify the correct path to use the chkconfig command since it is apparently not in the path variable:

$/sbin/chkconfig --list httpd

So, what about the MySQL service? Does that require manual autostart specification as well?

andylockran commented Thu Jul 17 15:16:06 UTC 2008:

Appraisers, I'd run sudo chkconfig httpd on.

If you run sudo chkconfig --list, it'll list services including mysql. You'll then be able to see if it's turned on or off (most likely it'll be off) and then use sudo chkconfig mysql(d) on.

HTH.

Duncan Robertson commented Tue Sep 23 20:37:50 UTC 2008:

and for MySQL which is also common in the setup above:

sudo yum install mysql-server mysql sudo /sbin/service mysqld start sudo /sbin/chkconfig mysqld on

Duncan Robertson commented Tue Sep 23 20:41:12 UTC 2008:

And again with correct formatting .. doh!. For MySQL which is also common in the setup above:

  • sudo yum install mysql-server mysql
  • sudo /sbin/service mysqld start
  • sudo /sbin/chkconfig mysqld on

Karen commented Tue Sep 30 20:27:07 UTC 2008:

great tutorials guys i have one question i have it all install correctly my only problem is on outside world it says The requested URL /mysql was not found on this server. Apache/2.2.3 (CentOS) Server at athenas-domain.net Port 80

the domain seems to be valid but is unable to connect but it connects on firefox on server side opens to apache test page and everything any idea i have never install lunix before mainly done windows an thanks for the incredible tutorails

Karen commented Tue Sep 30 21:02:29 UTC 2008:

got it to work world wide with apache test page still unsure on where to add url to myslq and set up phpmyadmin

[IMG]http://i279.photobucket.com/albums/kk133/klgr2009/Screenshot.png[/IMG]

Don commented Thu Nov 27 17:18:54 UTC 2008:

How would I run a website on my slice? I have installed Apache,php,and mysql?

Derek commented Fri Dec 12 20:44:23 UTC 2008:

You have "php-pecl-memchache" but I believe it should be "php-pecl-memcache".

Thanks for the guide!

Any pointers for installing Tomcat?

Leslie Huszar commented Fri Feb 13 03:41:22 UTC 2009:

I set up Apache and php..Php works at the command line with php-i but does not work with Apache.

What .conf file do I need to edit ...

Thanks

puneet commented Sun Mar 08 04:21:20 UTC 2009:

How do I upgrade to PHP 5.2 ?

robert commented Wed Mar 25 02:54:50 UTC 2009:

i set up apache and php5 with little to no problems at all. It works great! and I am well on my way to getting the rest of my server configured with such freedom and help at every corner using support chat. thanks!

apriyee commented Mon Apr 13 02:15:45 UTC 2009:

i am has been running step by step above but at trying reload, i am looking message reloading httpd [failed]

ok ... im waiting thans ... muachhhhh !!!!

Gautam Kishore commented Thu May 21 12:44:26 UTC 2009:

PO, Thanks for the article.

What if I want to upgrade to 5.2.x on centOS?

Cheers!!

gpowers01 commented Fri May 22 12:24:44 UTC 2009:

These are great starter tutorials...thanks guys.

I also wanted to point out that there are a bunch of howto's at:

http://www.howtoforge.com/

Look for the "perfect server" series on how to setup common server roles...they are great!

Here is one for centos 5.3 i386 (32-bit):

http://www.howtoforge.com/perfect-server-centos-5.3-i386-ispconfig-2

gpowers01

Oliver commented Tue May 26 20:34:52 UTC 2009:

Thanks a lot, i made all you explained and works 100% for me. Great tutorials on your site.

speedy18us commented Sat Jun 13 15:25:12 UTC 2009:

This is my first journey into centos. I've worked before with debian and ubuntu for about 1 year. I can't believe how easy it is to install a webserver. Remains the security issues :). Thanks for the tutorial!

Bob Lakkakula commented Fri Jul 10 15:55:37 UTC 2009:

Some reason, it didn't set PHP to run under Apache. When I try to run php script, apache ignored and simply offering download of the script.

Here is how I setup which worked without trouble

yum install php httpd mod_ssl php-gd php-mcrypt php-pear php-pecl-memcache php-mhash php-mysql php-xml

So it looks like key is asking php and apache to install at same time.

Kwaku commented Sat Jul 11 12:30:41 UTC 2009:

Beautiful article. With the article I have setup my first website

Nikolay commented Sun Aug 02 21:41:57 UTC 2009:

Big thanks to author.

Luke commented Wed Aug 19 01:39:08 UTC 2009:

Hi!

Followed the instructions, had no issues during setup, httpd seems to be running but I can't access my slice through http://123.456.780.123 (fake ip obviously). It looks like Apache has some issues or something?

arrie commented Wed Aug 19 21:24:41 UTC 2009:

I have install apache using this tutor, works great. but where should i put my file? coz i dont see a public_html or www folder in my slice.

BTW, im using ruby on rails

Jandost commented Thu Sep 10 01:13:01 UTC 2009:

Hi,

I followed all the steps and I get the results as well, but when I browse my domain name it says "Oops! the link is broken". What could be the possible reason?

Note: I got all the output same as yours.

Gustavo commented Wed Jan 13 20:19:39 UTC 2010:

Hello to all, I've the same problem that Luke, I've been followed all the step and it doesn't works, can you help me, please?

Denis commented Thu Jan 14 11:02:40 UTC 2010:

The Tutorials are GREAT!!!

After I've installed PHP as per the "CentOS - Installing Apache and PHP5", I know that php is installed and with phpinfo.php I see that php is there....

So - now - what configurations do I need to do in Apache so that my php files work on my site? If someone can path me in the right directions - it would be very much appreciated.

Regards Denis

Want to comment?


(not made public)

(optional)

(use plain text or Markdown syntax)