Building a LAMP Stack on CentOS 6

Compiling your own LAMP stack allows you to use the latest versions of Apache, MySQL, and PHP. Using the CentOS 6 package manager, you receive Apache 2.2, MySQL 5.1, and PHP 5.3. The package manager only installs security updates from the CentOS team.

As a system administrator, you know that keeping software updated is key. And with your webserver facing the internet, you need to make sure the web server software is updated to prevent vulnerabilities.

This article teaches you how to compile your own LAMP stack. Each of the commands will be explained using the following format.

# Commands will be listed here

An explanation of the commands will be stated here.

Step 1: Downloading/installing Apache 2.4

For this article, we will be using a preset mirror; but if you’d like, you may use another mirror from the Apache mirror page with a call from your VPS.

curl -q -s > /tmp/closersed -e 151b -e '$!d' /tmp/closer

The curl command sends an HTTP request to the URL, and retrieves its contents. We redirect the output to /tmp/closer, and then the sed command cuts it down to something you can read.

You will see a mirror link contained within the href="" section. Just replace any links specified in this article with that mirror.

Download the source to Apache 2.4.

cd /usr/src && wget && tar xvf httpd-2.4.17.tar.gz

The first part of this command will change our current directory to /usr/src, then the wget section will download the source. The last part of this command unzips the source.

Since Apache requires APR and APR-util, do the following:

wget && tar xvf apr-1.5.2.tar.gz && mv apr-1.5.2 httpd-2.4.17/srclib/aprwget && tar xvf apr-util-1.5.4.tar.gz && mv apr-util-1.5.4 httpd-2.4.17/srclib/apr-util

These commands will download the sources for APR and APR-util, and unzip them. Then, we move the source into Apache’s build directory so that Apache will build properly.

As we need a proper C compiler, we’ll need to install one using the package manager.

yum groupinstall 'Development Tools' -yyum install gcc-c++ -yyum install pcre-devel -yyum install bison bison-devel -yyum install ncurses-devel -yyum install perl-devel -y

As I’ve mentioned above, we still need to obtain Apache’s prerequisites, so we’ll be installing them using the package manager.

Great job! Now, it’s time to configure and build Apache.

cd httpd-2.4.17 && ./configure

The cd httpd-2.4.17 part changes our current working directory to httpd-2.4.17/. When we run ./configure, we’re configuring our system to build Apache.

Allow the system to configure the source for installation, it shouldn’t take too long. Once complete, execute:

make && make installcp support/apachectl /usr/sbinchmod 755 /usr/sbin/apachectl

The make section of these commands will build the software. When we run make install, we effectively install Apache onto our system. Now, we need to copy it to the secure bin directory (cp signifies copy). Finally, we’ll give it permissions to execute with chmod 755.

Congratulations, you’ve successfully installed Apache 2.4!

Step 2: Downloading/installing MySQL

Now, let’s install MySQL, a database used by many web applications. Because MySQL already provides the latest version in the form of an RPM, it’s easier to use their pre-built installation file then configuring it. We will use the official MySQL repository.

cd /usr/src && wget && rpm -i mysql57-community-release-el6-7.noarch.rpmyum install mysql-community-server -y

The first command is where we download the RPM file to enable the MySQL repository on our system. Then, rpm -i installs the RPM file. Finally, we’ll install MySQL from the official MySQL repository.

Step 3: Downloading/installing PHP

PHP has some dependencies that we need to install, so let’s get to that first.

yum install -y libxml2-devel libcurl-devel libmcrypt libmcrypt-devel

We’re using the package manager once more – but this time, we’re installing some components to allow PHP applications to run properly.

Download the source for PHP, which is done by executing the following commands:

wget && tar xvf php-5.6.15.tar.gzcd php-5.6.15./configure --with-pear=/usr/lib/pear --enable-libxml --with-pdo-mysql --with-mysqli --with-mysql --enable-mbstring --with-mcrypt --with-apxs2=/usr/local/apache2/bin/apxs --enable-maintainer-zts --with-curl=/libmake && make install

The first part, wget, is where we download the source to PHP 5.6.15. Then, we change our working directory to php-5.6.15. Finally, we configure PHP with the features required to run various web applications, such as e-commerce websites.

Do note, if you receive a message that contains “/path/to/perl”, you’ll need to edit the file /usr/local/apache2/bin/apxs.

nano /usr/local/apache2/bin/apxs

Change the first line to:

#!/usr/bin/perl -w

Step 4: Starting/stopping the LAMP stack

As we’ve built Apache from scratch, it does not include a pre-built service. We will need to setup the init script ourselves.

cd /usr/src && wget httpd-init /etc/init.d/httpdchmod 755 /etc/init.d/httpd

The first part, where we cd, changes our working directory to the directory where we build/compile software. Then, with &&, we execute anything after it as well, which in this case, downloads the service file for Apache. Finally, we give permission for it to be executed with the chmod command.

Done, and done!

Now, let’s start Apache + MySQL + PHP:

service httpd startservice mysqld start

With the service commands, we can manage the status of services. In this case, we’ve started the services httpd and mysqld.

PHP is started with Apache, it doesn’t get started through a service.


In this article, we covered how to setup a LAMP stack from scratch using updated versions of Apache/PHP/MySQL. Although it requires more administration to manage, this technique is useful when we want a newer stack than what the operating system vendor offers.

Want to contribute?

You could earn up to $300 by adding new articles

Submit your article
Suggest an update
Request an article

No comments

Powered by Blogger.