Script CGI su Linux: esempi di configurazione Apache CGI-bin
La Common Gateway Interface (CGI) è una tecnologia essenziale che funge da collegamento tra client Web e server, consentendo l'esecuzione di script e programmi su un server Web. Sebbene le tecnologie più recenti abbiano ampiamente sostituito la CGI, rimane uno strumento utile per gli amministratori di sistema Linux per il monitoraggio rapido del sistema e le attività amministrative tramite browser web.
In questo tutorial imparerai:
- Come installare il server web Apache su Ubuntu Linux
- Come creare ed eseguire script CGI in vari linguaggi di programmazione
- Come accedere e testare gli script CGI da un browser web
FATTI INTERESSANTI SUL CGI CON APACHE SU LINUX
Apache su Linux è stata storicamente una delle piattaforme principali per CGI grazie alla sua robustezza e flessibilità. Nonostante l'avvento delle tecnologie più recenti, la CGI rimane rilevante per attività che richiedono la creazione di programmi esterni o quando si eseguono script in linguaggi non supportati nativamente dal server web. Un aspetto degno di nota è la capacità di Apache di gestire gli script CGI in modo sicuro ed efficiente, sfruttando i potenti meccanismi di isolamento dei processi di Linux. Inoltre, Apache può essere configurato per eseguire script CGI in quasi tutti i linguaggi di programmazione, rendendolo uno strumento incredibilmente versatile per la generazione di contenuti dinamici.
Installazione e configurazione
Prima di poter iniziare a utilizzare gli script CGI, è necessario configurare il server Web Apache e preparare l'ambiente per l'esecuzione CGI. Il processo prevede diversi passaggi dettagliati per garantire che Apache sia configurato correttamente per eseguire script CGI.
-
Installazione di Apache: inizia installando il server web Apache sul tuo sistema Ubuntu. Apri il tuo terminale e inserisci il seguente comando:
$ sudo apt update $ sudo apt install apache2
Abilitare il modulo CGI: Apache richiede che il modulo CGI sia abilitato per l'esecuzione di script CGI. Abilita questo modulo eseguendo:
$ sudo a2enmod cgi
Configurazione di Apache per CGI: per eseguire script CGI scritti in vari linguaggi come Python, Perl o Bash, Apache deve essere configurato per riconoscere e gestire questi file in modo appropriato. Modifica il file di configurazione di Apache, che solitamente si trova in
/etc/apache2/sites-available/
o direttamente nel file di configurazione principale, a seconda della configurazione del tuo sistema. Aggiungi o assicurati che siano presenti le seguenti configurazioni: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>
Riavvia Apache per applicare le modifiche: dopo aver configurato le impostazioni, riavvia Apache per garantire che tutte le modifiche abbiano effetto:
$ sudo systemctl restart apache2
- Verifica dell'installazione di Apache: per confermare che Apache è stato installato correttamente ed è in esecuzione, puoi visitare l'indirizzo IP del tuo server in un browser web. Dovresti vedere la pagina predefinita di Apache Ubuntu predefinita.
Questo comando aggiorna l'elenco dei pacchetti e installa il server Web Apache 2. Apache è preconfigurato con un sito Web predefinito e la possibilità di eseguire script CGI.
Questo comando abilita il modulo "cgi", necessario per gestire l'esecuzione dello script CGI.
Questa configurazione imposta un percorso URL che mappa alla directory in cui sono archiviati gli script CGI (ScriptAlias), consente l'esecuzione di script CGI nella directory specificata (Options +ExecCGI), informa Apache che i file con estensioni come .cgi, .pl , .py, .sh, .rb, .go, .js e .php devono essere trattati come script CGI (AddHandler) e consentono a tutti gli utenti di accedere agli script CGI, che potrebbe dover essere limitato in base alle politiche di sicurezza ( Richiedi tutto concesso).
Creazione di script CGI
Una volta configurato Apache per eseguire script CGI, puoi iniziare a creare script in vari linguaggi di programmazione. Ogni script deve essere eseguibile e situato nella directory CGI designata. Segui questi passaggi dettagliati per creare script CGI utilizzando Bash, Python, Perl e C/C++.
Creazione di uno script Bash CGI: inizia con un semplice script Bash che genera contenuto HTML. Utilizza il tuo editor di testo preferito per creare un file denominato
example-bash.sh
nella directory/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>"
Salvare lo script e renderlo eseguibile:
$ sudo chmod +x /usr/lib/cgi-bin/example-bash.sh
Creazione di uno script CGI Python: gli script Python possono anche servire a scopi CGI. Crea un file chiamato
example-python.py
nella directory/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>")
Salvare lo script e renderlo eseguibile:
$ sudo chmod +x /usr/lib/cgi-bin/example-python.py
Creazione di uno script CGI Perl: Perl è un altro linguaggio popolare per gli script CGI. Crea un file chiamato
example-perl.pl
nella directory/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>";
Salvare lo script e renderlo eseguibile:
$ sudo chmod +x /usr/lib/cgi-bin/example-perl.pl
Creazione di uno script CGI C: C può essere utilizzato anche per lo scripting CGI per gestire attività di elaborazione più complesse. Innanzitutto, assicurati che il compilatore GCC sia installato sul tuo sistema:
$ sudo apt install gcc
Successivamente, crea un file denominato
example-c.c
nella directory/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; }
Compilare il programma C per creare un eseguibile adatto all'elaborazione CGI:
$ sudo gcc -o /usr/lib/cgi-bin/example-c /usr/lib/cgi-bin/example-c.c
Ruby CGI Script: Ruby è un linguaggio di scripting facile da usare, ideale per script rapidi. Innanzitutto, assicurati che Ruby sia installato:
$ sudo apt install ruby
Crea un file chiamato
example-ruby.rb
nella directory/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>"
Salva questo script e rendilo eseguibile:
$ sudo chmod +x /usr/lib/cgi-bin/example-ruby.rb
Script CGI di Node.js: Node.js viene generalmente utilizzato per applicazioni server complete, ma può eseguire script CGI con una configurazione adeguata. Installa prima Node.js:
$ sudo apt-get install nodejs
Crea un file denominato
example-node.js
nella directory/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>");
Rendi eseguibile lo script:
$ sudo chmod +x /usr/lib/cgi-bin/example-node.js
Script PHP CGI: PHP può essere utilizzato anche come script CGI. Installa PHP CLI se non è già disponibile:
$ sudo apt install php-cli
Crea un file chiamato
example-php.php
nella directory/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>";
Modificare il file in modo che sia eseguibile:
$ sudo chmod +x /usr/lib/cgi-bin/example-php.php
Go CGI Script: Go è noto per le sue prestazioni ed efficienza. Installa Vai:
$ sudo apt install golang-go
Crea uno script Go denominato
example-go.go
nella directory/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>") }
Compila il programma Go e crea l'eseguibile:
$ sudo go build -o /usr/lib/cgi-bin/example-go /usr/lib/cgi-bin/example-go.go
Tcl CGI Script: Tcl è un altro linguaggio di scripting adatto allo scripting CGI. Installa Tcl:
$ sudo apt install tcl
Crea uno script Tcl denominato
example-tcl.tcl
nella directory/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>"
Rendi eseguibile lo script:
$ sudo chmod +x /usr/lib/cgi-bin/example-tcl.tcl
Questo script invia intestazioni HTTP e contenuto HTML come output, che viene visualizzato in un browser web.
Questo script esegue una funzione simile allo script Bash, utilizzando Python per produrre HTML.
Questo script Perl restituisce HTML al browser, dimostrando come funzionano gli script CGI in Perl.
Questo passaggio compila il codice sorgente C in un eseguibile denominato example-c
, che viene archiviato nella directory CGI, consentendone l'esecuzione come script CGI dal server web. Questo esempio dimostra come generare contenuto HTML utilizzando un programma C, compilato come script CGI.
Questo script restituisce contenuto HTML, simile agli esempi precedenti ma utilizzando Ruby. data-fuse="22189504506">
Questo esempio utilizza JavaScript in un ambiente Node.js per fornire contenuto CGI.
Questo script PHP genererà contenuto HTML quando si accede tramite un server web.
Questo script utilizza Go per produrre output HTML per scopi CGI.
Questo script dimostra le capacità CGI utilizzando Tcl per generare contenuto HTML.
Testare gli script CGI
Dopo aver creato script CGI in vari linguaggi di programmazione, è fondamentale testarli per assicurarsi che funzionino correttamente. Ciò comporta l'accesso a ciascun script tramite un browser Web per verificare che vengano eseguiti e restituiscano l'output previsto.
Accesso agli script CGI: utilizza il tuo browser web per accedere a ciascuno script CGI che hai creato. Ad esempio, per accedere a uno script CGI Bash, potresti utilizzare:
http://cgi-example.local/cgi-bin/example-bash.sh
- Visualizzazione degli output CGI: quando accedi agli URL dei tuoi script, il tuo server web li esegue e invia il loro output come pagina web. Controlla l'output per assicurarti che venga visualizzato correttamente e rifletta ciò che ci si aspetta dallo script. Ciò conferma che lo script funziona correttamente e che il server è configurato correttamente per gestire gli script CGI.
Allo stesso modo, sostituisci example-bash.sh
con il nome di altri script, come example-python.py
, example-perl.pl
, example-ruby.rb
, ecc., per testare questi script.
Conclusione
Sebbene possa sembrare obsoleto, CGI fornisce un modo potente per integrare script di programmazione esterni nell'ambiente web per una gestione efficace del sistema. Seguendo questa guida, puoi distribuire script CGI per varie attività amministrative e di monitoraggio sui tuoi server Linux.