Back

LAMP Installation on Manjaro

Introduction

A LAMP configuration is a linux distro setup to use Apache, a well known and popular httpd, a SQL server such as MariaDB or Mysql, and a scripting language like PHP, Python or Perl; thus forming the acronym LAMP. However, a LAMP server could in fact use Nginx or another httpd server or Postresql or many other databases.

Installation

The following is based on here.

On Manjaro/Archlinux it is always advisable to run:

sudo pacman -Syu
sudo pacman -S apache php php-apache mysql

to update your system with current software and install the required packages. You should be prompted with two database options. Select mariadb.

Apache

Edit the Apache configuration file and comment out the following line if it is not already: :

sudo nano /etc/httpd/conf/httpd.conf
# LoadModule unique_id_module modules/mod_unique_id.so

Enable and start the Apache service with systemd:

sudo systemctl enable httpd
sudo systemctl start httpd

Verify the status:

sudo systemctl status httpd
sudo journalctl -xe

Create a test index.html with the following html:

sudo nano /srv/http/index.html
<html>
<head>
    <title>Hello World</title>
</head>
<body>
    <h2>Hello World</h2>
</body>
</html>

Visit your localhost in your favourite browser http://localhost or http://localipaddress to confirm you receive Hello World.

MariaDB

Initialize the database with:

sudo mysql_install_db --user=mysql --basedir=/usr --datadir=/var/lib/mysql

like Apache we need to use systemd to load the MariaDB service permanently

sudo systemctl enable mysqld
sudo systemctl start mysqld

Check the status of the service

sudo systemctl status mysqld
sudo journalctl -xe

run the following script to setup the root user

sudo mysql_secure_installation
PHP

Revisit the Apache configuration file:

sudo nano /etc/httpd/conf/httpd.conf

and comment out the mod_mpm_event and either add or uncomment the following:

#LoadModule mpm_event_module modules/mod_mpm_event.so
LoadModule mpm_prefork_module modules/mod_mpm_prefork.so
LoadModule php7_module modules/libphp7.so
AddHandler php7-script php
Include conf/extra/php7_module.conf

Create a test for php:

sudo nano /srv/http/test.php
<?php
    phpinfo();

Restart Apache and vist http://localhost/test.php

sudo systemctl restart httpd

You are done. You can either use phpMyAdmin or your IDE such as phpstorm/datagrip from JetBrains to interact with your database. I personally opt to use my IDE.

phpMyAdmin

Install phpMyAdmin:

sudo pacman -S phpmyadmin

Edit the php.ini file and uncomment the following:

sudo nano /etc/php/php.ini
extension=bz2.so
extension=mysqli.so

We need to map phpMyAdmin to an url with Apache:

sudo nano /etc/httpd/conf/extra/phpmyadmin.conf
Alias /phpmyadmin "/usr/share/webapps/phpMyAdmin"
<Directory "/usr/share/webapps/phpMyAdmin">
    DirectoryIndex index.php
    AllowOverride All
    Options FollowSymlinks
    Require all granted
</Directory>

and include the configuration to the Apache configuration file:

sudo nano /etc/httpd/conf/httpd.conf
Include conf/extra/phpmyadmin.conf

We need to also edit the phpMyAdmin configuration file and restart the Apache service:

sudo nano /etc/webapps/phpmyadmin/config.inc.php
$cfg['blowfish_secret'] = '`somesecrethere`';
sudo systemctl restart httpd