HTTP: Deploy a basic CGI application

Share this link

Install the “Web server” package group:

# yum groupinstall -y "Web server"

Create the /var/www/cgi-bin/hello.pl Perl script and insert the following lines:

#!/usr/bin/perl
print "Content-type: text/html\n\n";
print "Hello, World!";

Make this script executable:

# chmod 755 /var/www/cgi-bin/hello.pl

Add a new rule to the firewall:

# iptables -I INPUT -p tcp -m state --state NEW -m tcp —dport 80 -j ACCEPT

Save the firewall configuration:

# service iptables save

Activate the httpd service at boot:

# chkconfig httpd on

Start the httpd service:

# service httpd start

Check the httpd service:

# yum install -y elinks
# elinks http://localhost/cgi-bin/hello.pl

Alternatively, if you want to use a directory other than the /var/www/cgi-bin/ default (/webapp for example), you will have some additional steps.

Create the webapp directory:

# mkdir /webapp

Copy the hello.pl file into it:

# cp /var/www/cgi-bin/hello.pl /webapp

Set up SElinux configuration for the /webapp directory:

# yum install -y setroubleshoot-server
# semanage fcontext -a -t httpd_sys_script_exec_t "/webapp(/.*)?"
# restorecon -R /webapp

Edit the /etc/httpd/conf/httpd.conf file and replace the ‘ScriptAlias‘ option with the following content:

ScriptAlias /cgi-bin/ "/webapp/"

In the same file, where the configuration of your website (or virtual host) is located, add the following lines:

<Directory "/webapp">
AllowOverride None
Options None
Order allow,deny
Allow from all
</Directory>

In the same stanza, you can optionally add the following lines (but it doesn’t seem mandatory):

Options ExecCGI
AddHandler cgi-script .pl

Check the configuration file:

# service httpd configtest

Restart the httpd service:

# service httpd restart

Check the execution of the Perl script:

# yum install -y elinks
# elinks http://localhost/cgi-bin/hello.pl
1 Star2 Stars3 Stars4 Stars5 Stars (No Ratings Yet)
Loading...

Leave a Reply

RHCSA7: Task of the day

Allowed time: 5 minutes.
Create a new user account called "bob" with password "redhat" and set expiration in one week.

RHCE7: Task of the day

Allowed time: 10 minutes.
Set up a caching-only DNS server to forward DNS queries.

Follow me on Twitter

Poll for favorite RHEL 7 book

What is your favorite RHEL 7 book to prepare RHCSA & RHCE exams?

View Results

Loading ... Loading ...

Poll for most difficult RHCSA 7 topic

What do you think is the most difficult RHCSA 7 topic?

View Results

Loading ... Loading ...

Poll for most difficult RHCE 7 topic

What do you think is the most difficult RHCE 7 topic?

View Results

Loading ... Loading ...

Archives