2014-02-11 3 views
2

Это моя программа:Как запустить CGI скрипт на сервер Apache

[[email protected] cgi-bin]# locate first.pl 
/home/Ram/Desktop/work/first.pl 
/usr/local/apache2/cgi-bin/first.pl 
[[email protected] cgi-bin]# cd /usr/local/apache2/cgi-bin/ 
[[email protected] 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"; 

Я зову скрипт из моего браузера, как это:

http://localhost/usr/local/apache2/cgi-bin/first.pl

я не получил выход, но я «получаю ошибку:

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

Я проверил в веб-браузере, является ли веб-сервер Apache работает или не используя:

https://localhost

Он показывает страницу приветствия.

Как устранить эту ошибку?

+0

Вы можете добавить свою конфигурацию виртуального хоста –

+0

означает номера портов? – Ram

+0

нет httpd.conf, или если ваш виртуальный хост имеет отдельный файл конфигурации, включите его. –

ответ

0

В вашем веб-конфигурации (httpd.conf или файл конфигурации виртуального хоста), вы должны иметь следующий фрагмент:

ScriptAlias /cgi-bin/ /etc/local/apache2/cgi-bin/ 
<Directory "/etc/local/apache2/cgi-bin"> 
    Options ExecCGI -MultiViews +SymLinksIfOwnerMatch 
</Directory> 

перезапуска сервера, не забудьте chmod +x /usr/local/apache2/cgi-bin/first.pl, а затем загрузить http://localhost/cgi-bin/first.pl

Этот предполагает, что в вашей конфигурации нет виртуальных хостов или что настроенный вами виртуальный хост является стандартным. Если необходимо, обратитесь к документам apache.

+0

' ScriptAlias ​​/ CGI-BIN/«/ вар/WWW/cgi-bin/" # #"/var/www/cgi-bin "следует изменить на любой ваш ScriptAliased # CGI-каталог существует, если у вас это настроено. # AllowOverride None Опции None Order разрешить, запретить Разрешить из всех 'это только – Ram

+0

Эти'/USR/местные/apache2/конф/httpd.conf' и '/ usr/local/apache2/conf/original/httpd.conf' находятся только на машине – Ram

+0

, на которой можно проверить httpd.conf? дайте мне знать – Ram

5

Вам необходимо изменить два файла после установки apache2 на linux.

Перейти к зажиму и установите следующие конфиги:

  1. sudo vim /etc/apache2/sites-enabled/000-default.conf и добавьте follwing:

    <Files ~ "\.(pl|cgi)$"> 
        SetHandler perl-script 
        PerlResponseHandler ModPerl::PerlRun 
        Options +ExecCGI 
        PerlSendHeader On 
    </Files> 
    
  2. sudo vim /etc/apache2/apache2.conf и добавьте следующее:

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

После добавления этих двух изменений конфигурации, написать PERL скрипт, поместите его в CGI-BIN каталога, а затем дать ему достаточные привилегии (sudo chmod 755 <filename>)

Наконец, перезагрузите apache2: sudo apache2ctl restart

Скриншоты: default.conf apache2.conf

0

Да, вышеуказанные работы процесса, но легкий путь:

  1. Включить CGI- sudo a2enmod cgi
  2. перезапустить Apache, и он работает -SERVICE apache2 Restart
  3. Запустить файл CGI http://localhost/cgi-bin/1.sh

Best Of Luck !!

Смежные вопросы