Convert your 35$ Raspberry Pi 2 into a WebPress Server and host your own Blog
The Raspberry Pi 2 with it’s low power consumption and small foot print makes for an ideal home/ soho server of all sorts. It’s a simple process to set it up to host you own blog using WordPress.
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
- Install WordPress
- Configure WordPress and start blogging.
- 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 yourRasbian running. In the initial setup page, Select Raspbian and avoid the rest of the options for this project. The default loginand 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 Blog on the Pi and need the address to be fixed so that the port forward from your router always points to the Pi.
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 -y″
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.
Type in “
<strong>sudo apt<span class="token operator">-</span>get install php5 libapache2<span class="token operator">-</span>mod<span class="token operator">-</span>php5 <span class="token operator">-</span>y</strong>"
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 : MYSQL ; DOWNLOAD AND INSTALL
We will now need to install the database engine – MySQL. During the installation process, you will be asked to create a password for root.
STEP 5 : WORDPRESS ; DOWNLOAD AND INSTALL
WordPress has it’s latest version always available at wordpress.org/latest.tar.gz and wordpress.org/latest.zip. We will use the wget command to grab the latest version. Enter the following commands at the terminal :
- “cd /var/www ” ( Go to /var/www folder)
- “sudo chown pi: . ” (Change ownership of the folder to user pi)
- “sudo rm *” ( Empty the folder of all its files and contents)
- “wget http://wordpress.org/latest.tar.gz “(Download the latest version of wordpress )
- “tar xzf latest.tar.gz” (Extract the downloaded tarball file)
- “mv wordpress/* .” ( Move the contents from the freshly extracted folder to the current folder)
- “rm -rf wordpress latest.tar.gz” ( Delete the downloaded tarball file)
Setup the WordPress Data Base by entering the following commands at the terminal
mysql -uroot -p ( Enter MySQL with user root and enter the password at the prompt )
Once, logged in, you will see the prompt mysql>. Enter the following commands at the mysql> prompt :
create database wordpress; ( Once the wordpress database is created, you should see Query OK, 1 row affected (0.00 sec) )
Exit out of MySQL prompt by entering in Ctrl+D
Configure your WordPress installation, by opening a browser on a PC on your network and entering the ipaddress of the Pi.
Click the “Let’s Go” button to begin configuration.
Fill out the information as per below :
Database Name: wordpress
User Name: root
Password: <YOUR PASSWORD>
Database Host: localhost
Table Prefix: wp_
You will now see a page from which you will need to copy the Highlighted text.
From your SSH connection, run the following :
nano wp-config.php ( Use nano to edit the file wp-config.php)
Once in side nano with the file open, Paste the highlighted text.
Now, head back to the Browser window on your PC and hit “Run the Install“. You should now see the WordPress Installation Page.
After Filling in the Forms, Click Install to complete the installation of WordPress.
STEP 6 : 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.