In this tutorial we will be setting up a LAMP stack , which includes Apache 2.4, MySQL 8 or MariDB 10, PHP 7 on CentOS 7.
This comprehensive Linux guide expects that you run the following commands as root user but if you decide to run the commands as a different user then ensure that the user has
sudoaccess and that you precede each of the privileged commands with
Since we have to install MySQL or Maria DB and PHP modules, we need to set up EPEL repository. EPEL (Extra Packages for Enterprise Linux) provides us the extra packages we need to install on our CentOS 7 server.
By default, CentOS 7 does not have these packages as native, so we will enable the EPEL.
Using wget, we will download and install the EPEL RPM to enable it.
wget http://dl.fedoraproject.org/pub/epel/epel-release-latest-7.noarch.rpm rpm -ivh epel-release-latest-7.noarch.rpm
Once we have enabled the EPEL, we can verify it using yum.
We should see a list, where all the EPEL packages were shown. Now lets move forward and install our LAMP stack.
Install Apache Server
Using yum, we will be installing our Apache web server. Also, by default CentOS 7 comes with native Apache 2.4 package.
yum install httpd
Now start the http service and enable it to start at boot .
systemctl start httpd.service systemctl enable httpd.service
CentOS 7 server comes with firewall service for network filtering. If firewall is enabled, then we need to perform the below steps.
firewall-cmd --permanent --zone=public --add-service=http firewall-cmd --reload
Now, open web browser on a remote PC and type in the URL http://<Your server IP>. You should see a page similar to the following.
We have successfully installed our Apache web server. Lets move forward with further installation process.
Install MySQL / MariaDB
Since MariaDB is a MySQL fork of the original MySQL developer Monty Widenius, We will go with MariaDB.
yum -y install mariadb-server mariadb
After installation we need to start and enable the DB services.
systemctl start mariadb.service systemctl enable mariadb.service
Now we need to configure the Database to complete the installation
We will be asked to enter the password for the MySQL root account, since
we haven’t set this yet, so just hit ENTER . Then we will be asked to set that password. we should type Y to set a root password.
To rest of all the questions, the script asks, you should press Y, followed by the ENTER key at each prompt. During this process we will remove anonymous users and the test database, disable remote root logins, and load these new rules MySQL.
NOTE :This is an optional step, since MariaDB is already installed. If you want to go with MySQL instead of MariaDB, then this for you.
We need to download and add the MySQL community repository to proceed further.
wget http://repo.mysql.com/mysql-community-release-el7-5.noarch.rpm rpm -ivh mysql-community-release-el7-5.noarch.rpm yum update
Now we need to install, start and enable MySQL. During the installation, we will be asked to accept the results from the .rpm file’s GPG verification. If no error or mismatch occurs, enter
yum install mysql-server systemctl start mysqld
Further installation is similar to MariaDB..
Now to generate dynamic content, we need to install PHP. We can get a full list of available PHP modules and extensions using the following command.
yum search php
To install PHP, we need to install the modules for a basic MariaDB support in PHP and PhpMyAdmin. we will be installing the following modules
yum install -y php php-mysql php-pdo php-gd php-mbstring
we need to create a test PHP file in our document root. We will create a codesposts.php file in the document root to test our configuration
<?php phpinfo(); ?>
After pasting the above code to our codesposts.php file, save and close the file.
Restart the httpd service and we can visit this web page in a web browser from the below shown URL.
systemctl restart httpd.service http://<Your_serverIP>/codesposts.php
we should see a web page that has been generated by PHP with information about your server.
phpMyAdmin is a web interface, used to mange our MySQL/MariaDB database.
To avoid using MySQL command line to manage our database we will install PhpMyAdmin package by enabling CentOS 7.0 rpmforge repository by below commands.
yum install http://pkgs.repoforge.org/rpmforge-release/rpmforge-release-0.5.3-1.el7.rf.x86_64.rpm yum install phpmyadmin
We need to configure phpMyAdmin to allow connections from remote hosts by editing phpmyadmin.conf file
Comment out the following lines, using “#” and save the file.
# Order Deny,Allow # Deny from all # Allow from 127.0.0.1
We will be using http authentication instead of cookie based authentication. Open
Modify the below line as follows.. and restart the apache service.
[...] $cfg['Servers'][$i]['auth_type'] = 'http'; // Authentication method (config, http or cookie based)? [...]
systemctl restart httpd.service
Now after the configuration, we can check our PHP configuration from the below URL
We will get an output something similar to the above. We have successfully completed the installation process of LAMP stack on CentOS 7.
Thanks for being with us, hope this help you in gaining knowledge and we are always ready to help you. For furthers queries or suggestions, kindly drop a comment below.