Configuring CGI on Mac OS X Leopard (10.5.7)
This
is a getting started guide to running CGI C and Perl scripts on Mac OS
X 10.5.7. I googled around to find several pages useful to get this
working. The hardest part for me was understanding the architecture
because most pages are concerned with getting it done rather than
understanding the pieces. I like to understand the pieces and I did
manage to dig around enough to get a basic understanding.
Starting and Stopping Apache Server
Mac
OS X comes with the Apache server already installed and you can use a
GUI to manage it. To turn the Apache server on and off, go to System
Settings -> Sharing and click the box next to Web Sharing to toggle
the server on and off. You can also use the command sudo apachectl restart
to restart the Apache Server. sudo is a command that gets you to
superuser mode - it should ask you for your password on your first use.
Configure CGI
cd /private/etc/apache2 and edit httpd.conf using an editor. You will probably need to put a sudo
in front of the edit command. Note that this approach edits the
system-level files and not the user-level files. To edit the user level
files, edit the file for your username in /private/etc/apache2/users
appropriately. Note that I haven't tried this but I assume that some
hacking around will get it to work. I'm happy with system-level access
for my purposes.
Search for <Directory "/Library/Web and change the Options line to Options Indexes ExecCGI. The ExecCGI is needed but I'm not sure if the Indexes piece is needed. At any rate, it works. One of the webpages recommended Indexes ExecCGI +FollowSymlinks AddHandler cgi-script .py but I didn't try the stuff after ExecCGI.
Save the file and restart the Apache Server.
Trying It Out
Create
an executable from a C or C++ program and put it in the directory
/Library/WebServer/CGI-Executables with execute permissions set (777
worked for me but that may be too generous). Alternately use a perl
program. You can get sample C and Perl CGI programs at Sample CGI Programs.
Restart
the Apache Server and then go to your browser and enter
http://localhost/cgi-bin/<ProgramName> and it should pipe the
output to your browser.
Useful links
Updated: June 22, 2009