Ako povoliť skripty CGI v Apache
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ý
Š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.confbashNá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>textNahraďte riadok Options None nasledujúcimi dvoma riadkami:
Options +ExecCGI
AddHandler cgi-script .cgi .pl .pytextPrvý 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>textUložte a zatvorte súbor. Teraz reštartujte Apache, aby sa zmeny uplatnili:
sudo systemctl restart httpdbashNastavenia 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/bashPotom reštartujte Apache, aby sa zmeny uplatnili:
sudo systemctl restart apache2bashAko 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>";textUlož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
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.cgitextAk 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).