SkriptyCGI sú praktickým riešením na odľahčenie webového servera Apache. Potrebné konfigurácie Apache je možné rýchlo nastaviť a proces udeľovania oprávnení pre adresár a súbory CGI je jednoduchý.

Aké sú požiadavky na CGI skripty v Apache?

Aby ste mohli používať rozhranie CGI (Common Gateway Interface) na odosielanie skriptov na váš webový server Apache, potrebujete nasledujúce nastavenie:

  • cloudový server alebo virtuálny súkromný server (VPS)
  • distribúcia servera Linux, napríklad CentOS 8 alebo Ubuntu 22.04
  • webový server Apache, ktorý je nainštalovaný a spustený
Poznámka

Štandardná inštalácia systému Linux obsahuje už nainštalovaný Apache. Ak bol váš server vytvorený s možnosťou minimálnej inštalácie, budete musieť pred pokračovaním nainštalovať a nakonfigurovať Apache. V našom súvisiacom článku sa dozviete, ako nainštalovať a nakonfigurovať Apache pre WordPress.

Ako povoliť skripty CGI v konfiguráciách Apache

Aby bolo možné spúšťať skripty CGI na linuxovom serveri s Apache, je potrebné nastaviť dve veci:

  • Apache musí byť nakonfigurovaný tak, aby webový server mohol spúšťať skripty CGI.
  • Skript je potrebné nahrať na správne miesto a udeliť mu správne oprávnenia.

Nastavenia Apache pre skripty CGI v CentOS

Otvorte konfiguračný súbor Apache httpd.conf na úpravu:

sudo nano /etc/httpd/conf/httpd.conf
bash

Nájdite časť, v ktorej sa píše:

#
# "/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>
text

Nahraďte riadok Options None nasledujúcimi dvoma riadkami:

Options +ExecCGI
AddHandler cgi-script .cgi .pl .py
text

Prvý riadok nariaďuje Apache, aby spúšťal CGI súbory, ktoré sú nahrané do /var/www/cgi-bin directory. Druhý riadok nariaďuje Apache, aby každý súbor s koncovkou .cgi, .pl (Perl skript) alebo .py (Python skript) považoval za CGI skript.

Táto časť teraz znie:

#
# "/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>
text

Uložte a zatvorte súbor. Teraz reštartujte Apache, aby sa zmeny uplatnili:

sudo systemctl restart httpd
bash

Nastavenia Apache pre skripty CGI v Ubuntu

V systémoch Ubuntu, ako je Ubuntu 22.04, je Apache štandardne nakonfigurovaný tak, aby umožňoval vykonávanie skriptov CGI v určenom adresári /usr/lib/cgi-bin. Nie je potrebné meniť žiadne konfigurácie Apache. Pred vykonaním skriptov CGI však musí byť povolený modul Apache CGI. Na to je potrebné vytvoriť symlink (symbolický odkaz):

sudo ln -s /etc/apache2/mods-available/cgi.load /etc/apache2/mods-enabled/
bash

Potom reštartujte Apache, aby sa zmeny uplatnili:

sudo systemctl restart apache2
bash

Ako nahrať skript CGI a nastaviť oprávnenia

Na overenie funkčnosti skriptu CGI na vašom serveri Apache odporúčame začať s testovacím skriptom. Vytvorte súbor test.cgi v určenom adresári cgi-bin servera a otvorte testovací skript na úpravu:

  • CentOS: sudo nano /var/www/cgi-bin/test.cgi
  • Ubuntu: sudo nano /usr/lib/cgi-bin/test.cgi

Do tohto súboru pridajte nasledujúci obsah:

#!/usr/bin/perl
print "Content-type: text/html\n\n"; 
print "<h1>Hello world</h1>";
text

Uložte a zatvorte súbor. V ďalšom kroku udelte súborupotrebné oprávnenia na vykonanie:

  • CentOS: sudo chmod 755 /var/www/cgi-bin/test.cgi
  • Ubuntu: sudo chmod 755 /usr/lib/cgi-bin/test.cgi
Poznámka

Pomocou chmod 755 parametrov môže skript čítať, upravovať a vykonávať jeho vlastník. Skupina a ostatní používatelia majú prístup na čítanie a možnosť vykonávať skript.

Skript si môžete zobraziť v prehliadači pomocou názvu domény alebo IP adresy:

http://example.com/cgi-bin/test.cgi
http://192.168.0.1/cgi-bin/test.cgi
text

Ak bola inštalácia úspešná, zobrazí sa správa „Hello world!“.

Ako riešiť chyby skriptov CGI

Chyba 404: Chyba 404 znamená, že URL adresa nebola nájdená. Skontrolujte, či bol skript pridaný do správneho adresára.

  • CentOS: Predvolený adresár CGI je var/www/cgi-bin/
  • Ubuntu: Predvolený adresár CGI je /usr/lib/cgi-bin

Chyba servera 500: Keď sa chyba 500 objaví v súvislosti so skriptami CGI na Apache, je to zvyčajne spôsobené tým, že skript nemá správne oprávnenia. Skontrolujte, či má skript oprávnenia na vykonávanie (chmod 755).

Prejsť na hlavné menu