LAMP Stack
Linux, Apache, MariaDB, PHP stack installation and configuration
Section titled “Linux, Apache, MariaDB, PHP stack installation and configuration”0. Specs
Section titled “0. Specs”0.0. The What
Section titled “0.0. The What”The LAMP stack is a popular open-source web development platform. The acronym stands for:
- Linux (the operating system)
- Apache (the web server)
- MySQL/MariaDB (the database management system)
- PHP/Perl/Python (the programming language for application logic)
It provides a robust foundation for building and hosting dynamic websites and web applications.
In this guide, we will use MariaDB as our database and PHP as our server-side scripting language.
0.1. Environment
Section titled “0.1. Environment”- Server Distro: Debian 12/13 or Ubuntu 22.04/24.04 LTS Server
0.2. Sources
Section titled “0.2. Sources”1. Install Packages
Section titled “1. Install Packages”Update package repositories and install Apache:
sudo apt updatesudo apt install --yes apache2Install MariaDB:
sudo apt install --yes mariadb-serverRun the security script to apply basic security settings to MariaDB:
sudo mariadb-secure-installationYou will be asked a series of questions. Here are recommended answers:
-
Enter current password for root (enter for none):
Press Enter as there is no password set yet. -
Switch to unix_socket authentication [Y/n]
The root account is already protected on Debian/Ubuntu. You can answern. -
Change the root password? [Y/n]
For the same reason, you can answern. -
For the remaining questions (remove anonymous users, disallow root login remotely, remove test database, reload privilege tables), it is safe to accept the defaults by pressing
Y.
Install PHP along with the necessary modules for Apache and MySQL/MariaDB integration:
sudo apt install --yes php libapache2-mod-php php-mysqlOptional: Depending on your application (e.g., WordPress), you may need additional PHP extensions:
sudo apt install --yes php-curl php-gd php-mbstring php-xml php-xmlrpc \ php-soap php-intl php-zipRestart Apache to load the PHP module:
sudo systemctl restart apache22. Test LAMP Stack
Section titled “2. Test LAMP Stack”We will create a test database, add a table with sample data, and then create a PHP script to retrieve this data and display it in a web page.
2.1. Database Operations
Section titled “2.1. Database Operations”Access the MariaDB shell:
sudo mariadbRun the following commands within the MariaDB shell to create a database, a table, sample data, and a dedicated database user:
CREATE DATABASE mysampledb;USE mysampledb;CREATE TABLE Employees (Name CHAR(15), Age INT, Occupation CHAR(15));INSERT INTO Employees VALUES ('Joe Smith', 26, 'Ninja');INSERT INTO Employees VALUES ('John Doe', 33, 'Sleeper');INSERT INTO Employees VALUES ('MariaDB Server', 14, 'RDBMS');GRANT ALL PRIVILEGES ON mysampledb.* TO 'appuser'@'localhost' IDENTIFIED BY 'password';FLUSH PRIVILEGES;EXIT;2.2. Create a Test PHP File
Section titled “2.2. Create a Test PHP File”Create a new PHP file in the web server’s root directory:
sudo nano /var/www/html/test.phpCopy and paste the following content into the file:
<?php $mycon = new mysqli("localhost", "appuser", "password", "mysampledb"); if ($mycon->connect_errno) { echo "Connection Error"; exit(); } $mysql = "SELECT * FROM Employees"; $result = ($mycon->query($mysql)); $rows = []; if ($result->num_rows > 0) { $rows = $result->fetch_all(MYSQLI_ASSOC); }?><!DOCTYPE html><html><body> <table> <thead> <tr> <th>Name</th> <th>Age</th> <th>Occupation</th> </tr> </thead> <tbody> <?php if(!empty($rows)) foreach($rows as $row) { ?> <tr> <td><?php echo $row['Name']; ?></td> <td><?php echo $row['Age']; ?></td> <td><?php echo $row['Occupation']; ?></td> </tr> <?php } ?> </tbody> </table></body></html><?php mysqli_close($mycon);?>2.3. Test the Setup
Section titled “2.3. Test the Setup”Open a web browser on your workstation and navigate to the following URL, replacing srv with your server’s IP address or hostname:
http://srv/test.phpYou should see a table displaying the data from the Employees table.