Если у вас уже есть написанные CGI-скрипты, то прежде чем скопировать их на сервер, вы должны сделать следующие действия:
Perl: /usr/bin/perl
Python: /usr/local/bin/python
Теперь вы можете скопировать свои скрипты на сервер.
Загружать файлы необходимо в каталог ваш_домен/cgi. Файлы из данного каталога будут доступны по адресу http://ваш_домен/cgi-bin/имя_файла. Для того чтобы CGI-скрипты запускались из корневого каталога сайта ваш_домен/docs, необходимо создать в нем файл .htaccess со следующим содержимым:
AddHandler cgi-script .cgi .pl .py
Options +ExecCGI
На скрипты необходимо установить права доступа 755 или -rwxr-xr-x.
Права доступа можно изменить с помощью файлового менеджера панели управления.
Рассмотрим написание простого CGI скрипта на Perl.
Если вы работаете под управлением ОС «Windows», то для работы с кодом скриптов вам необходимо использовать специализированный текстовый редактор, например, Notepad++. Стандартную для Windows программу «Блокнот» лучше не использовать. Для демонстрации работы CGI скрипта необходимо создать два файла. Первый файл представляет собой html-документ с формой ввода текста:
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=windows-1251">
<title> Пример работы с Perl</title>
</head>
<body>
<form method='post' action='/cgi-bin/hello.pl'>
Введите ваше имя:<input type='text' name='name'>
<input type='submit'>
</form>
</body>
</html>
Второй файл является CGI-скриптом
#!/usr/bin/perl
use CGI;
print "Content-type: text/html\n\n";
$my_cgi = new CGI;
$your_name = $my_cgi->param('name');
print "Hello $your_name!!!";
Первый файл вы можете разместить в каталоге ваш_домен/docs. Второй файл вы должны разместить в директории ваш_домен/cgi. Обязательно проверьте права на ваш CGI-скрипт. Они должны быть установлены в значение -rwxr-xr-x или 755.
Для проверки установленных PERL-модулей необходимо последовательно выполнить следующие действия:
vim modules.pl
Таким образом будет создан файл modules.pl
#!/usr/bin/perl -w
use ExtUtils::Installed;
$installed = ExtUtils::Installed->new();
foreach $module ($installed->modules()){
printf "Module: %s\t\tVersion: %s\n", $module, $installed->version($module);
}
Для выхода из редактора с сохранением только что набранного текста, нажимаем Esc и затем :wq
perl ./modules.pl
Вы можете установить на хостинг дополнительные модули PERL из исходных кодов. Прежде чем приступать к установке, подключите последнюю версию PHP в разделе Управление веб-сервером → Управление модулем PHP панели управления хостингом, при этом будет подключен обновленный набор программного обеспечения, который может включать в себя нужный вам модуль Perl.
Перед установкой требуется задать переменные окружения, чтобы установленные модули были доступны интерпретатору.
cat >> ~/.bashrc << "EOF"
PERL5LIB=$HOME/PERL/lib:$HOME/PERL/lib/perl5
export PERL5LIB
MANPATH=$HOME/PERL/share/man
export MANPATH
EOF
source ~/.bashrc
Для того чтобы установить выбранный модуль для PERL, необходимо выполнить следующую последовательность команд:
cd ~/tmp
wget http://search.cpan.org/CPAN/authors/id/S/SA/SAMPO/Net-SMPP-1.12.tar.gz
tar -xf Net-SMPP-1.12.tar.gz
cd Net-SMPP-1.12
Установку необходимо выполнять в отдельный каталог, например, /home/login/PERL, где login — идентификатор услуги хостинга, указав переменную INSTALL_BASE.
perl Makefile.PL INSTALL_BASE=$HOME/PERL
make
make install
perl Build.PL
./Build --install_base $HOME/PERL
./Build install --install_base $HOME/PERL
Для использования установленных модулей в perl-скрипте нужно их подключить, добавив следующие строки в файл скрипта:
use lib "/home/login/PERL/lib";
use lib "/home/login/PERL/lib/perl5";
use Net::SMPP;
Для того чтобы веб-сервер Apache мог работать с дополнительными модулями, необходимо в панели управления хостингом включить модуль env_module и добавить следующие строки в файл .htaccess в корневом каталоге сайта или в каталоге с CGI-скриптами:
SetEnv PERL5LIB /home/login/PERL/lib:/home/login/PERL/lib/perl5
где login — идентификатор услуги хостинга.
Ошибка 403
Если при обращении к скрипту вы видите сообщение об ошибке 403, это значит, что на скрипт установлены некорректные права доступа. На CGI-скрипты необходимо установить атрибут исполнения (права доступа 755 или -rwxr-xr-x). Атрибуты можно изменить с помощью файлового менеджера панели управления.
Ошибка 500
Если во время запуска своего скрипта вы видите сообщение о 500-ой ошибке, это значит, что в скрипте есть ошибка из-за которой транслятор Perl'а не может успешно завершить свою работу. Ошибка может быть как синтаксическая (например, вы забыли где-то закрыть кавычку или фигурную скобку), так и логическая, например, в результате каких-либо ваших действий происходит деление на ноль. Для того, чтобы понять причину ошибки, вам необходимо посмотреть лог-файлы веб-сервера, которые хранятся в каталоге /var/log/.