Before we install the LAMP stack, it’s a good idea to run the following command to update repository and software packages.
yum update
Enter the following command to install Apache Web server. The httpd-tools
package will install some useful utilities like Apache HTTP server benchmarking tool (ab).
yum install httpd httpd-tools
After it’s installed, we can start Apache with this command:
systemctl start httpd
Enable Apache to auto start at system boot time by running the following command.
systemctl enable httpd
Now check its status.
systemctl status httpd
Check Apache version.
httpd -v ************************************************************** By default, CentOS 8/RHEL 8 forbids public access to port 80. To allow other computers to access the web page, we need to open port 80 in firewalld, the dynamic firewall manager on RHEL/CentOS. Run the following command to open port 80.
firewall-cmd --permanent --zone=public --add-service=http
If you want to enable HTTPS on Apache later, then you also need to open port 443.
firewall-cmd --permanent --zone=public --add-service=https
The --permanent
option will make this firewall rule persistent across system reboots. Next, reload the firewall daemon for the change to take effect.
systemctl reload firewalld
Now the Apache web page is accessible publicly.
Finally, we need to make user apache
as the owner of web directory. By default it’s owned by the root user.
chown apache:apache /var/www/html -R
**************************************************************
MariaDB is a drop-in replacement for MySQL. It is developed by former members of MySQL team who are concerned that Oracle might turn MySQL into a closed-source product. Enter the following command to install MariaDB on CentOS 8/RHEL 8.
yum install mariadb-server mariadb -y
After it’s installed, we need to start it.
systemctl start mariadb
Enable auto start at system boot time.
systemctl enable mariadb
Check status:
systemctl status mariadb
Now we need to run the security script.
mysql_secure_installation
When it asks you to enter MariaDB root password, press Enter key as the root password isn’t set yet. Then enter y
to set the root password for MariaDB server.
How to Install LAMP Stack on CentOS 8/RHEL 8 – LinuxBabe
Next, you can press Enter to answer all remaining questions, which will remove anonymous user, disable remote root login and remove test database. This step is a basic requirement for MariaDB database security. (Note that the letter Y
is capitalized, which means it’s the default answer.)
How to Install LAMP Stack on CentOS 8/RHEL 8 – LinuxBabe
Now you can run the following command and enter MariaDB root password to log into MariaDB shell.
mysql -u root -p **************************************************************
Install PHP and some common modules using the following command.
yum install php php-fpm php-mysqlnd php-opcache php-gd php-xml php-mbstring -y
Apache web server on CentOS 7 by default uses PHP-FPM instead of mod_php to run PHP code, so in the above command we also installed php-fpm
. After it’s installed, we need to start it.
systemctl start php-fpm
Enable auto start at system boot time.
systemctl enable php-fpm
Check status:
systemctl status php-fpm
“Enabled” indicates that auto start at boot time is enabled and we can see that PHP-FPM is running. The php-fpm
package installs a php.conf
file in /etc/httpd/conf.d/
directory, so we need to restart Apache web server, in order to run PHP code.
systemctl restart httpd
We also need to run the following command to tell SELinux to allow Apache to execute PHP code via PHP-FPM.
setsebool -P httpd_execmem 1 Now upgrade to PHP 7 PHP 7.3 is available for CentOS 7 and Fedora distributions from the Remi repository. Add it to your system by running
sudo yum -y install http://rpms.remirepo.net/enterprise/remi-release-7.rpm sudo yum -y install epel-release yum-utils
By default, the enabled repository is for PHP 5.4. Disable this repo and enable on for PHP 7.3
sudo yum-config-manager --disable remi-php54 sudo yum-config-manager --enable remi-php73
Once the repo has been enabled, install php 7.3 on CentOS 7 or Fedora using the command
sudo yum -y install php php-cli php-fpm php-mysqlnd php-zip php-devel php-gd php-mcrypt php-mbstring php-curl php-xml php-pear php-bcmath php-json
Check version installed
$ php -v
************************************************************** Install and setup VSFTP Install vsftpd Then install vsftpd and any required packages: yum -y install vsftpd Configure vsftpd Now let’s edit the configuration file for vsftpd. Open the file with the following command: vim /etc/vsftpd/vsftpd.conf Disallow anonymous logins; this allows unidentified users to access files via FTP. Ensure that the anonymous_enable setting to NO: anonymous_enable=NO Enable local users to login, this will allow your regular user accounts to function as FTP accounts. Change the local_enable setting to YES: local_enable=YES write_enable=YES chroot_local_user=YES Exit and save the file with the command `:wq`, or with `:x`. Restart and Enable the vsftpd service: systemctl restart vsftpd Then set the vsftpd service to start at boot: systemctl enable vsftpd Allow vsftpd Through the Firewall firewall-cmd --permanent --add-port=21/tcp And reload the firewall: firewall-cmd --reload Change permissions on the users home folder: chmod a-w /home/.sites/