
Узнайте, как разрешить выполнение CGI-сценариев на веб-сервере Apache. Это руководство включает пошаговые инструкции по добавлению необходимых конфигураций Apache для запуска CGI-сценариев, а также по установке правильных разрешений на каталог и файлы CGI.
Требования
- Облачный сервер с CentOS 7 или Ubuntu 16.04 и установленным и запущенным Apache.
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.
- Конфигурация