CGI Apache — способ обработки скриптов самым популярным веб-сервером. В режиме CGI можно обрабатывать и выводить результат в браузер скрипты, написанные на bash, perl и python. Это может быть очень удобно особенно при создании админских инструментов — например, веб-интерфейсов.
CGI Apache настройка отдачи cgi скриптов
Потребуется написать простейший CGI скрипт — сделаем это на bash, также нужно активировать соответствующий модуль Apache.
Прежде всего приводим конфигурационный файл стандартного виртуального хоста apache2 в соответствие приведенному ниже образцу
mcedit /etc/apache2/sites-available/000-default.conf
<VirtualHost *:80>
ServerName www.example.com
ServerAdmin webmaster@localhost
DocumentRoot /var/www/html
ErrorLog ${APACHE_LOG_DIR}/error.log
CustomLog ${APACHE_LOG_DIR}/access.log combined
ScriptAlias /cgi-bin/ /var/www/cgi-bin/
<Directory '/var/www/cgi-bin/'>
Options +Indexes
Options +ExecCGI
AddHandler cgi-script .cgi
</Directory>
</VirtualHost>
# vim: syntax=apache ts=4 sw=4 sts=4 sr noet
Опционально — в /etc/hosts добавляем строку, согласно которой при обращении к www.example.com будет задействоваться виртуальный хост на локальной машине
mcedit /etc/hosts
127.0.01 www.example.com
Включаем модуль веб-сервера и перезапускаем сервер
a2enmod cgi
service apache2 restart
Создаем каталог, в котором будут размещаться скрипты и переходим в него
mkdir /var/www/cgi-bin/ && /var/www/cgi-bin/
Далее нужно написать какой-то скрипт. Пусть он выводит слово hello и актуальное время обращения к скрипту
mcedit script.cgi
#!/bin/bash
echo Content-type: text/plain
echo ' '
echo 'hello'
date
Как любой bash скрипт он должен быть исполняемым
chmod +x script.cgi
Настройка CGI Apache на этом завершена — теперь в браузере достаточно обратиться по адресу localhost/cgi-bin/script.cgi чтобы увидеть результат.
Поскольку ранее в /etc/hosts добавили нужное правило тот же вывод можно получить обратившись к www.example.com/cgi-bin/script.cgi
CGI скрипты требуют прав на исполнение и небезопасны, если скрипт написан плохо ему можно передать любые параметры и получить доступ к хост системе сервера.
CGI в настоящее время используется ограниченно, в основном для скриптов, для сайтов применяется более безопасный способ исполнения — fastcgi