Introduction:
I’m a full-time software developer by day, and the primary language our company uses for our applications is PHP. The intention of this article is to describe one method for getting a Raspberry Pi to run a web-server and serve pages uses PHP.
Assumptions:
- Basic knowledge of how to connect to your Pi via SSH or VNC
- You have a running Raspberry Pi with an operating system installed and an operating network device on the Pi ( Raspbian download )
To Begin:
There is a ton of information out there about how to install an HTTP server on a linux box. For the sake of ease let it be known that this is one of many options. We’re going to be installing an NGINX server with PHP5. I chose this stack because it’s what I use daily, and it’s definitely a tested and proven set of technologies.
To install NGINX simply update the OS,
sudo apt-get update
Then install NGINX
sudo apt-get install nginx
It’s really that simple!
Now install PHP as well
sudo apt-get install php5-fpm
The apt-get program does a really good job at installing the applications and their dependencies and registering the executables with your environment’s PATH — This means that as soon as the package is installed, you can use it from the command line.
To manually start the server type
sudo /etc/init.d/nginxstart
NGINX serves files from a folder designated in the configuration. NGINX has several configuration files in their respective folders starting at /etc/nginx/. We’re only concerned with adjusting the default configuration to serve files from the /usr/share/nginx/www folder
Move your command prompt to the NGINX directory
cd /etc/nginx/
Take a look at the files in the folder if you’d like
ls -l
Now we’re going to edit the configuration file
sudo nano sites-enabled/default
Don’t be intimidated by this file, we’re only concerned with a couple of lines. Everything after a # is a comment, which is completely ignored by NGINX
server {
listen 80 default_server;
listen [::]:80 default_server;
root /usr/share/nginx/www;
index index.php index.html index.htm;
server_name _;
location ~ \.php$ {
try_files $uri /index.php =404;
fastcgi_pass unix:/var/run/php5-fpm.sock;
fastcgi_index index.php;
fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
include fastcgi_params;
}
}
Copy and paste the lines above into the editor. CTRL+X will create a prompt near the bottom asking if you want to save, type y and enter to save and return to the prompt.
You now have a running HTTP server listening for incoming HTTP requests on port 80p. You can test it out by creating the index.php file at /usr/share/nginx/www/index.php
Here’s a simple sample page that will display some server information for you.
$v){
print_r("$k - $v
");
}
Now you can visit your Pi’s IP in any browser on your network and this page should show.
Note: you won’t be able to assign a domain name on a local network without a great deal of effort, so it’s always easiest to just visit the IP address.
Next we’ll setup a web interface for controlling the car.