ru en
Помощь
Версия для печати

Perl и CGI программы — особенности использования

Содержание


  1. Использование готовых скриптов

    Если у вас уже есть написанные 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.
    Права доступа можно изменить с помощью файлового менеджера панели управления.

  2. Написание простейшего CGI-скрипта

    Рассмотрим написание простого 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.

  3. Просмотр установленных модулей PERL

    Для проверки установленных PERL-модулей необходимо последовательно выполнить следующие действия:

    vim modules.pl

    Таким образом будет создан файл modules.pl

    • Теперь необходимо его отредактировать, для этого нажмем Insert, напишем следующее:
    #!/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

  4. Установка дополнительных модулей PERL

    Вы можете установить на хостинг дополнительные модули 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, необходимо выполнить следующую последовательность команд:

    • на странице http://search.cpan.org/ найдите нужный модуль, например, Net::SMPP и скопируйте ссылку для загрузки архива с исходными кодами модуля
    • подключитесь к хостингу по SSH и перейдите в каталог для временных файлов

    cd ~/tmp

    • загрузите архив на хостинг по найденной ссылке с помощью wget

    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.

    • Для установки модуля с помощью файла Makefile.PL используйте команды:

    perl Makefile.PL INSTALL_BASE=$HOME/PERL
    make
    make install

    • Для установки модуля с помощью файла Build.PL используйте команды:

    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 — идентификатор услуги хостинга.

  5. Установка дополнительных модулей PERL

    Ошибка 403

    Если при обращении к скрипту вы видите сообщение об ошибке 403, это значит, что на скрипт установлены некорректные права доступа. На CGI-скрипты необходимо установить атрибут исполнения (права доступа 755 или -rwxr-xr-x). Атрибуты можно изменить с помощью файлового менеджера панели управления.

    Ошибка 500

    Если во время запуска своего скрипта вы видите сообщение о 500-ой ошибке, это значит, что в скрипте есть ошибка из-за которой транслятор Perl'а не может успешно завершить свою работу. Ошибка может быть как синтаксическая (например, вы забыли где-то закрыть кавычку или фигурную скобку), так и логическая, например, в результате каких-либо ваших действий происходит деление на ноль. Для того, чтобы понять причину ошибки, вам необходимо посмотреть лог-файлы веб-сервера, которые хранятся в каталоге /var/log/.

Copyright © 2000-2024 Registrar R01
Информация для клиентов: +7 (495) 783-3-783; info@r01.ru
Техническая поддержка: +7 (495) 783-3-783; support@r01.ru
Центральный офис: г. Москва, Большой Гнездниковский переулок, дом 1, строение 2 ( м. «Тверская», выход №9, Бизнес-Центр «Вознесенский»).