Apache и CGI скрипты


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

Сказать спасибо