Учебни записки
11. Уебсървър и сървърен софтуер
Уебсървър (bg.wikipedia) наричаме софтуерно приложение, което приема и отговаря на заявките, за ресурси, съответстващи на URL-и. Най-известни такива приложения са: Apache, IIS (Internet Information Services), nginx, lighttpd и др. (Вижте статистика на разпространението в сайта w3techs.com.)
При съставянето на отговора, който трябва да се изпрати на клиента (браузъра), в динамичните уебсайтове участва и друг софтуер, предназначен специално за нуждите на конкретния сайт. Ще наричаме този софтуер сървърен софтуер. Този софтуер може да бъде изключително разнообразен по отношение на езика за програмиране, на който е написан; по отношение на начина на изпълняване и файловия формат, в който се съхранява от операционната система на машината, в която се изпълнява; по отношение на задачите, които решава за дадения сайт.
Когато към уебсървъра, постъпи заявка за URL на статичен ресурс, съхраняван като готов файл, уебсървърът просто прочита този файл и изпраща неговото съдържание на клиента без да прави някаква друга обработка.
Когато заявката е за динамично съдържание, сървърът препраща заявката на друг софтуер, предназначен да генерира необходимото съдържание, получава отговора от този софтуер и го препраща на клиента.
Съществуват два начина за генериране на HTML отговор чрез софтуер: 1. използване на общ интерфейс за шлюз (Common Gateway Interface - CGI, спецификация rfc3875) и 2. вмъкване на програмен код на скриптов език във файлове с HTML код.
1. При използване на CGI, заявката се пренасочва от уебсървъра към друг софтуер. Този софтуер може да бъде написан на всеки език за програмиране (С, Perl, Python и др.). Той трябва изцяло да извърши анализ на заявката и да генерира HTML код за отговор съгласно правилата на HTTP протокола. Обикновено изпълнимите файлове с такъв софтуер се намират в предназначена за целта директория, най-често с име: cgi-bin. Името на тази директория и пътя до конкретното приложение обикновено са част от поискания URL.
2. Има езици за програмиране (JavaScript, PHP, VBScript, Java), при които програмния код може да се вмъква във файловете, съдържащи HTML код. На файловете с HTML код се слагат разширения на имената, съответстващи на езика на вмъкнатия в тях скриптов програмен код. Например: при език PHP - разширението е .php, при VBScript - .asp, при Java - .jsp. Уебсървърът изпраща такива файлове да бъдат обработени от софтуер, интерпретатор на съответния език за програмиране, а интерпретаторът открива вмъкнатия програмен код, изпълнява го и замества на съответните места програмния код с резултата от неговото изпълнение. Получилият се в резултат на това замесване HTML код се връща на уебсървъра, който го препраща като отговор на клиента.