Вы можете сталкиваться с сокращением 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>';