CGI-скрипты в Linux: примеры конфигурации Apache CGI-bin
Common Gateway Interface (CGI) — это важная технология, которая служит связующим звеном между веб-клиентами и серверами, позволяя выполнять сценарии и программы на веб-сервере. Хотя новые технологии в значительной степени заменили CGI, они остаются полезным инструментом для системных администраторов Linux для быстрого мониторинга системы и выполнения задач администрирования через веб-браузеры.
В этом уроке вы узнаете:
- Как установить веб-сервер Apache в Ubuntu Linux
- Как создавать и выполнять сценарии CGI на различных языках программирования
- Как получить доступ к сценариям CGI и протестировать их из веб-браузера
ИНТЕРЕСНЫЙ ФАКТ О CGI С APACHE В LINUX
Apache в Linux исторически был одной из основных платформ для CGI благодаря своей надежности и гибкости. Несмотря на появление новых технологий, CGI остается актуальным для задач, требующих создания внешних программ или при запуске сценариев на языках, которые изначально не поддерживаются веб-сервером. Одним из примечательных аспектов является способность Apache безопасно и эффективно обрабатывать сценарии CGI, используя надежные механизмы изоляции процессов Linux. Кроме того, Apache можно настроить для выполнения сценариев CGI практически на любом языке программирования, что делает его невероятно универсальным инструментом для создания динамического контента.
Установка и настройка
Прежде чем вы сможете начать использовать сценарии CGI, вы должны настроить веб-сервер Apache и подготовить свою среду для выполнения CGI. Этот процесс включает в себя несколько подробных шагов, позволяющих убедиться, что Apache правильно настроен для выполнения сценариев CGI.
-
Установка Apache. Начните с установки веб-сервера Apache в вашей системе Ubuntu. Откройте терминал и введите следующую команду:
$ sudo apt update $ sudo apt install apache2
Включение модуля CGI. Apache требует, чтобы модуль CGI был включен для запуска сценариев CGI. Включите этот модуль, выполнив:
$ sudo a2enmod cgi
Конфигурация Apache для CGI. Для выполнения сценариев CGI, написанных на различных языках, таких как Python, Perl или Bash, Apache должен быть настроен на распознавание и правильную обработку этих файлов. Измените файл конфигурации Apache, который обычно находится в
/etc/apache2/sites-available/
или непосредственно в основном файле конфигурации, в зависимости от настроек вашей системы. Добавьте или убедитесь, что присутствуют следующие конфигурации:ScriptAlias /cgi-bin/ /usr/lib/cgi-bin/ <Directory "/usr/lib/cgi-bin"> AllowOverride None Options +ExecCGI AddHandler cgi-script .cgi .pl .py .sh .rb .go .js .php Require all granted </Directory>
Перезапустите Apache, чтобы применить изменения. После настройки параметров перезапустите Apache, чтобы все изменения вступили в силу:
$ sudo systemctl restart apache2
- Проверка установки Apache. Чтобы убедиться, что Apache успешно установлен и работает, вы можете посетить IP-адрес вашего сервера в веб-браузере. Вы должны увидеть страницу по умолчанию Apache Ubuntu.
Эта команда обновляет список пакетов и устанавливает веб-сервер Apache 2. В Apache предварительно настроен веб-сайт по умолчанию и возможность выполнять сценарии CGI.
Эта команда включает модуль «cgi», который необходим для обработки выполнения сценариев CGI.
Эта конфигурация устанавливает URL-путь, который соответствует каталогу, в котором хранятся сценарии CGI (ScriptAlias), позволяет выполнять сценарии CGI в указанном каталоге (Options +ExecCGI), сообщает Apache, что файлы с расширениями, такими как .cgi, .pl , .py, .sh, .rb, .go, .js и .php следует рассматривать как сценарии CGI (AddHandler) и разрешает всем пользователям доступ к сценариям CGI, которые, возможно, придется ограничить в соответствии с политиками безопасности ( Требовать все предоставлено).
Создание CGI-скриптов
После того как Apache настроен для запуска сценариев CGI, вы можете приступить к созданию сценариев на различных языках программирования. Каждый сценарий должен быть исполняемым и находиться в указанном каталоге CGI. Выполните следующие подробные шаги для создания сценариев CGI с использованием Bash, Python, Perl и C/C++.
Создание CGI-скрипта Bash. Начните с простого скрипта Bash, который выводит содержимое HTML. Используйте свой любимый текстовый редактор, чтобы создать файл с именем
example-bash.sh
в каталоге/usr/lib/cgi-bin/
.#!/bin/bash echo "Content-type: text/html" echo "" echo "<html><head><title>CGI Bash Example</title></head><body>" echo "<h1>Hello from Bash CGI!</h1>" echo "</body></html>"
Сохраните скрипт и сделайте его исполняемым:
$ sudo chmod +x /usr/lib/cgi-bin/example-bash.sh
Создание CGI-скрипта Python. Сценарии Python также могут служить целям CGI. Создайте файл с именем
example-python.py
в каталоге/usr/lib/cgi-bin/
.#!/usr/bin/python3 print("Content-type: text/html\n\n") print("<html><head><title>CGI Python Example</title></head><body>") print("<h1>Hello from Python CGI!</h1>") print("</body></html>")
Сохраните скрипт и сделайте его исполняемым:
$ sudo chmod +x /usr/lib/cgi-bin/example-python.py
Создание сценария CGI на Perl. Perl — еще один популярный язык для сценариев CGI. Создайте файл с именем
example-perl.pl
в каталоге/usr/lib/cgi-bin/
.#!/usr/bin/perl print "Content-type: text/html\n\n"; print "<html><head><title>CGI Perl Example</title></head><body>"; print "<h1>Hello from Perl CGI!</h1>"; print "</body></html>";
Сохраните скрипт и сделайте его исполняемым:
$ sudo chmod +x /usr/lib/cgi-bin/example-perl.pl
Создание сценария CGI на языке C. Язык C также можно использовать для создания сценариев CGI для выполнения более сложных задач обработки. Сначала убедитесь, что в вашей системе установлен компилятор GCC:
$ sudo apt install gcc
Затем создайте файл с именем
example-c.c
в каталоге/usr/lib/cgi-bin/
:#include <stdio.h> int main(void) { printf("Content-Type: text/html\n\n"); printf("<html><head><title>CGI C Example</title></head><body>"); printf("<h1>Hello from C CGI!</h1>"); printf("</body></html>"); return 0; }
Скомпилируйте программу C, чтобы создать исполняемый файл, подходящий для обработки CGI:
$ sudo gcc -o /usr/lib/cgi-bin/example-c /usr/lib/cgi-bin/example-c.c
CGI-скрипт Ruby: Ruby — это простой в использовании язык сценариев, идеально подходящий для быстрых сценариев. Сначала убедитесь, что Ruby установлен:
$ sudo apt install ruby
Создайте файл с именем
example-ruby.rb
в каталоге/usr/lib/cgi-bin/
:#!/usr/bin/ruby puts "Content-type: text/html\n\n" puts "<html><head><title>CGI Ruby Example</title></head><body>" puts "<h1>Hello from Ruby CGI!</h1>" puts "</body></html>"
Сохраните этот скрипт и сделайте его исполняемым:
$ sudo chmod +x /usr/lib/cgi-bin/example-ruby.rb
CGI-скрипт Node.js: Node.js обычно используется для полноценных серверных приложений, но при правильной настройке может запускать CGI-скрипты. Сначала установите Node.js:
$ sudo apt-get install nodejs
Создайте файл с именем
example-node.js
в каталоге/usr/lib/cgi-bin/
:#!/usr/bin/node console.log("Content-type: text/html\n\n"); console.log("<html><head><title>CGI Node.js Example</title></head><body>"); console.log("<h1>Hello from Node.js CGI!</h1>"); console.log("</body></html>");
Сделайте скрипт исполняемым:
$ sudo chmod +x /usr/lib/cgi-bin/example-node.js
Сценарий PHP CGI: PHP также можно использовать в качестве сценария CGI. Установите PHP CLI, если он еще не доступен:
$ sudo apt install php-cli
Создайте файл с именем
example-php.php
в каталоге/usr/lib/cgi-bin/
:#!/usr/bin/php <?php echo "Content-type: text/html\n\n"; echo "<html><head><title>CGI PHP Example</title></head><body>"; echo "<h1>Hello from PHP CGI!</h1>"; echo "</body></html>";
Измените файл на исполняемый:
$ sudo chmod +x /usr/lib/cgi-bin/example-php.php
Скрипт Go CGI: Go известен своей производительностью и эффективностью. Установить Го:
$ sudo apt install golang-go
Создайте скрипт Go с именем
example-go.go
в каталоге/usr/lib/cgi-bin/
:// File: example-go.go package main import "fmt" func main() { fmt.Println("Content-type: text/html\n\n") fmt.Println("<html><head><title>CGI Go Example</title></head><body>") fmt.Println("<h1>Hello from Go CGI!</h1>") fmt.Println("</body></html>") }
Скомпилируйте программу Go и создайте исполняемый файл:
$ sudo go build -o /usr/lib/cgi-bin/example-go /usr/lib/cgi-bin/example-go.go
Сценарий Tcl CGI: Tcl — еще один язык сценариев, подходящий для написания сценариев CGI. Установите ТКЛ:
$ sudo apt install tcl
Создайте сценарий Tcl с именем
example-tcl.tcl
в каталоге/usr/lib/cgi-bin/
:#!/usr/bin/tclsh puts "Content-type: text/html\n\n" puts "<html><head><title>CGI Tcl Example</title></head><body>" puts "<h1>Hello from Tcl CGI!</h1>" puts "</body></html>"
Сделайте скрипт исполняемым:
$ sudo chmod +x /usr/lib/cgi-bin/example-tcl.tcl
Этот сценарий отправляет HTTP-заголовки и содержимое HTML в качестве выходных данных, которые просматриваются в веб-браузере.
Этот сценарий выполняет ту же функцию, что и сценарий Bash, используя Python для вывода HTML.
Этот сценарий Perl выводит HTML в браузер, демонстрируя, как сценарии CGI работают в Perl.
На этом этапе исходный код C компилируется в исполняемый файл с именем example-c
, который хранится в каталоге CGI, что позволяет веб-серверу выполнять его как сценарий CGI. В этом примере показано, как вывести содержимое HTML с помощью программы C, скомпилированной как сценарий CGI.
Этот скрипт выводит содержимое HTML, аналогично предыдущим примерам, но с использованием Ruby. данные-предохранитель="22189504506">
В этом примере используется JavaScript в среде Node.js для обслуживания содержимого CGI.
Этот PHP-скрипт будет генерировать HTML-контент при доступе через веб-сервер.
Этот скрипт использует Go для создания вывода HTML для целей CGI.
Этот сценарий демонстрирует возможности CGI с использованием Tcl для генерации HTML-контента.
Тестирование CGI-скриптов
После создания сценариев CGI на различных языках программирования крайне важно протестировать их, чтобы убедиться, что они работают правильно. Это предполагает доступ к каждому сценарию через веб-браузер, чтобы убедиться, что он выполняется и отображает желаемый результат.
Доступ к сценариям CGI. Используйте веб-браузер для перехода к каждому созданному вами сценарию CGI. Например, для доступа к CGI-скрипту Bash вы можете использовать:
http://cgi-example.local/cgi-bin/example-bash.sh
- Просмотр результатов CGI. При доступе к URL-адресам ваших сценариев ваш веб-сервер выполняет их и отправляет выходные данные в виде веб-страницы. Проверьте вывод, чтобы убедиться, что он отображается правильно и отражает то, что ожидается от сценария. Это подтверждает, что сценарий работает правильно и сервер правильно настроен для обработки сценариев CGI.
Аналогичным образом замените example-bash.sh
именем других скриптов, например example-python.py
, example-perl.pl
, example-ruby.rb
и т. д., чтобы протестировать эти скрипты.
Заключение
Хотя CGI может показаться устаревшим, он предоставляет мощный способ интеграции внешних сценариев программирования в веб-среду для эффективного управления системой. Следуя этому руководству, вы сможете развернуть сценарии CGI для различных задач администрирования и мониторинга на ваших серверах Linux.