install LAMP on CentOS
install LAMP on CentOS

In this tutorial, we will show you how to install LAMP on CentOS 7 VPS or Dedicated Server. LAMP is actually an acronym for a web services solution stack consisting of Linux, the Apache HTTP Server, the MySQL or MariaDB database engines, and the PHP, Perl or Python programming language. All components are free and open-source software, and the combination is suitable for building dynamic web pages.

Requirements?

In this tutorial, we will use VPS for this set-up, which should be more than enough to run LAMP and host multiple dynamic websites using virtual host directives.

1. Update the System

As always, make sure your CentOS 7  is fully up-to-date

## yum update

2. Install MariaDB

MariaDB is the default database server in CentOS 7, so go ahead and install it with yum using the following command:

## yum install mariadb mariadb-server mysql

Once installed, add bind-address = 127.0.0.1 to /etc/my.cnf.d/server.cnf to bind MariaDB to localhost only:

## vim /etc/my.cnf.d/server.cnf
[mysqld]
#log-bin=mysql-bin #binlog_format=mixed bind-address = 127.0.0.1 

3. Restart and Configure MariaDB

Restart the MariaDB database server and enable it to start on system start-up using:

## systemctl restart mariadb
## systemctl status mariadb
## systemctl enable mariadb

4. Run MySQL post-installation script

Finally, you can run the mysql_secure_installation post-installation script to finish the MariaDB set-up. For example:

## mysql_secure_installation

Enter current password for root (enter for none): ENTER
Set root password? [Y/n] Y
Remove anonymous users? [Y/n] Y
Disallow root login remotely? [Y/n] Y
Remove test database and access to it? [Y/n] Y
Reload privilege tables now? [Y/n] Y

Recommended Reading: How to Install Froxlor on CentOS 7

5. Install Apache

OK so far so good. Next, proceed with the installation of Apache, OpenSSL, and mod_ssl using yum as in:

## yum install httpd openssl mod_ssl

6. Restart and Configure Apache

Restart Apache and add it to automatically start on your system start-up using:

## systemctl restart httpd
## systemctl status httpd
## systemctl enable httpd

Test the set-up by opening, for example, http://YOUR_SERVER_IP/ in your favorite browser. You should see the default Apache page, for example:

install lamp on centos 7

Great. Now let’s configure some extra Apache options, for example, hide its version number, its banner, etc… by adding the following to /etc/httpd/conf.d/options.conf

## vim /etc/httpd/conf.d/options.conf

TraceEnable off

## Disable Signature
ServerSignature Off

## Disable Banner
ServerTokens Prod

Test Apache configuration file and restart the web server for the changes to take effect:

## apachectl configtest
## systemctl restart httpd
## systemctl status httpd

7. Install PHP

In order to be able to run PHP based web applications, we have to add PHP support to the Apache webserver, so let’s install some required packages with yum:

## yum install php php-mysql

also, you may want to install some other PHP extensions required by your applications. Here is the list:

php-bcmath          : A module for PHP applications for 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         : Enchant spelling extension for PHP applications
php-fpm             : PHP FastCGI Process Manager
php-gd              : A module for PHP applications for using the gd graphics library
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-mysqlnd         : 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-memcache   : Extension to work with the Memcached caching daemon
php-pgsql           : A PostgreSQL database module for PHP
php-process         : Modules for PHP script using system process interfaces
php-pspell          : A module for PHP applications for using pspell interfaces
php-recode          : A module for PHP applications for 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-xml             : A module for PHP applications which use XML
php-xmlrpc          : A module for PHP applications which use the XML-RPC protocol

8. Configure PHP

OK, let’s continue with PHP configuration. Edit /etc/php.ini and set the following:

## vim /etc/php.ini

date.timezone = America/New_York
memory_limit = 64M
expose_php = Off

restart Apache using systemctl for the changes to take effect:

## systemctl restart httpd
## systemctl status httpd

Test if PHP module is loaded in Apache using:

## httpd -M | grep php

also

## php -v

You can create a test info.php script too using the following command:

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

9. Set Up Apache VHosts

Now, you would have to set-up Apache Virtual Host Directives, to be able to host multiple domains, even SSL powered ones using one IP address. So, create /etc/httpd/conf.d/vhosts.conf and add the following:

## cat /etc/httpd/conf.d/vhosts.conf

# Load my vhosts
IncludeOptional vhosts.d/*.conf

This tells Apache, to load the configuration files ending with .conf which reside in /etc/httpd/vhosts.d. As you can guess, this is the place where we put our Virtual Hosts, so let’s set-up one for domain1.com and another for domain2.net

VHOST for domain1.com

## cat /etc/httpd/vhosts.d/domain1.com.conf

<VirtualHost YOUR_SERVER_IP:80>
    ServerAdmin [email protected]
    DocumentRoot "/var/www/html/domain1.com"
    ServerName domain1.com
    ServerAlias www.domain1.com
    ErrorLog "/var/log/httpd/domain1.com-error_log"
    CustomLog "/var/log/httpd/domain1.com-access_log" combined

    <Directory "/var/www/html/domain1.com/">
        DirectoryIndex index.html index.php
        Options FollowSymLinks
        AllowOverride All
        Require all granted
    </Directory>
</VirtualHost>

VHOST for domain2.net

## cat /etc/httpd/vhosts.d/domain2.com.conf

<VirtualHost YOUR_SERVER_IP:80>
    ServerAdmin [email protected] 
    DocumentRoot "/var/www/html/domain2.com"
    ServerName domain2.com 
    ServerAlias www.domain2.com 
    ErrorLog "/var/log/httpd/domain2.com-error_log"
    CustomLog "/var/log/httpd/domain2.com-access_log" combined

    <Directory "/var/www/html/domain2.com/">
        DirectoryIndex index.html index.php
        Options FollowSymLinks
        AllowOverride All
        Require all granted
    </Directory>
</VirtualHost>

10. Restart Apache Server

Finally, restart Apache for the changes to take effect:

## apachectl configtest ## systemctl restart httpd ## systemctl status httpd

All is done now. You have installed LAMP on Centos 7 Server.

LEAVE A REPLY

Please enter your comment!
Please enter your name here