Kako omogočiti CGI-skripte v Apacheju
CGI-skripti so praktična rešitev za zmanjšanje obremenitve spletnega strežnika Apache. Potrebne nastavitve Apacheja je mogoče hitro konfigurirati, postopek dodeljevanja dovoljenj za imenik in CGI-datoteke pa je preprost.
Kakšne so zahteve za CGI-skripte v strežniku Apache?
Če želite uporabiti vmesnik CGI (Common Gateway Interface) za pošiljanje skriptov na svoj spletni strežnik Apache, potrebujete naslednjo konfiguracijo:
- strežnik v oblaku ali virtualni zasebni strežnik (VPS)
- distribucija strežnika Linux, kot sta CentOS 8 ali Ubuntu 22.04
- spletni strežnik Apache, ki je nameščen in deluje
V standardni namestitvi sistema Linux je Apache že vgrajen. Če ste strežnik ustvarili z možnostjo minimalne namestitve, boste morali Apache namestiti in nastaviti, preden nadaljujete. V našem povezanem članku si preberite, kako namestiti in nastaviti Apache za WordPress.
Kako omogočiti CGI-skripte v nastavitvah Apacheja
Za zagon skriptov CGI na strežniku Linux z Apachejem je treba nastaviti dve stvari:
- Apache je treba nastaviti tako, da lahko spletni strežnik izvaja CGI-skripte.
- Skript je treba naložiti na pravo mesto in mu dodeliti prava dovoljenja.
Nastavitve Apacheja za skripte CGI v sistemu CentOS
Odpri konfiguracijsko datoteko Apache httpd.conf za urejanje:
sudo nano /etc/httpd/conf/httpd.confbashPoiščite odstavek, ki se glasi:
#
# "/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>textZamenjajte vrstico Options None z naslednjima dvema vrsticama:
Options +ExecCGI
AddHandler cgi-script .cgi .pl .pytextPrva vrstica Apacheju naroča, naj izvaja CGI-datoteke, ki so naložene na /var/www/cgi-bin directory. Druga vrstica Apacheju naroča, naj vsako datoteko z končnico .cgi, .pl (Perl-skript) ali .py (Python-skript) obravnava kot CGI-skript.
Odstavek se zdaj glasi:
#
# "/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>textShranite datoteko in jo zaprite. Zdaj ponovno zaženite Apache, da se spremembe začnejo uporabljati:
sudo systemctl restart httpdbashNastavitve Apacheja za skripte CGI v sistemu Ubuntu
V sistemih Ubuntu, kot je Ubuntu 22.04, je Apache privzeto nastavljen tako, da omogoča izvajanje skriptov CGI v določenem imeniku /usr/lib/cgi-bin. Nastavitev Apacheja vam ni treba spreminjati. Vendar pa je treba pred izvajanjem skriptov CGI omogočiti modul Apache CGI. Za to morate ustvariti simbolično povezavo (symlink):
sudo ln -s /etc/apache2/mods-available/cgi.load /etc/apache2/mods-enabled/bashNato ponovno zaženite Apache, da se spremembe začnejo uporabljati:
sudo systemctl restart apache2bashKako naložiti skript CGI in nastaviti dovoljenja
Da bi preverili delovanje skripta CGI na vašem strežniku Apache, priporočamo, da začnete s preskusnim skriptom. Ustvarite datoteko test.cgi v namenski mapi cgi-bin na strežniku in odprite preskusni skript za urejanje:
- CentOS:
sudo nano /var/www/cgi-bin/test.cgi - Ubuntu:
sudo nano /usr/lib/cgi-bin/test.cgi
V to datoteko vnesite naslednjo vsebino:
#!/usr/bin/perl
print "Content-type: text/html\n\n";
print "<h1>Hello world</h1>";textShranite datoteko in jo zaprite. V naslednjem koraku datoteki dodelitepotrebna izvedbena dovoljenja:
- CentOS:
sudo chmod 755 /var/www/cgi-bin/test.cgi - Ubuntu:
sudo chmod 755 /usr/lib/cgi-bin/test.cgi
Z uporabo chmod 755 parametrov lahko skript bere, ureja in izvaja lastnik. Skupina in drugi uporabniki imajo pravico do branja ter možnost izvajanja skripta.
Skript si oglejte v brskalniku, in sicer z vnosom domenskega imena ali IP-naslova:
http://example.com/cgi-bin/test.cgi
http://192.168.0.1/cgi-bin/test.cgitextČe je namestitev uspela, se bo prikazalo sporočilo »Hello world!«.
Kako odpraviti napake v skriptih CGI
Napaka 404: Napaka 404 pomeni, da URL-ja ni mogoče najti. Preverite, ali je bil skript dodan v pravi imenik.
- CentOS: Privzeti imenik CGI je
var/www/cgi-bin/ - Ubuntu: Privzeti imenik CGI je
/usr/lib/cgi-bin
Napaka strežnika 500: Kadar se pri CGI-skriptih v strežniku Apache pojavi napaka 500, je to ponavadi posledica tega, da skript nima ustreznih dovoljenj. Preverite, ali ima skript dovoljenja za izvajanje (chmod 755).