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

Be the First to Comment!

Notify of
wpDiscuz

RHCSA7: Task of the day

Allowed time: 5 minutes.
Create a user called tom. Create a directory named /private. Use an acl to only allow access (rwx) to tom to the private directory.

RHCE7: Task of the day

Allowed time: 15 minutes.
Configure a Samba server called MYSERVER, belonging to the MYGROUP group, sharing the /shared directory with the name "shared".

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 ...