The LAMP stands for Linux, Apache, MySQL/MariaDB, and PHP. It is an acronym for a Linux/UNIX server with Apache as the server engine, MySQL/MariaDB as the database engine, and PHP as the primary server-side script language. It is also known as LAMP Stack. Usually, Lamp Stack is selected for the construction and development of high-performance websites owing to the strong foundation it has.

Advantages of using Lamp stack in web development?

Application and websites built with the lamp will have scalable features.

Modules of Lamp Stack are customizable.

Lamp Stack can work on a wide range of operating systems.

Lamp Stack has obtained an impervious structure and high-end encryption for assuring security.

This step by step guide will help you to install/ configure the LAMP stack on CENTOS/RHEL 7.6 but should work for all versions of CENTOS /RHEL with minimal changes.

My Lab Setup :

Step 1: Check the server hostname, IP address



Note: In addition to the LAMP package (Linux, Apache, MySQL/MariaDB, and PHP), we need to install PhpMyAdmin. It is a free open source web interface tool, used to manage the MySQL/MariaDB database. By default, this package is not found in the official CentOS repositories. You can get it the same from the EPEL repository. It provides useful software packages that are not included in the official CentOS or Red Hat repositories.

Step 2 : Install the EPEL repository



Use the following command to install EPEL Repository

# rpm –import /etc/pki/rpm-gpg/RPM-GPG-KEY*

# yum -y install epel-release

Step 3: Install Apache Server

Use the following command to install Apache web server

# yum install httpd -y

Use the following command to Start httpd service and enable it to start automatically after every reboot

# systemctl enable httpd

# systemctl start httpd

# systemctl status httpd

Step 4: Add a Firewall rule



Use the following command to Open firewall ports for HTTP (80) and HTTPS (443) services.

# firewall-cmd –permanent –add-port=80/tcp

# firewall-cmd –permanent –add-port=443/tcp

# firewall-cmd –reload

To list all the applicable information for the default zone. If you want to know more about firewalld service, have a look at this article on 15 basic useful firewall-cmd commands in Linux.

# firewall-cmd –list-all

Step 5: Test the default Apache page in Browser and Terminal



Now, Open your web browser and give your server IP address as like “http://192.168.0.100” and if you see the Apache test page as shown below, then it means your Apache server is operation and successfully installed.

Use the following command to check the webpage in Terminal

# elinks 192.168.0.100

Step 6: Install MySQL / MariaDB Server



I’ve chosen to use MariaDB right here as a substitute for MySQL. MariaDB is an open source relational database administration system (DBMS) that is a well-matched drop-in substitute for the extensively used MySQL database technology. MariaDB is used due to the fact it is fast, scalable and robust. MariaDB is developed as open source software program and as a relational database, it affords an SQL interface for getting get entry to data. Even performance wise MariaDB is better than mysql , click here to know more about MariaDB vs Mysql.

Note : If you prefer to use the MySQL branded database in CentOS/ RHEL 7, issuing the following command. # yum install mysql mysql-server -y

Use the following command to Install MariaDB

# yum install mariadb-server mariadb -y

Use the following command to Start MariaDB service and enable it to start automatically after every reboot

# systemctl enable mariadb

# systemctl start mariadb

# systemctl status mariadb

Step 6.1: Securing MySQL-MariaDB



Now, it is time to do the security fix to MariaDB. This fix will be given the choice to change the MariaDB root password, get rid of anonymous user accounts, disable root logins backyard of localhost, and remove test databases and reload privileges. This can be executed using the below command :

Note: By issuing the below command, you will be prompted to enter your MariaDB root password, simply press Enter due to the fact you haven’t set any password yet. Please be aware that this should not be confused by the root password of your server. Once you have done this, you will be asked a sequence of questions. We have provided the solutions below for simplicity. It is recommended that you acknowledgment ‘YES’ to these options:

# mysql_secure_installation

Step 6.2: Restart MariaDB



# systemctl restart mariadb

Your Database (MariaDB) is ready now, let us move on to the next session

Step 7: Install PHP

PHP is a general-purpose server-side scripting language. It can run scripts, connect to our MySQL databases to get information and hand the processed content over to our web server to display.

OR

You can choose to install PHP-FPM. PHP-FPM is an alternative of Fast CGI daemon for PHP, it approves the websites to deal with loads. PHP-FPM continues pools (workers that can reply to PHP request) to accomplish this. PHP-FPM is faster than the usual CGI-based methods, because it does not over consume the system resources especially memory. (# yum install php php-fpm)

Here I choose the traditional PHP only.

Use the following command to Install PHP

# yum install php php-mysql -y

After installing PHP and the dependent packages of PHP modules, we need to restart Apache service in order to work the PHP.

# systemctl restart httpd

Finally, the LAMP stack is configured successfully. Now we can look at the versions of each individual package of the LAMP stack (like Apache, Mysql/MariaDB, and PHP) in the command line.

Step 7.1: LAMP stack version check in Command Line



# php -v

# httpd -v

# mysql -V

Step 7.2: Now we can Test the PHP Process via web (apache) server



This can be accomplished by creating a very fundamental PHP script (we can call it info.php). It has to be placed the default document root of the Apache server is i.e, /var/www/html in (RHEL/CENTOS 7) directory and call it in a browser like ‘http://192.168.0.100/info.php’. The file will display a lot of useful data about our PHP installation. Use the code to create phpinfo as following :

# vi /var/www/html/info.php

<?php

phpinfo();

?>

Now, open your browser and enter ‘http://192.168.0.100/info.php‘

The PHP information web page comes precisely like the below screenshot. This page essentially gives you data about your server from the point of view of PHP. It is beneficial for debugging and to ensure that your settings are being utilized correctly.

It is adviced to remove this file after this check due to the fact it should definitely provide data about your server to unauthorized users.

Step 8: Install phpMyAdmin

PhpMyAdmin is a free open source web interface tool, used to manage the MySQL/MariaDB database.

Use the following command to Install phpMyAdmin

# yum install phpMyAdmin -y

Step 8.1: Configure phpMyAdmin



Once you have completed the installation of phpMyAdmin, you need to edit the configuration file of phpMyAdmin. This file can be located in /etc/httpd/conf.d/phpMyAdmin.conf

# vi /etc/httpd/conf.d/phpMyAdmin.conf

Follow the changes made below , Most importantly you need to add ‘Require all granted’, it will permit you to access the phpMyAdmin on network.

Alias /phpMyAdmin /usr/share/phpMyAdmin

Alias /phpmyadmin /usr/share/phpMyAdmin <Directory /usr/share/phpMyAdmin/>

AddDefaultCharset UTF-8 <IfModule mod_authz_core.c>

# Apache 2.4

Require all granted

</IfModule>

<IfModule !mod_authz_core.c>

# Apache 2.2

Order Deny,Allow

Deny from All

Allow from 127.0.0.1

Allow from ::1

</IfModule>

</Directory>

Note: save the file :wq!

Step 8.2: Set authentication type in phpMyAdmin



Next, we need to change the authentication type in phpMyAdmin. The phpMyAdmin comes with 4 types of authentication (config,cookie,http,signon). You can choose either one of them based on your requirements. The default one comes with ‘cookie’.

Following are the differences :

‘config’ authentication ($auth_type = ‘config’) is the plain historic way: username and password are saved in config.inc.php. ‘cookie’ authentication mode ($auth_type = ‘cookie’) permits you to log in as any correct MySQL user account with the support of cookies. ‘http’ authentication allows you to log in as any correct MySQL user account through HTTP-Auth. ‘signon’ authentication mode ($auth_type = ‘signon’) permits you to log in from prepared PHP session data or the usage of furnished PHP script.

Use the following command to find/edit the file :

# vi /etc/phpMyAdmin/config.inc.php

## FIND this line and here I choose http auth type, change cookie to http as like below :

$cfg[‘Servers’][$i][‘auth_type’] = ‘http’; // Authentication method (config, http or cookie based)?

Note: save the file :wq!

Step 8.3: Restart httpd service



Finally restart the httpd service in order to access the phpMyAdmin via http.

# systemctl restart httpd

When getting access to your phpMyAdmin, you will be prompted to enter the login credentials of the user account you created earlier, here I have created only the MySQL root account and password, therefore, you can use the same credentials to access the phpMyAdmin in your testing LAB, but in real-time you need to create different accounts based on requirement. It is recommended to use different user accounts for the individual projects for staging and production.

http://your_domain_or_ip_address/phpmyadmin

After entering the basic authentication, you’ll be taken to the phpMyAdmin login page where you need to enter your MySQL/MariaDB administrative user login credentials.

Once you log in, you’ll see the phpMyAdmin dashboard, which will appear something like this:

Conclusion

Congratulations, your LAMP stack is now complete and you can run any type of dynamic website. Also you can get entry to your MySQL/MariaDB database via phpMyAdmin.

I believe this article will help you to setup LAMP Stack at your end. Drop me your feedback/comment.

Thank you!