How to run cgi script on apache server

apache, cgi, perl

Solution

You basically need to change two files after installing apache2 on linux.

Go to terminal and set the following configs:

`sudo vim /etc/apache2/sites-enabled/000-default.conf` and add the follwing:

<Files ~ "\.(pl|cgi)$">
    SetHandler perl-script
    PerlResponseHandler ModPerl::PerlRun
    Options +ExecCGI
    PerlSendHeader On
</Files>

`sudo vim /etc/apache2/apache2.conf` and add the following:

`<Directory /var/www/cgi-bin/> AddHandler cgi-script .cgi .pl Options FollowSymLinks ExecCGI AllowOverride None </Directory>`

After adding these two config changes, write a perl script, place it in the cgi-bin directory, and then give it sufficient privileges (`sudo chmod 755 <filename>`)

Finally, restart apache2: `sudo apache2ctl restart`

Screenshots:

Problem

This is my program: ``` [root@localhost cgi-bin]# locate first.pl /home/Ram/Desktop/work/first.pl /usr/local/apache2/cgi-bin/first.pl [root@localhost cgi-bin]# cd /usr/local/apache2/cgi-bin/ [root@localhost cgi-bin]# vi first.pl #!/usr/bin/perl -w use warnings; use warnings; use CGI; print "content-type: text/html\n\n"; print "<h2>Hello, World!</h2>\n"; ``` I am calling the script from my browser like this: http://localhost/usr/local/apache2/cgi-bin/first.pl I didn't get output, but I'm getting an error: Not Found The requested URL /usr/local/apache2/cgi-bin/first.pl was not found on this server. Apache/2.2.15 (CentOS) Server at localhost Port 80 I checked in web browser whether the Apache web server is working or not by using : https://localhost It us showing the welcome page. How do I resolve this error?

Original source