Поиск по сайту:

CGI-скрипты в Linux: примеры конфигурации Apache CGI-bin


Common Gateway Interface (CGI) — это важная технология, которая служит связующим звеном между веб-клиентами и серверами, позволяя выполнять сценарии и программы на веб-сервере. Хотя новые технологии в значительной степени заменили CGI, они остаются полезным инструментом для системных администраторов Linux для быстрого мониторинга системы и выполнения задач администрирования через веб-браузеры.

В этом уроке вы узнаете:

  • Как установить веб-сервер Apache в Ubuntu Linux
  • Как создавать и выполнять сценарии CGI на различных языках программирования
  • Как получить доступ к сценариям CGI и протестировать их из веб-браузера

ИНТЕРЕСНЫЙ ФАКТ О CGI С APACHE В LINUX
Apache в Linux исторически был одной из основных платформ для CGI благодаря своей надежности и гибкости. Несмотря на появление новых технологий, CGI остается актуальным для задач, требующих создания внешних программ или при запуске сценариев на языках, которые изначально не поддерживаются веб-сервером. Одним из примечательных аспектов является способность Apache безопасно и эффективно обрабатывать сценарии CGI, используя надежные механизмы изоляции процессов Linux. Кроме того, Apache можно настроить для выполнения сценариев CGI практически на любом языке программирования, что делает его невероятно универсальным инструментом для создания динамического контента.

Установка и настройка

Прежде чем вы сможете начать использовать сценарии CGI, вы должны настроить веб-сервер Apache и подготовить свою среду для выполнения CGI. Этот процесс включает в себя несколько подробных шагов, позволяющих убедиться, что Apache правильно настроен для выполнения сценариев CGI.

  1. Установка Apache. Начните с установки веб-сервера Apache в вашей системе Ubuntu. Откройте терминал и введите следующую команду:

    $ sudo apt update
    $ sudo apt install apache2
  2. Эта команда обновляет список пакетов и устанавливает веб-сервер Apache 2. В Apache предварительно настроен веб-сайт по умолчанию и возможность выполнять сценарии CGI.

  3. Включение модуля CGI. Apache требует, чтобы модуль CGI был включен для запуска сценариев CGI. Включите этот модуль, выполнив:

    $ sudo a2enmod cgi
  4. Эта команда включает модуль «cgi», который необходим для обработки выполнения сценариев CGI.

  5. Конфигурация Apache для CGI. Для выполнения сценариев CGI, написанных на различных языках, таких как Python, Perl или Bash, Apache должен быть настроен на распознавание и правильную обработку этих файлов. Измените файл конфигурации Apache, который обычно находится в /etc/apache2/sites-available/ или непосредственно в основном файле конфигурации, в зависимости от настроек вашей системы. Добавьте или убедитесь, что присутствуют следующие конфигурации:

    ScriptAlias /cgi-bin/ /usr/lib/cgi-bin/
    <Directory "/usr/lib/cgi-bin">
        AllowOverride None
        Options +ExecCGI
        AddHandler cgi-script .cgi .pl .py .sh .rb .go .js .php
        Require all granted
    </Directory>
  6. Эта конфигурация устанавливает URL-путь, который соответствует каталогу, в котором хранятся сценарии CGI (ScriptAlias), позволяет выполнять сценарии CGI в указанном каталоге (Options +ExecCGI), сообщает Apache, что файлы с расширениями, такими как .cgi, .pl , .py, .sh, .rb, .go, .js и .php следует рассматривать как сценарии CGI (AddHandler) и разрешает всем пользователям доступ к сценариям CGI, которые, возможно, придется ограничить в соответствии с политиками безопасности ( Требовать все предоставлено).

  7. Перезапустите Apache, чтобы применить изменения. После настройки параметров перезапустите Apache, чтобы все изменения вступили в силу:

    $ sudo systemctl restart apache2
  8. Проверка установки Apache. Чтобы убедиться, что Apache успешно установлен и работает, вы можете посетить IP-адрес вашего сервера в веб-браузере. Вы должны увидеть страницу по умолчанию Apache Ubuntu.

Создание CGI-скриптов

После того как Apache настроен для запуска сценариев CGI, вы можете приступить к созданию сценариев на различных языках программирования. Каждый сценарий должен быть исполняемым и находиться в указанном каталоге CGI. Выполните следующие подробные шаги для создания сценариев CGI с использованием Bash, Python, Perl и C/C++.

  1. Создание CGI-скрипта Bash. Начните с простого скрипта Bash, который выводит содержимое HTML. Используйте свой любимый текстовый редактор, чтобы создать файл с именем example-bash.sh в каталоге /usr/lib/cgi-bin/.

    #!/bin/bash
    echo "Content-type: text/html"
    echo ""
    echo "<html><head><title>CGI Bash Example</title></head><body>"
    echo "<h1>Hello from Bash CGI!</h1>"
    echo "</body></html>"

    Сохраните скрипт и сделайте его исполняемым:

    $ sudo chmod +x /usr/lib/cgi-bin/example-bash.sh
  2. Этот сценарий отправляет HTTP-заголовки и содержимое HTML в качестве выходных данных, которые просматриваются в веб-браузере.

  3. Создание CGI-скрипта Python. Сценарии Python также могут служить целям CGI. Создайте файл с именем example-python.py в каталоге /usr/lib/cgi-bin/.

    #!/usr/bin/python3
    print("Content-type: text/html\n\n")
    print("<html><head><title>CGI Python Example</title></head><body>")
    print("<h1>Hello from Python CGI!</h1>")
    print("</body></html>")

    Сохраните скрипт и сделайте его исполняемым:

    $ sudo chmod +x /usr/lib/cgi-bin/example-python.py
  4. Этот сценарий выполняет ту же функцию, что и сценарий Bash, используя Python для вывода HTML.

  5. Создание сценария CGI на Perl. Perl — еще один популярный язык для сценариев CGI. Создайте файл с именем example-perl.pl в каталоге /usr/lib/cgi-bin/.

    #!/usr/bin/perl
    print "Content-type: text/html\n\n";
    print "<html><head><title>CGI Perl Example</title></head><body>";
    print "<h1>Hello from Perl CGI!</h1>";
    print "</body></html>";

    Сохраните скрипт и сделайте его исполняемым:

    $ sudo chmod +x /usr/lib/cgi-bin/example-perl.pl
  6. Этот сценарий Perl выводит HTML в браузер, демонстрируя, как сценарии CGI работают в Perl.

  7. Создание сценария CGI на языке C. Язык C также можно использовать для создания сценариев CGI для выполнения более сложных задач обработки. Сначала убедитесь, что в вашей системе установлен компилятор GCC:

    $ sudo apt install gcc

    Затем создайте файл с именем example-c.c в каталоге /usr/lib/cgi-bin/:

    #include <stdio.h>
    int main(void) {
        printf("Content-Type: text/html\n\n");
        printf("<html><head><title>CGI C Example</title></head><body>");
        printf("<h1>Hello from C CGI!</h1>");
        printf("</body></html>");
        return 0;
    }

    Скомпилируйте программу C, чтобы создать исполняемый файл, подходящий для обработки CGI:

    $ sudo gcc -o /usr/lib/cgi-bin/example-c /usr/lib/cgi-bin/example-c.c
  8. На этом этапе исходный код C компилируется в исполняемый файл с именем example-c, который хранится в каталоге CGI, что позволяет веб-серверу выполнять его как сценарий CGI. В этом примере показано, как вывести содержимое HTML с помощью программы C, скомпилированной как сценарий CGI.

  9. CGI-скрипт Ruby: Ruby — это простой в использовании язык сценариев, идеально подходящий для быстрых сценариев. Сначала убедитесь, что Ruby установлен:

    $ sudo apt install ruby

    Создайте файл с именем example-ruby.rb в каталоге /usr/lib/cgi-bin/:

    #!/usr/bin/ruby
    puts "Content-type: text/html\n\n"
    puts "<html><head><title>CGI Ruby Example</title></head><body>"
    puts "<h1>Hello from Ruby CGI!</h1>"
    puts "</body></html>"

    Сохраните этот скрипт и сделайте его исполняемым:

    $ sudo chmod +x /usr/lib/cgi-bin/example-ruby.rb
  10. Этот скрипт выводит содержимое HTML, аналогично предыдущим примерам, но с использованием Ruby. данные-предохранитель="22189504506">

  11. CGI-скрипт Node.js: Node.js обычно используется для полноценных серверных приложений, но при правильной настройке может запускать CGI-скрипты. Сначала установите Node.js:

    $ sudo apt-get install nodejs

    Создайте файл с именем example-node.js в каталоге /usr/lib/cgi-bin/:

    #!/usr/bin/node
    console.log("Content-type: text/html\n\n");
    console.log("<html><head><title>CGI Node.js Example</title></head><body>");
    console.log("<h1>Hello from Node.js CGI!</h1>");
    console.log("</body></html>");

    Сделайте скрипт исполняемым:

    $ sudo chmod +x /usr/lib/cgi-bin/example-node.js
  12. В этом примере используется JavaScript в среде Node.js для обслуживания содержимого CGI.

  13. Сценарий PHP CGI: PHP также можно использовать в качестве сценария CGI. Установите PHP CLI, если он еще не доступен:

    $ sudo apt install php-cli

    Создайте файл с именем example-php.php в каталоге /usr/lib/cgi-bin/:

    #!/usr/bin/php
    <?php
    echo "Content-type: text/html\n\n";
    echo "<html><head><title>CGI PHP Example</title></head><body>";
    echo "<h1>Hello from PHP CGI!</h1>";
    echo "</body></html>";

    Измените файл на исполняемый:

    $ sudo chmod +x /usr/lib/cgi-bin/example-php.php
  14. Этот PHP-скрипт будет генерировать HTML-контент при доступе через веб-сервер.

  15. Скрипт Go CGI: Go известен своей производительностью и эффективностью. Установить Го:

    $ sudo apt install golang-go

    Создайте скрипт Go с именем example-go.go в каталоге /usr/lib/cgi-bin/:

    // File: example-go.go
    package main
    import "fmt"
    func main() {
        fmt.Println("Content-type: text/html\n\n")
        fmt.Println("<html><head><title>CGI Go Example</title></head><body>")
        fmt.Println("<h1>Hello from Go CGI!</h1>")
        fmt.Println("</body></html>")
    }

    Скомпилируйте программу Go и создайте исполняемый файл:

    $ sudo go build -o /usr/lib/cgi-bin/example-go /usr/lib/cgi-bin/example-go.go
  16. Этот скрипт использует Go для создания вывода HTML для целей CGI.

  17. Сценарий Tcl CGI: Tcl — еще один язык сценариев, подходящий для написания сценариев CGI. Установите ТКЛ:

    $ sudo apt install tcl

    Создайте сценарий Tcl с именем example-tcl.tcl в каталоге /usr/lib/cgi-bin/:

    #!/usr/bin/tclsh
    puts "Content-type: text/html\n\n"
    puts "<html><head><title>CGI Tcl Example</title></head><body>"
    puts "<h1>Hello from Tcl CGI!</h1>"
    puts "</body></html>"

    Сделайте скрипт исполняемым:

    $ sudo chmod +x /usr/lib/cgi-bin/example-tcl.tcl
  18. Этот сценарий демонстрирует возможности CGI с использованием Tcl для генерации HTML-контента.

Тестирование CGI-скриптов

После создания сценариев CGI на различных языках программирования крайне важно протестировать их, чтобы убедиться, что они работают правильно. Это предполагает доступ к каждому сценарию через веб-браузер, чтобы убедиться, что он выполняется и отображает желаемый результат.

  1. Доступ к сценариям CGI. Используйте веб-браузер для перехода к каждому созданному вами сценарию CGI. Например, для доступа к CGI-скрипту Bash вы можете использовать:

    http://cgi-example.local/cgi-bin/example-bash.sh
  2. Аналогичным образом замените example-bash.sh именем других скриптов, например example-python.py, example-perl.pl, example-ruby.rb и т. д., чтобы протестировать эти скрипты.

  3. Просмотр результатов CGI. При доступе к URL-адресам ваших сценариев ваш веб-сервер выполняет их и отправляет выходные данные в виде веб-страницы. Проверьте вывод, чтобы убедиться, что он отображается правильно и отражает то, что ожидается от сценария. Это подтверждает, что сценарий работает правильно и сервер правильно настроен для обработки сценариев CGI.

Заключение

Хотя CGI может показаться устаревшим, он предоставляет мощный способ интеграции внешних сценариев программирования в веб-среду для эффективного управления системой. Следуя этому руководству, вы сможете развернуть сценарии CGI для различных задач администрирования и мониторинга на ваших серверах Linux.