Introduction to CGI Scripting

To turn this program into a CGI script, we need to rename it and make it print out HTML. Here are the contents of the new file, hello.cgi:

#!/usr/bin/perl

use strict;

use warnings;

 

print "Content-type: text/html\n\n";

print "<html>\n";

print "<head>\n";

print "<title>Greetings</title>\n";

print "</head>\n";

print "<body bgcolor=\"red\"><center>\n";

print "<H1>Hello Dean!</H1>\n";

print "</body>\n";

print "</html>\n";

 

Note that the first 'print' statement tells the browser that it is receiving HTML content. This is required from all CGI scripts. Also note that when I needed to print out double-quotes around the "red" in bgcolor="red", I prefixed them with a forward-slash ('\').

When you finish writing this content then save the file and exit emacs, make the script 'executable', and then run it to test it:

ubuntu@ubuntu:~$ emacs -nw hello.cgi

ubuntu@ubuntu:~$ chmod u+x hello.cgi

ubuntu@ubuntu:~$ ./hello.cgi

Content-type: text/html

 

<html>

<head>

<title>Greetings</title>

</head>

<body bgcolor="red"><center>

<H1>Hello Dean!</H1>

</body>

</html>

ubuntu@ubuntu:~$

 

Alright, we have our first CGI script! Let's install it and try it out.

First, we need to create the /var/www/cgi-bin directory, because that is where we configured the apache2 web server to look for CGI scripts.

ubuntu@ubuntu:~$ sudo mkdir /var/www/cgi-bin

ubuntu@ubuntu:~$

 

Next, we need to copy the script to this location:

ubuntu@ubuntu:~$ sudo cp hello.cgi /var/www/cgi-bin/

ubuntu@ubuntu:~$

 

Finally, since the apache web server will need permission to execute this file, we need to give 'all users' permission to execute it:

ubuntu@ubuntu:~$ sudo chmod a+x /var/www/cgi-bin/hello.cgi

ubuntu@ubuntu:~$

 

Now bring up your browser and append /cgi-bin/hello.cgi to the IP address of the Raspberry Pi. What do you see?

Note that if you run into any errors, the apache2 logs are stored in the /var/log/apache2/ directory. The /var/log/apache2/error.log file will contain any errors with executing CGI scripts.

Copyright 2020
  • Facebook - Black Circle
  • Twitter - Black Circle
  • YouTube - Black Circle
  • Instagram - Black Circle
Follow us on these platforms