PHP7 on a Raspberry Pi 3 in the cloud
Last April we moved the main blog for Raspberry Pi to a small cluster of Raspberry Pi 3s. This went so well we made it commercially available and you can now buy your Raspberry Pi 3 in the cloud.
If you’d like to have PHP 7 running on your Raspberry Pi 3 in the cloud, this guide if for you. Click the link, buy a Pi 3 and install your ssh-key and log in. This should take no more than about a minute.
PHP 7 isn’t yet part of the standard Raspbian OS, so we need to get it from somewhere else.
A brief aside about CPU architectures, Raspbian and Debian
Debian provides three versions for ARM processors:
- armel – 32 bit and ARMv5
- armhf – 32 bit, ARMv7 and a floating point unit
- arm64 – 64 bit ARMv8 and a floating point unit
The Raspberry Pi uses three different architectures:
- Raspberry Pi A, B, Zero & Zero W – 32 bit ARMv6 with floating point
- Raspberry Pi 2 – 32 bit ARMv7 with floating point
- Raspberry Pi 3 – 32/64 bit ARMv8 with floating point unit
Raspbian is an unofficial port for 32bit ARMv6 and a floating point unit, which matches the hardware for an original Raspberry Pi model B. Because we’re working here with the Pi 3 – ARM8 and floating point, we can take official debian armhf packages and run them directly on our Pi 3.
Ondřej Surý is the Debian PHP maintainer who also has a private repository with newer versions of PHP built for Debian and Ubuntu. So we can use 32 bit Debian packages for ARM 7 (armhf) and install directly on top of Raspbian.
PHP 7 packages aren’t available for armel, so this won’t work on an original Raspberry Pi, or a Pi Zero/Zero W.
Add the PHP 7 repository
deb.sury.org includes newer PHP packages built for armhf, which we can use directly. Following the instructions here here we can set up the repository:
apt-get install apt-transport-https lsb-release ca-certificates wget -O /etc/apt/trusted.gpg.d/php.gpg https://packages.sury.org/php/apt.gpg echo "deb https://packages.sury.org/php/ $(lsb_release -sc) main" > /etc/apt/sources.list.d/php.list apt-get update
Now we can install everything we need for php7 and apache2.4:
apt-get install apache2 php7.0 php7.0-curl php7.0-gd php7.0-json \ php7.0-mcrypt php7.0-mysql php7.0-opcache libapache2-mod-php7.0 echo "<?=phpinfo()?>" >/var/www/html/info.php
Wait a few moments and we have a webserver running PHP7 on our Pi3 in the cloud.
You’ll note we’ve included php7-opcache. This should accelerate our PHP performance by a factor of two or so.
Now for an application…
WordPress needs a MySQL server & PHP library for accessing MySQL. We need to restart Apache to make PHP 7 pick up the additional library.
apt-get install php7.0-mysql mysql-server apache2ctl restart mysql -u root -p mysql> create database wordpress; mysql> grant all privileges on wordpress.* to wordpress identified by 'password';
We strongly recommend you invent a better password.
cd /var/www/html wget https://wordpress.org/latest.tar.gz tar -zxvf latest.tar.gz chown -R www-data:www-data wordpress
Then navigate to
http://www.yourpiname.hostedpi.com/wordpress and finish the install through your browser.
For information on how to host on your own domain name, and how to enable HTTPS see our previous blog post on hosting a website on a Raspberry Pi.