Hoe CGI-scripts inschakelen op Apache
CGI- scripts zijn een praktische oplossing om de belasting van de Apache-webserver te verlichten. De benodigde Apache-configuraties kunnen snel worden ingesteld en het proces voor het verlenen van rechten voor de map en de CGI-bestanden is eenvoudig.
Wat zijn de vereisten voor CGI-scripts op Apache?
Om de Common Gateway Interface (CGI) te kunnen gebruiken om scripts naar uw Apache-webserver te verzenden, hebt u de volgende configuratie nodig:
- een cloudserver of virtuele privéserver (VPS)
- een Linux-serverdistributie zoals CentOS 8 of Ubuntu 22.04
- een Apache-webserver die is geïnstalleerd en actief is
Bij een standaard Linux-installatie is Apache al geïnstalleerd. Als uw server is aangemaakt met de optie Minimale installatie, moet u Apache installeren en configureren voordat u verdergaat. Lees in ons gerelateerde artikel hoe u Apache voor WordPress installeert en configureert.
Hoe CGI-scripts in de Apache-configuraties inschakelen
Er moeten twee dingen worden ingesteld om CGI-scripts op een Linux-server met Apache te kunnen uitvoeren:
- Apache moet worden geconfigureerd zodat de webserver CGI-scripts kan uitvoeren.
- Het script moet naar de juiste locatie worden geüpload en de juiste machtigingen krijgen.
Apache-instellingen voor CGI-scripts op CentOS
Open het Apache-configuratiebestand httpd.conf om het te bewerken:
sudo nano /etc/httpd/conf/httpd.confbashZoek het gedeelte met de tekst:
#
# "/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>textVervang regel Options None door de volgende twee regels:
Options +ExecCGI
AddHandler cgi-script .cgi .pl .pytextDe eerste regel vertelt Apache om CGI-bestanden uit te voeren die zijn geüpload naar de /var/www/cgi-bin directory. De tweede regel vertelt Apache dat elk bestand dat eindigt op .cgi, .pl (Perl-script) of .py (Python-script) wordt beschouwd als een CGI-script.
De sectie luidt nu als volgt:
#
# "/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>textSla het bestand op en sluit het af. Start Apache nu opnieuw op zodat de wijzigingen van kracht worden:
sudo systemctl restart httpdbashApache-instellingen voor CGI-scripts op Ubuntu
Op Ubuntu-systemen zoals Ubuntu 22.04 is Apache standaard geconfigureerd om de uitvoering van CGI-scripts in de aangewezen /usr/lib/cgi-bin toe te staan. U hoeft geen Apache-configuraties te wijzigen. De Apache CGI-module moet echter worden ingeschakeld voordat CGI-scripts kunnen worden uitgevoerd. Hiervoor moet u een symlink (symbolische link) maken:
sudo ln -s /etc/apache2/mods-available/cgi.load /etc/apache2/mods-enabled/bashStart Apache vervolgens opnieuw op zodat de wijzigingen van kracht worden:
sudo systemctl restart apache2bashHoe u een CGI-script uploadt en machtigingen instelt
Om de functionaliteit van het CGI-script op uw Apache-server te controleren, raden we u aan te beginnen met een testscript. Maak het bestand test.cgi aan in de daarvoor bestemde cgi-bin van de server en open het testscript om het te bewerken:
- CentOS:
sudo nano /var/www/cgi-bin/test.cgi - Ubuntu:
sudo nano /usr/lib/cgi-bin/test.cgi
Voeg de volgende inhoud toe aan dit bestand:
#!/usr/bin/perl
print "Content-type: text/html\n\n";
print "<h1>Hello world</h1>";textSla het bestand op en sluit het af. Geef het bestand in de volgende stap denodige uitvoerrechten:
- CentOS:
sudo chmod 755 /var/www/cgi-bin/test.cgi - Ubuntu:
sudo chmod 755 /usr/lib/cgi-bin/test.cgi
Met behulp van de chmod 755 parameters kan het script door de eigenaar worden gelezen, bewerkt en uitgevoerd. Voor de groep en andere gebruikers is er leesrechten en de mogelijkheid om het script uit te voeren.
Bekijk het script in een browser, met behulp van de domeinnaam of het IP-adres:
http://example.com/cgi-bin/test.cgi
http://192.168.0.1/cgi-bin/test.cgitextAls de installatie succesvol was, verschijnt het bericht ‘Hallo wereld!’.
Problemen met CGI-scriptfouten oplossen
404-fout: Een 404-fout betekent dat de URL niet kan worden gevonden. Controleer of het script aan de juiste map is toegevoegd.
- CentOS: De standaard CGI-map is
var/www/cgi-bin/ - Ubuntu: De standaard CGI-map is
/usr/lib/cgi-bin
Server 500-fout: Wanneer fout 500 verschijnt in verband met CGI-scripts op Apache, is dit meestal te wijten aan het feit dat het script niet over de juiste machtigingen beschikt. Controleer of het script uitvoeringsrechten (chmod 755) heeft.