Логин:
Пароль:

Что такое CGI, и для чего cgi-bin

Вы можете сталкиваться с сокращением CGI, занимаясь разработкой сайтов, размещая сайт на хостинге или администрируя выделенный или виртуальный сервер. В этой статье мы расшифруем данное сокращение, расскажем о CGI и окунемся в историю его создания. Также не обойдем стороной и директорию cgi-bin, которая зачастую является спутником технологии CGI.

CGI – что это? Определение и история

CGI (Commom Gateway Interface) – это спецификация интерфейса веб-сервера, которая позволяет выполнять консольные программы для генерации динамических страниц веб-серверов. Данные программы принято называть CGI-скриптами или CGI-приложениями. CGI по сути позволяет использовать консоль ввода и вывода для взаимодействия с клиентом через окно интернет-браузера. Обычно скрипт CGI выполняется во время получения запроса и в результате генерирует ответ для использования совместно с html, или сразу генерирует готовый html-код.

Интерфейс CGI позволяет передавать запросы методом GET или POST, которые попадают на обработку скрипом CGI через стандартный ввод – stdin; также CGI позволяет получать данные из переменных окружения. Результат обработки запроса CGI выводит в стандартный поток вывода - stdout.

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

История создания CGI

Интерфейс CGI был разработан в 1993 году командой Национального центра суперкомпьютерных приложений (NCSA), который изначально был назван спецификацией для вызова исполняемых файлов командной строки в списке рассылки www-talk. В ноябре 1997 года была основана рабочая группа под председательством Кена Коара, которая и присвоила официальное название новому интерфейсу – CGI (версия 1.1).

Особый вклад в разработку спецификации CGI/1.1 внесли:

  • - Роб МакКул;
  • - Джон Фрэнкс;
  • - Ари Луотонен;
  • - Тони Сандерс;
  • - Джордж Филлипс.

Для чего нужна директория cgi-bin

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

Хостинг-провайдер Xost.SU предоставляет хостинга сайтов с поддержкой CGI, где также используется директория cgi-bin для скриптов CGI. Директория cgi-bin создается в корне сайта и его поддоменов.

Путь до директории cgi-bin для сайта:

/domains/domain.tld/public_html/cgi-bin

Для поддомена name.domain.tld:

/domains/domain.tld/public_html/name/cgi-bin

Где domain.tld – это адрес сайта, а name – префикс имени его поддомена.

Простейший CGI-скрипт

Данный CGI-скрипт написан на Perl. Код скрипта, отвечающий за обработку данных, производит вывод введенного в форму имени на экран. Если имя не введено, то на экран выводится форма. Обратите внимание, что для работы скрипта в системе должна быть установлена библиотека CGI.pm.

#!/usr/bin/perl

use strict;
use warnings;
use CGI;

my $cgi = CGI->new;

print $cgi->header('text/html');

print << "EndOfHTML";
<!DOCTYPE html>
<html>
   <head>
    <title>My first CGI-script</title>
   <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
   </head>
   <body>
EndOfHTML

unless (my $username = $cgi->param('username') ) {
print << "EndOfHTML";
    <h1>My first CGI-script</h1>
    <form method="post" enctype="multipart/form-data">
     Name: <input type="text" name="username" /><br />
    <input type="submit" name="Submit!" value="Submit!" />
   </form>
   <br />
EndOfHTML
}
else
{
   print "Your name is $username.<br />";
}

print '</body></html>';