Convert your 35$ Raspberry Pi into a Web Server and host your own Web site
Strongly recommend using a Raspberry Pi 2 for this project. A Pi based webserver will work with the older Pi models but might be slow.
A note on Security : Sharing a website / files on the Internet requires that you make your Pi Web server to be “Internet facing” – by forwarding port 80 from your router. But before doing so, you should research and be aware of the attendant security risks and some of the measures needed to address them. A foot note at the bottom of the guide will give you a few pointers.
- Download the latest Rasbian
- Prepare a SD / Micro SD card to receive the downloaded Images.
- Un compress and Transfer the downloaded Raspbian Image to the SD / Micro SD card.
- Install Raspbian.
- Configure Raspbian for a static network.
- Install Apache Web Server
- Install PHP and Associated Packages
- Install MySql
- Configure your router to access your Webserver and a domain name that points to your webserver.
Time and Difficulty :
- Time : Between 45 and 60 mins once you have the Raspbian Image file and the rest of the software.
- Newbie Difficulty level : Moderately easy ; Will need to use terminal and type in commands.
What you will need :
- Raspberry Pi 2 Model B or one of its clones like Banana Pi M1 or M2 or Banana Pro
- Ethernet connection or a supported USB Wifi adapter for the Pi
- SD or Micro SD Card that fits into your Pi (4GB or above is recommended)
- USB Keyboard and Mouse
- Connection to a TV or Monitor
You should seriously consider :
- Learning about SSH and how to remotely access the Pi from another machine on your network.
- Learning about Port forwarding settings for your Router.
STEP 1 : Install Raspbian
- The easiest way to install Raspbian is goto the Raspberry Pi downloads page and and download Noobs.
- Follow the steps described in the Noobs setup Guide to get your Rasbian running. In the initial setup page, Select Raspbian and avoid the rest of the options for this project. The default login and password are “pi‘ and “raspberry” respectively.
- Change the default password of the Pi during the first boot sequence in the Raspberry Pi configuration menu. You can always go back to the Pi configuration menu by typing in ‘sudo raspi-config‘ at the command prompt.
- Complete the Setup, restart the Pi with a ‘ sudo reboot‘ command.
STEP 2 : Give the Pi a static IP address
By default, the Pi is set to ask for a dynamic IP address from the router. You will need to change this setting to a fixed IP address since you will be hosting a webpage on the Pi and need the address to be fixed.
Assigning a Static IP address to the Pi can either be done at the Router level (which is fairly easy but the steps to do this are router’s model and brand specific) or at the Raspberry Pi level (outlined below).
Note : replace the x in the lines below with what appears on your screen as you type in the commands.
Log on Raspbian and enter the following commands at the terminal :
- “ifconfig” (ifconfig displays details of your current network connection )
- Write down the values next to inet add:192.168.x.xxx. These numbers is the IP address that your Pi is currently at.
- Also write down the Broadcast Range (Bcast) and Subnet Mask (Mask) that appear next to the inet add.
- To get information from your router, type in “sudo route -n“. This will give you the gateway and destination values.
- Write down the Gateway = 192.168.x.x & Destination = 192.168.x.x
We have now obtained all of the data that we need to setup our Raspberry Pi with a static IP address, it’s time to save it to a config file.
Type in “sudo nano /etc/network/interfaces” ( nano is a text editor and will open the file interfaces located in the folder /etc/network)
In nano, look for the the line that reads “iface eth0 inet dhcp”. This line is telling the ethernet “eth0” networking interface to use “dhcp” (dynamic IP). Firstly, replace “dhcp or manual” with “static”.
Next , add the following lines directly below the line you just altered, with the data you had written down earlier.
The file should look something similar to the image below :
Save your file and exit out of nano by pressing ctrl+x
Reboot your Pi by typing in “sudo reboot“
Once rebooted, your Pi will be on a static IP address. Crosscheck this by typing in “ifconfig” again.
STEP 3 : Install Apache, PHP and associated Libraries
For your Raspberry Pi to serve up websites, you will need to install a webserver. Apache is a program that listens for server access requests from Internet browsers and grants them, if permitted. So if you want anyone to be able to access a website on your Raspberry Pi—including yourself—you need to install a Web server.
To install Apache, type in “sudo apt-get install apache2″
Type in the IP address of the Pi onto the browser of another computer on your network and you should see “It works!” The default landing page of Apache.
To allow your Apache server to process PHP files, you’ll need to install PHP5 and the PHP5 module for Apache.
At the Terminal, Enter “sudo apt-get install php5 libapache2-mod-php5 -y“
Once all the software is installed, restart Apache by typing in “sudo service apache2 restart“
Your tiny little Webserver is now humming!
The website is hosted at “/var/www/index.html” on your Pi.
You can edit the file or replace it with your own website.
STEP 4 : Pointing your Domain Name ; Handling Dynamic IP and giving access to the Pi from the world wide web.
Almost all ISPs provide a dynamic dns address to your home internet connection. This is done for a variety of reasons – one of which is to prevent hackers from attacking a single address consistently.
Recommend this excellent article on Techrepublic.