RHEL7: Deploy an Apache basic CGI application.

Share this link

Note: This is an RHCE 7 exam objective.

Prerequisites

First, follow the instructions to install an Apache web server.

Configuration Procedure

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

Restart the httpd service:

# systemctl restart httpd

Check the SELinux httpd_enable_cgi boolean is on (it is on by default):

# getsebool httpd_enable_cgi
httpd_enable_cgi --> on

Note: Another SELinux boolean useful to remember is httpd_can_sendmail: it allows the httpd server to send emails.

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

Move the hello.pl file into it:

# mv /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 line:

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
Require all granted
</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:

# apachectl configtest
Syntax OK

Restart the httpd service:

# systemctl restart httpd

Testing Time

Check the execution of the Perl script:

# yum install -y elinks
# elinks http://localhost/cgi-bin/hello.pl
1 Star2 Stars3 Stars4 Stars5 Stars (2 votes, average: 5.00 out of 5)
Loading...

Leave a Reply

7 Comments on "RHEL7: Deploy an Apache basic CGI application."

Notify of
Sort by:   newest | oldest
codingberg
Member

“Options ExecCGI” and “AddHandler cgi-script .pl” should be added only if you don’t specify ScriptAlias directive within VirtualHost. Otherwise, if you use ScriptAlias you can indeed skip it.

alexritm
Member
alexritm

do I need to use particularly a Perl test script for this task? or it can be PHP or Python one? or it can be requested to deploy any of them on the exam?

Jaz
Member
Jaz

You should also include how to work on WSGI script followed by mod_wsgi package.

twostep
Member
twostep

When the problem is with opening cgi page “500 Internal Server Error”, you have to verify also the httpd error log file, because when selinux is not set properly, the warning is not displaying in /var/log/audit/audit.log,
but in /var/log/httpd/error_log only.

According to http://selinuxproject.org/page/NB_AL:
“…It is not mandatory for SELinux-aware applications to audit events or even log them in the audit log. The decision is made by the application designer.”

wpDiscuz

RHCSA7: Task of the day

Allowed time: 10 minutes.
Create an EXT4 file system mounted by UUID in /etc/fstab under /vol based on a logical volume of 28 logical extents.

RHCE7: Task of the day

Allowed time: 10 minutes.
Change the SSH process configuration to only listen on the 443 port.

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

Recent Comments