Design a site like this with WordPress.com
Get started

Raspberry Pi: Install Apache + MySQL + PHP (LAMP Server)

In this guide, you’ll learn how to install a LAMP (Linux, Apache, MySQL, PHP) server on a Raspberry Pi. LAMP is a software bundle that is used for web development. The Raspberry Pi will have Raspbian OS installed and you’ll use phpMyAdmin to easily manage your database through a web interface.

Prerequisites

Before continuing with this tutorial:

 

After having your Raspberry Pi board prepared with Raspbian OS, you can continue with this tutorial.

You can either run the next commands on a Raspberry Pi set as a desktop computer or using an SSH connection.

Updating and Upgrading

Before starting the installation procedure, open a Terminal window and run the following commands to update your Pi:

pi@raspberrypi:~ $ sudo apt update && sudo apt upgrade -y

Install Apache2 on Raspberry Pi

Apache2 is the most widely used web server software. Briefly, a web server is the software that handles requests to access a web page. Then, depending on the page you have requested, the server will generate the document to serve you (.html.php, etc).

To install Apache2 on your Raspberry Pi, run the next command:

pi@raspberrypi:~ $ sudo apt install apache2 -y

That’s it! Apache is now installed. To test your installation, change to the /var/www/html directory and list the files:

pi@raspberrypi:~ $ cd /var/www/html
pi@raspberrypi:/var/www/html $ ls -al
index.html

You should have an index.html file in that folder. To open that page in your browser, you need to know the Raspberry Pi IP address. Use:

pi@raspberrypi:/var/www/html $ hostname -I

In my case, the Raspberry Pi IP address is 192.168.1.86. If you open your RPi IP address in any browser in your local network, a similar web page should load (http://192.168.1.86):

Install PHP on Raspberry Pi

PHP is a server side scripting language. PHP (Hypertext Preprocessor) is used to develop dynamic web applications. A PHP file contains <?php … ?> tags and ends with the extension “.php“.

To install PHP on Raspberry Pi, run:

pi@raspberrypi:/var/www/html $ sudo apt install php -y

You can remove the index.html and create a PHP script to test the installation:

pi@raspberrypi:/var/www/html $ sudo rm index.html
pi@raspberrypi:/var/www/html $ sudo nano index.php

In your index.php file add the following code to echo the “hello world” message:

<?php echo "hello world"; ?>

To save your file: press Ctrl+X, followed by y, and press Enter to exit.

Finally, restart Apache2:

pi@raspberrypi:/var/www/html $ sudo service apache2 restart

To test if Apache2 is serving .php files, open the Raspberry Pi IP address and it should display the “hello world” message from the index.php script created earlier.

If everything is working, you can remove index.php file from the /var/www/html directory:

pi@raspberrypi:/var/www/html $ sudo rm index.php

Install MySQL (MariaDB Server) on Raspberry Pi

MySQL (often pronounced My SQL) is a popular open source relational database.

Install the MySQL Server (MariaDB Server) and PHP-MySQL packages by entering the following command:

pi@raspberrypi:/var/www/html $ sudo apt install mariadb-server php-mysql -y
pi@raspberrypi:/var/www/html $ sudo service apache2 restart

After installing MySQL (MariaDB Server), it’s recommend to run this command to secure your MySQL installation:

pi@raspberrypi:/var/www/html $ sudo mysql_secure_installation

This should appear in your Terminal window:

  • You will be asked Enter current password for root (type a secure password): press Enter
  • Type in Y and press Enter to Set root password
  • Type in a password at the New password: prompt, and press Enter. Important: remember this root password, as you will need it later
  • Type in Y to Remove anonymous users
  • Type in Y to Disallow root login remotely
  • Type in Y to Remove test database and access to it
  • Type in Y to Reload privilege tables now

When the installation is completed, you’ll see the message: “Thanks for using MariaDB!”.

If you experience any error login into phpMyAdmin, you might need to create a new user to login. Those commands will create a new user with name (admin) and password (your_password).

pi@raspberrypi:/var/www/html $ sudo mysql --user=root --password
> create user admin@localhost identified by 'your_password';
> grant all privileges on *.* to admin@localhost;
> FLUSH PRIVILEGES;
> exit;

Install phpMyAdmin on Raspberry Pi

phpMyAdmin is a free software tool written in PHP, intended to handle the administration of MySQL using a web interface.

To install phpMyAdmin on a Raspberry Pi, type the following command into the terminal:

pi@raspberrypi:/var/www/html $ sudo apt install phpmyadmin -y

PHPMyAdmin installation program will ask you few questions. We’ll use the dbconfig-common.

  • Select Apache2 when prompted and press the Enter key
  • Configuring phpmyadminOK
  • Configure database for phpmyadmin with dbconfig-commonYes
  • Type your password and press OK

Enable the PHP MySQLi extension and restart Apache2 for changes to take effect:

pi@raspberrypi:/var/www/html $ sudo phpenmod mysqli
pi@raspberrypi:/var/www/html $ sudo service apache2 restart

When you go to your RPi IP address followed by /phpmyadmin (in my case http://192.168.1.86/phpmyadmin), you’ll probably see the “Not Found” error page in your browser:

If that’s the case, you’ll have to move the phpmyadmin folder to /var/www/html, run the next command:

pi@raspberrypi:/var/www/html $ sudo ln -s /usr/share/phpmyadmin /var/www/html/phpmyadmin

Now, if you list the files, it should return the phpmyadmin folder:

pi@raspberrypi:/var/www/html $ ls
phpmyadmin

Reload your web page (http://192.168.1.86/phpmyadmin), your should see the login page for phpMyAdmin web interface::

Enter your defined username (it should be Username = root) and the password you defined during the installation.

Press the Go button to login. A new page loads:

That’s it! Your Raspberry Pi board is prepared with a LAMP server: Apache2, MySQL, PHP. We’ve also decided to include phpMyAdmin in this installation for an easier database management through a web interface.

Optional Step (but recommended)

To manage your web pages, you should change the permissions for your /var/www/html/ folder. To do this, run the following commands:

pi@raspberrypi:~ $ ls -lh /var/www/
pi@raspberrypi:~ $ sudo chown -R pi:www-data /var/www/html/
pi@raspberrypi:~ $ sudo chmod -R 770 /var/www/html/
pi@raspberrypi:~ $ ls -lh /var/www/

After running these commands, you’ll see something as follows:

Wrapping Up

We hope you found this guide useful! Your Raspberry Pi has a LAMP server with phpMyAdmin that allows you to build interesting IoT projects like these:

 

Thanks for reading.

Advertisement

Published by Gnd_To_Vcc

Here to spread my knowledge . Knowledge should always be spread not stored.

6 thoughts on “Raspberry Pi: Install Apache + MySQL + PHP (LAMP Server)

  1. I am unable to login to phpMyAdmin
    *************************************************
    Can you please explain this part because
    **************************************************
    pi@raspberrypi:/var/www/html $ sudo mysql –user=root –password
    > create user admin@localhost identified by ‘your_password’;
    > grant all privileges on *.* to admin@localhost;
    > FLUSH PRIVILEGES;
    > exit;
    ****************************************************
    Every time I tried to input above command 1st I can not copy and paste the whole script at command prompt and if I try one line at a time I don’t get very far I end up with following lines
    *****************************************************
    root@Home:/# sudo mysql –user=admin –password
    Enter password:
    ERROR 1045 (28000): Access denied for user ‘admin’@’localhost’ (using password: YES)

    Like

  2. it is a perfectly defined tutorial and working for me the only place I got stuck was log in to myphpadmin so I have to redo the following task with a bit of amendment to 1st line

    pi@raspberrypi:/var/www/html $ sudo mysql –user=root –password
    > create user admin@localhost identified by ‘your_password’;
    > grant all privileges on *.* to admin@localhost;
    > FLUSH PRIVILEGES;
    > exit;

    In my install, Debian OS $ sudo mysql –user=root –password didn’t work
    I execute as follow:

    from admin command prompt $ sudo mysql (Enter and then rest is same )

    > create user admin@localhost identified by ‘My_password’;
    > grant all privileges on *.* to admin@localhost;
    > FLUSH PRIVILEGES;
    > exit;

    Next, the tutorial I am looking for is allowing root user FTP access?

    Like

  3. A perfect tutorial! It works properly. I’ve searched and tried 5 sites and always failed with LAMp-server. Congrats! You know, what you are doing!
    Thank You!
    Volker

    Like

Leave a Reply

Fill in your details below or click an icon to log in:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out /  Change )

Twitter picture

You are commenting using your Twitter account. Log Out /  Change )

Facebook photo

You are commenting using your Facebook account. Log Out /  Change )

Connecting to %s

%d bloggers like this: