For most people, if they wanted to run LAMP stack on Raspberry Pi, they would probably install Raspbian via NOOBS. However, if they wanted a HTPC with Kodi, they would likely opt for OSMC or OpenELEC. I needed Kodi to run at startup with LAMP stack running behind and chose the NOOBS Raspbian route.
I am using Sandisk 8GB Class 4 on Pi 2 Model B. Initially, I was using Sandisk 16GB Class 10 but I am re-purposing it for some other usage.
For my use case, the Class 4 card is not the best though certainly not a bad choice. Good Micro SD cards outperform spindle hard disks when measuring in seek time which allows quicker random access. Google for this subject and you should find many discussions.
As for raw throughput, the results of the benchmark:
sudo hdparm -tT /dev/mmcblk0
/dev/mmcblk0: Timing cached reads: 738 MB in 2.00 seconds = 368.52 MB/sec Timing buffered disk reads: 66 MB in 3.09 seconds = 21.38 MB/sec
I hooked a keyboard mouse combo, Logitech K400 and attached CAT5 Ethernet cable.
Follow the NOOBS setup guide on Raspberry official homepage. I must emphasis that the SD card should be formatted using SD Formatter tool as specified in the guide because NOOBS threw an error saying size was different or something like that so be sure not to skip this step!
Raspbian comes with many apps that I do not need. To uninstall:
sudo apt-get purge -y libreoffice scratch minecraft-pi bluej greenfoot sonic-pi wolfram-engine idle idle3 claws-mail sudo apt-get autoremove -y
To ensure remaining apps are up-to-date:
sudo apt-get update sudo apt-get upgrade
Since I want Kodi to run at startup, there is no need for the desktop to show up.
Bring up Raspberry Pi configuration tool:
Then go to
Boot Options. Choose either
Console Autologin. The Autologin was useless to me because I usually manage my Pi via SSH.
You should change the default password. Go to
Change User Password.
There are way too many guides of such. For simplicity, my recommendation is to follow the guide on Raspberry homepage, Build a LAMP Web Server with WordPress.
The simplest tool is UncomplicatedFirewall (UFW). It encapsulates the complexity of
sudo apt-get install ufw -y
To disallow all incoming traffic by default:
sudo ufw default deny incoming
To allow all outgoing traffic by default:
sudo ufw default allow outgoing
To allow all incoming traffic from any machine on LAN (with assumption you are on 192.168.0.x subnet otherwise, change accordingly):
sudo ufw allow from 192.168.0.0/24
To enable the firewall:
sudo ufw enable
If you got kicked out from the SSH session, you have misconfigured the LAN subnet in the previous step. The only way back in is to hook a keyboard and screen to Pi to fix the problem.
To allow incoming HTTP and HTTPS traffic from any IP:
sudo ufw allow http sudo ufw allow https
Before you begin, the GPU on Pi 2 needs sufficient memory and many publicly available articles have pointed 160MB to be the sweet spot.
Bring up Pi configuration tool again:
Then go to
Advanced Options > Memory Split and enter
You will be prompted to reboot, agree to it.
To install kodi:
sudo apt-get install kodi -y
If you prefer Kodi to run on startup, you need to edit
/etc/default/kodi and change
ENABLED=1. The simplest editor is
sudo nano /etc/default/kodi
Verify that Kodi can start as a service:
sudo service kodi start
Noticed that in
/etc/default/kodi, the user to run Kodi as is
In order for a full-sized keyboard to behave as it should in Kodi, you need to grant permission:
sudo nano /etc/udev/rules.d/99-com.rules and add
KERNEL=="tty[0-9]*", GROUP="tty", MODE="0660". Reboot to test that it takes effect.
If you need Raspbian to display Chinese, Japanese, Korean (and/or other) characters in file names, you need to enable some fonts. Run
sudo raspi-config then go to
Internationalisation Options > Change Locale. Add the following:
Be sure to keep en_US.UTF-8 as your default if you do want it to be.
In Kodi, go to
Settings > Appearance > Skin > Fonts and select
If you have reached this point, you have working LAMP stack and Kodi. If you are interested in maximising the ability of Pi, read on.
Kodi runs fine out of the box but I needed it to utilise the GPU so that the CPU can be offloaded to run LAMP quicker. For this, I purchased MPEG-2 license key from Raspberry and waited for a day to receive the license via email.
To activate the key, edit the boot config:
sudo nano /boot/config.txt
decode_MPG2=<license> at the end of file replacing
<license> with the actual license.
You may ask, why?
Convinced? Do the following:
sudo dphys-swapfile swapoff sudo dphys-swapfile uninstall sudo update-rc.d dphys-swapfile remove
To check available free memory:
I have in excess of 500MB on my Pi 2 Model B with LAMP stack and Kodi running.