Sådan aktiveres CGI-scripts i Apache
CGI- scripts er en praktisk løsning til at aflaste Apache-webserveren. De nødvendige Apache-indstillinger kan hurtigt konfigureres, og det er nemt at tildele tilladelser til mappen og CGI-filerne.
Hvilke krav stilles der til CGI-scripts på Apache?
For at kunne bruge Common Gateway Interface (CGI) til at sende scripts til din Apache-webserver skal du have følgende konfiguration:
- en cloud-server eller en virtuel privat server (VPS)
- en Linux-serverdistribution såsom CentOS 8 eller Ubuntu 22.04
- en Apache-webserver, der er installeret og kører
I en standardinstallation af Linux er Apache allerede installeret. Hvis din server er oprettet med installationsindstillingen »Minimal«, skal du installere og konfigurere Apache, før du fortsætter. Læs mere om, hvordan du installerer og konfigurerer Apache til WordPress, i vores artikel om emnet.
Sådan aktiveres CGI-scripts i Apache-konfigurationerne
Der er to ting, der skal konfigureres for at kunne køre CGI-scripts på en Linux-server med Apache:
- Apache skal konfigureres, så webserveren kan køre CGI-scripts.
- Scriptet skal uploades til den korrekte placering og tildeles de korrekte rettigheder.
Apache-indstillinger for CGI-scripts på CentOS
Åbn Apache-konfigurationsfilen httpd.conf for at redigere den:
sudo nano /etc/httpd/conf/httpd.confbashFind det afsnit, hvor der står:
#
# "/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>textErstat linje Options None med følgende to linjer:
Options +ExecCGI
AddHandler cgi-script .cgi .pl .pytextDen første linje instruerer Apache om at køre CGI-filer, der uploades til port /var/www/cgi-bin directory. Den anden linje angiver, at alle filer, der ender på .cgi, .pl (Perl-script) eller .py (Python-script), betragtes som CGI-scripts.
Afsnittet lyder nu således:
#
# "/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>textGem filen og luk den. Genstart nu Apache, så ændringerne træder i kraft:
sudo systemctl restart httpdbashApache-indstillinger for CGI-scripts på Ubuntu
På Ubuntu-systemer som f.eks. Ubuntu 22.04 er Apache som standard konfigureret til at tillade kørsel af CGI-scripts i det angivne /usr/lib/cgi-bin. Du behøver ikke at ændre nogen Apache-indstillinger. Apache CGI-modulet skal dog aktiveres, før CGI-scripts kan køres. For at gøre dette skal du oprette et symlink (et symbolsk link):
sudo ln -s /etc/apache2/mods-available/cgi.load /etc/apache2/mods-enabled/bashGenstart derefter Apache, så ændringerne træder i kraft:
sudo systemctl restart apache2bashSådan uploades et CGI-script og indstilles rettigheder
For at kontrollere, at CGI-scripts fungerer korrekt på din Apache-server, anbefaler vi, at du starter med et testscript. Opret filen test.cgi i serverens cgi-bin-mappe, og åbn testscriptet for at redigere det:
- CentOS:
sudo nano /var/www/cgi-bin/test.cgi - Ubuntu:
sudo nano /usr/lib/cgi-bin/test.cgi
Indsæt følgende indhold i denne fil:
#!/usr/bin/perl
print "Content-type: text/html\n\n";
print "<h1>Hello world</h1>";textGem filen, og luk den. I det næste trin skal du give filen denødvendige kørselsrettigheder:
- CentOS:
sudo chmod 755 /var/www/cgi-bin/test.cgi - Ubuntu:
sudo chmod 755 /usr/lib/cgi-bin/test.cgi
Ved hjælp af de chmod 755 parametre kan ejeren læse, redigere og køre scriptet. Gruppen og andre brugere har læseadgang og mulighed for at køre scriptet.
Se scriptet i en browser ved at bruge enten domænenavnet eller IP-adressen:
http://example.com/cgi-bin/test.cgi
http://192.168.0.1/cgi-bin/test.cgitextHvis opsætningen lykkedes, vises meddelelsen »Hello world!«.
Sådan løser du fejl i CGI-scripts
404-fejl: En 404-fejl betyder, at URL’en ikke kan findes. Kontroller, at scriptet er blevet placeret i det rigtige bibliotek.
- CentOS: Standardmappen for CGI er
var/www/cgi-bin/ - Ubuntu: Standardmappen for CGI er
/usr/lib/cgi-bin
Server 500-fejl: Når fejl 500 opstår i forbindelse med CGI-scripts på Apache, skyldes det som regel, at scriptet ikke har de rette rettigheder. Kontroller, at scriptet har rettigheder til at køre (chmod 755).