Включение CGI-скриптов на Apache

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

Примечание

Apache установлен и работает на стандартной установке Linux по умолчанию. Если ваш сервер был создан с минимальной установкой, вам нужно будет установить и настроить Apache, прежде чем продолжить.

Включите CGI-сценарии в конфигурации Apache

Для запуска CGI-скриптов на сервере Linux с Apache необходимо настроить две вещи:

  • Apache должен быть настроен так, чтобы разрешить запуск CGI-скриптов.
  • Скрипт должен быть загружен в нужное место и иметь нужные права доступа.

Настройки Apache для CGI-скриптов на CentOS 7

Откройте для редактирования файл httpd.conf:

sudo nano /etc/httpd/conf/httpd.conf

Найдите раздел, который гласит:

#
# "/var/www/cgi-bin" should be changed to whatever your ScriptAliased
# CGI directory exists, if you have that configured.
#
<Directory "/var/www/cgi-bin">
    AllowOverride None
    Options None
    Require all granted
</Directory>

Добавьте следующие две строки в этот раздел:

Options +ExecCGI
AddHandler cgi-script .cgi .pl .py

Первая строка указывает Apache на выполнение CGI-файлов, загруженных в каталог /var/www/cgi-bin. Вторая строка указывает Apache, что любой файл, заканчивающийся на .cgi, .pl или .py, считается CGI-скриптом.

Теперь раздел гласит:

#
# "/var/www/cgi-bin" should be changed to whatever your ScriptAliased
# CGI directory exists, if you have that configured.
#
<Directory "/var/www/cgi-bin">
    AllowOverride None
    Options +ExecCGI
    AddHandler cgi-script .cgi .pl
    Require all granted
</Directory>

Сохраните и выйдите из файла. Затем перезапустите Apache, чтобы изменения вступили в силу:

sudo systemctl restart httpd

Настройки Apache для CGI-скриптов на Ubuntu 16.04

В Ubuntu 16.04 Apache по умолчанию настроен на выполнение CGI-скриптов в указанном каталоге /usr/lib/cgi-bin. Вам не потребуется изменять какие-либо конфигурации Apache.

Однако для запуска CGI-скриптов необходимо включить CGI-модуль Apache. Для этого вам нужно будет создать симлинк:

sudo ln -s /etc/apache2/mods-available/cgi.load /etc/apache2/mods-enabled/

Затем перезапустите Apache, чтобы изменения вступили в силу:

sudo systemctl restart apache2

Загрузите CGI-скрипт и установите разрешения

Чтобы проверить работоспособность CGI-скрипта на вашем сервере, мы рекомендуем начать с тестового скрипта. Создайте файл test.cgi в назначенной cgi-bin сервера и откройте его для редактирования:

  • CentOS 7:sudo nano /var/www/cgi-bin/test.cgi
  • Ubuntu 16.04:sudo nano /usr/lib/cgi-bin/test.cgi

Добавьте следующее содержимое в этот файл:

#!/usr/bin/perl
print "Content-type: text/htmlnn"; 
print "<h1>Hello world</h1>";

Сохраните и выйдите из файла.

Затем дайте файлу правильные разрешения на выполнение:

  • CentOS 7:sudo chmod 755 /var/www/cgi-bin/test.cgi
  • Ubuntu 16.04:sudo chmod 755 /usr/lib/cgi-bin/test.cgi

Просмотрите скрипт в браузере, используя либо доменное имя, либо IP-адрес:

http://example.com/cgi-bin/test.cgi
http://192.168.0.1/cgi-bin/test.cgi

Вы увидите «Hello world».

Устранение ошибок CGI-скрипта

Ошибка 404: Это означает, что URL-адрес не найден. Проверьте, что скрипт был добавлен в правильный каталог.

  • CentOS 7: Каталог CGI по умолчанию — var/www/cgi-bin/.
  • Ubuntu 16.04: Каталог CGI по умолчанию — /usr/lib/cgi-bin.

Ошибка сервера 500: Это означает, что скрипт не имеет правильных прав доступа. Проверьте, что скрипт имеет исполняемые (chmod 755) разрешения:

jdoe@localhost:/etc/apache2# ll /usr/lib/cgi-bin/test.cgi
rwxr-xr-x 1 jdoe jdoe 85 Jul 22 16:53 /usr/lib/cgi-bin/test.cgi*

Правильные разрешения для файла — rwxr-xr-x.

  • Конфигурация

    Оцените статью
    cdelat.ru
    Добавить комментарий