Scroll to navigation

GOLF(2gg) Development GOLF(2gg)

NAME

CGI - Golf documentation (running-application)

DESCRIPTION

You can run Golf application as a CGI (Common Gateway Interface) program, if your web server supports CGI. This is not recommended in general, as CGI programs do not exhibit great performance. However in some cases you may need to use CGI, such as when performance is not of critical importance, or when other methods of execution are not feasible.

To run your application with CGI, use command-line program. Since Golf applications require running in the security context of the user who owns the application, you must use "suexec" (or similar feature) of your web server.

The following script sets up an application named "func_test" (any kind of application will do) to run as CGI (after it's been compiled with gg) on Apache web server running on Ubuntu 18 and up. For other web servers/distros, consult their documentation on how to setup CGI for a program.

#prep repos

sudo apt update #enable CGI on apache
sudo a2enmod cgid
sudo service apache2 restart #Install suexec-custom for Apache
sudo apt-get -y install apache2-suexec-custom
sudo a2enmod suexec
sudo service apache2 restart #setup a "gg" directory under cgi-bin where your application can run
sudo mkdir -p /usr/lib/cgi-bin/gg
sudo chown $(whoami):$(whoami) /usr/lib/cgi-bin/gg
sudo sed -i '1c\/usr/lib/cgi-bin/gg' /etc/apache2/suexec/www-data #copy your program to "gg" directory
sudo mv $GG_ROOT/var/lib/gg/bld/func-test/func-test /usr/lib/cgi-bin/gg
sudo chown $(whoami):$(whoami) /usr/lib/cgi-bin/gg/func-test
sudo chmod 700 /usr/lib/cgi-bin/gg/func-test #add user/group of Gliim application user to suexec
sudo sed -i "/SuexecUserGroup/d" /etc/apache2/sites-enabled/000-default.conf
sudo sed -i "s/<\/VirtualHost>/SuexecUserGroup $(whoami) $(whoami)\n<\/VirtualHost>/g" /etc/apache2/sites-enabled/000-default.conf
sudo service apache2 restart #the application is at http://127.0.0.1/cgi-bin/gg/func-test?... #substitute 127.0.0.1 for your web address

SEE ALSO


Running application

application-setup CGI command-line service See all documentation

$VERSION $DATE