In today’s article we will cover the steps on how to install the LAMP (Linux Apache MySQL and PHP) stack on a CentOS 6 based VPS.

LAMP represents a full featured stack containing the most popular web server known as Apache, the most popular database server MySQL and the most popular open-source web programming language known as PHP.

This article shows how to setup LAMP on a CentOS 6 VPS, but the procedure is quite similar for Fedora Linux and Scientific Linux. The first thing we need to do is to make sure our system is fully up-to-date. So, executing the command below will install all available updates:

# yum update -y

After ‘yum’ finished updating your system, let’s proceed with the installation of Apache. Since it is available as a package in the official CentOS repositories the installation of Apache goes like this:

# yum install httpd -y

once the installation is completed add apache to your system’s startup:

# chkconfig --levels 235 httpd on

and finally start it up:

# service httpd start

Now, navigate to http://yourdomain.tld and you should see Apache’s default page in your browser.

The next step is to install PHP as an Apache module (mod_php) so you can run PHP scripts under your Apache web server. To do this execute:

# yum install php -y

after it is installed, create a PHP info page within Apache’s document root (/var/www/html) so you can verify if PHP support is enabled on your system.

# echo -e "<?php\n\tphpinfo();\n?>" > /var/www/html/info.php

once the info.php file is created, reload apache so the newly installed PHP module can take effect.

# service httpd restart

Now open this test.php file in your browser (http://yourdomain.tld/info.php) and you should see various information about your PHP installation.

If you want to have additional PHP modules for example mysql support in your PHP, then you need to install the corresponding PHP module for MySQL. The package is named ‘php-mysql’ and can easily be installed using ‘yum’. The following is a list of the available PHP modules:

php-bcmath 			=> 	A module for PHP applications using the bcmath library
php-cli 			=> 	Command-line interface for PHP
php-common 			=> 	Common files for PHP
php-dba 			=> 	A database abstraction layer module for PHP applications
php-devel 			=> 	Files needed for building PHP extensions
php-embedded		=> 	PHP library for embedding in applications
php-enchant	 		=> 	Human Language and Character Encoding Support
php-gd 				=> 	A module for PHP applications using the gd graphics library
php-imap 			=> 	A module for PHP applications that use IMAP
php-intl 			=> 	Internationalization extension for PHP applications
php-ldap 			=> 	A module for PHP applications that use LDAP
php-mbstring        => 	A module for PHP applications which need multi-byte string handling
php-mysql 			=> 	A module for PHP applications that use MySQL databases
php-odbc 			=> 	A module for PHP applications that use ODBC databases
php-pdo 			=> 	A database access abstraction module for PHP applications
php-pear.noarch 	=> 	PHP Extension and Application Repository framework
php-pecl-apc 		=> 	APC cache optimizing PHP intermediate code
php-pecl-memcache 	=> 	Extension to work with the Memcached caching daemon
php-pgsql 			=> 	A PostgreSQL database module for PHP
php-process 		=> 	Modules for PHP scripts using system process interfaces
php-pspell 			=> 	A module for PHP applications using pspell interfaces
php-recode 			=> 	A module for PHP applications using the recode library
php-snmp 			=> 	A module for PHP applications that query SNMP-managed devices
php-soap 			=> 	A module for PHP applications that use the SOAP protocol
php-tidy 			=> 	Standard PHP module provides tidy library support
php-xml 			=> 	A module for PHP applications which use XML
php-xmlrpc 			=> 	A module for PHP applications which use the XML-RPC protocol
php-zts 			=> 	Thread-safe PHP interpreter for use with the Apache HTTP Server

so pickup the ones you need and install them using ‘yum’, for example:

# yum install php-cli php-common php-gd php-mysql -y

will install PHP command line interface, PHP’s common files and MySQL support for PHP. Do not forget to reload Apache so the new modules can take effect:

# service httpd restart

Next, we are going to install the MySQL server. This can be achieved by doing:

# yum install mysql mysql-server -y

after that add it to your system startup and start the MySQL server using the following commands:

# chkconfig --levels 235 mysqld on
# service mysqld start

Once it is started, it is recommended to set the MySQL ‘root’ passworddisable remote ‘root’ loginremove anonymous users and remove the ‘test’ database. This can be easily accomplished by executing MySQL’s ‘mysql_secure_installation’ script. So execute:

# mysql_secure_installation

and just hit ‘ENTER’ when prompted.

With all that in place you have a working LAMP stack on your CentOS 6. A good idea is to install phpMyAdmin so you can easily manage your MySQL databases via a nice frontend written in PHP. So, proceed with installing phpMyAdmin using the following commands:

(at the time of writing this article the latest version of phpMyAdmin is 3.5.1. You can always go to and install the latest version available)

# wget -P /tmp
# tar -zxf /tmp/phpMyAdmin*.tar.gz -C /var/www/html/
# mv /var/www/html/phpMyAdmin-3.5.1-english /var/www/html/dbAdmin
# cd /var/www/html/dbAdmin
# cp

The last thing you should do is open phpMyAdmin’s configuration file:

# vim

and change the following line:

$cfg['Servers'][$i]['auth_type'] = 'cookie';


$cfg['Servers'][$i]['auth_type'] = 'http';

save the file and navigate to where you can login using your MySQL ‘root’ user and it’s password.

Before we finish with the setup it is recommended to install some PHP cache engine so it can do some caching and will certainly speed things up. So, install PHP APC cache by executing:

# yum install php-pecl-apc -y

The default APC settings are fine but configuring it to your needs is recommended if you want maximum performance. For a 512MB RAM based CentOS 6 VPS the following APC configuration is optimal and is working perfectly fine. So edit/create ‘/etc/php.d/apc.ini’ containing the following options:
apc.enabled = 1
apc.shm_segments = 1
apc.shm_size = 32M
apc.optimization = 0
apc.num_files_hint = 512
apc.user_entries_hint = 1024
apc.ttl = 0
apc.user_ttl = 0
apc.gc_ttl = 600
apc.cache_by_default = 1
apc.filters = "apc\.php$"
apc.slam_defense = 0
apc.use_request_time = 1
apc.mmap_file_mask = /tmp/apc-CentOS.XXXXXX
;OR apc.mmap_file_mask = /dev/zero
apc.file_update_protection = 2
apc.enable_cli = 0
apc.max_file_size = 2M
apc.stat = 1
apc.write_lock = 1
apc.report_autofilter = 0
apc.include_once_override = 0
apc.rfc1867 = 0
apc.rfc1867_prefix = "upload_"
apc.rfc1867_name = "APC_UPLOAD_PROGRESS"
apc.rfc1867_freq = 0
apc.localcache = 1
apc.localcache.size = 512
apc.coredump_unmap = 0
apc.stat_ctime = 0

and finally reload Apache so the changes can take effect. Do that by executing:

# service httpd restart

That’s it as far as the installation of the LAMP stack goes.

Leave a Reply

Your email address will not be published. Required fields are marked *