Трите най-популярни уеб сървъра. W3Tech: делът на nginx в света е нараснал до една трета, Apache е паднал под половината

Преди няколко месеца в една от предишните си статии публикувах интересни данни от comScore, който изчислява . Ако сте чели тази статия, вероятно си спомняте, че Русия стана лидер в Европа по отношение на броя на потребителите на интернет. И така, днес искам да ви предоставя малко по-интересни данни, но от друга, не по-малко популярна компания - от Netcraft. Днес ще разберем колко сайтове има в интернет и кои уеб сървъри са най-популярните в света.

Според Netcraft към януари 2012 г. в интернет е имало 582,72 милиона сайта - това е 27,23 милиона или 4,9% повече, отколкото беше регистрирано месец по-рано, тоест през декември 2010 г. Както можете да видите, всеки месец световната мрежа само се разраства, благодарение на което информационното пространство на нашата планета става все по-голямо и по-голямо. И имайте предвид, че това не е ограничението. Експертите прогнозират, че броят на потребителите и броят на сайтовете в интернет ще продължи да се увеличава, като този ръст ще бъде значителен - поне през следващите години.

Освен това изчисленията на Netcraft показват, че уеб- Apache сървърпродължава да е най-популярният в света – през януари 2012 г. пазарният му дял е цели 64,91%.

И така, като цяло първите три изглеждат така:

  • Apache - 64.91% (през декември 2010 г. е 65.22%);
  • Microsoft - 14.46% (14.86%);
  • nginx - 9,63% (8,85%).

Оказва се, че в момента само руският уеб сървър nginx увеличава пазарния си дял, докато лидерите го губят, макар и с много бавни темпове. В същото време трябва да се отбележи един важен момент - ако в статистическите изчисления се вземат предвид само активни интернет сайтове, тогава до края на януари 2012 г. уеб сървърът nginx леко, но все пак изпревари уеб сървъра на Microsoft в рейтинга.

  • Apache - 57.93% (преди месец 58.21%);
  • nginx - 12.18% (11.61%);
  • Microsoft - 12.14% (12.31%);
  • Google - 7,90% (8,13%).

В този случай пазарният дял също расте само за уеб сървъра nginx, докато останалите бавно губят позициите си. Но само преди година, през януари 2011 г., пазарният дял на руския уеб сървър беше около 8,23%, в резултат на което той заемаше едва четвърта позиция в класацията, след Microsoft (16,76%) и дори Google (11 90%). Така наблюдаваме сериозен ръст в популярността на nginx, като както казват неговите представители, този ръст е необратим – поне до края на 2012 г. те очакват да увеличат пазарния си дял до 18%. Голът е реален, така че им пожелаваме успех.

И за да се постигнат тези цели, през лятото на 2011 г. беше създадена компанията Nginx Inc., която сега ще извършва цялата работа по проекта nginx. В същото време, през есента на същата 2011 г., тази компания получи много прилична инвестиция (3,0 милиона долара), така че не трябва да се изненадвате, ако уеб сървърът nginx до края на 2012 г. все пак увеличи пазарния си дял до очакваното 18%. Така че можем само да чакаме и да следим новините.

|

Приложения, разработени в Ruby, могат да бъдат внедрени в общ достъпизползвайки един от многото уеб сървъри. Всеки уеб сървър е уникален и има своите предимства, но всички те имат едно общо нещо: базирани са на интерфейса Rack.

Тази статия предполага кратък прегледпопулярни уеб сървъри за Ruby приложения, както и да ви запознае със спецификацията на Rack и междинния софтуер.

Забележка: Повече ▼ подробна информацияможете да разберете за междинния софтуер.

Rack интерфейс

В днешния свят на разработване на уеб приложения, способността за смесване и съчетаване на подходящи уеб сървъри и други програми и технологии е от съществено значение. Всъщност това е един от най-търсените аспекти на всеки програмен език или рамка. Може би най-простият пример тук е средата за разработка, тестване и производство на приложение – всички те трябва да са различни.

За да направите това, през 2007 г. беше пуснат Rack, модулен интерфейс за Ruby уеб сървъри. Днес се използва от много уеб сървъри и рамки (Espresso, Mack, Ruby on Rails, Sinatra и др.).

Въпреки конвенциите за именуване и различните обяснения за различните програмни езици и домейни, спецификациите за оперативна съвместимост на приложенията са много сходни (ако не и идентични). Въпреки че за разлика от спецификацията WSGI на Python, която вдъхнови Rack и много други спецификации, Rack също е междинен софтуер.

междинен софтуер Rack (наличен като скъпоценен камък) изпълнява спецификацията на Rack; той разделя входящите HTTP заявки на различни етапи, след което ги обработва на части, след което изпраща отговор на уеб приложението (контролера). Програмата Rack се състои от два отделни компонента: манипулатор и адаптер, чрез които се обменят данни между уеб сървъри и приложения (рамки).

Преглед на уеб сървъри за Ruby

Сега можете да говорите за най-популярните съвременни уеб сървъри, да разберете техните характеристики и да изберете най-подходящото решение за вашето приложение.

Забележка: Уеб сървърите са изброени по азбучен ред.

Phusion Passenger: Бърз уеб и сървър за приложения

Много разработчици на Ruby on Rails препоръчват използването на Passenger за поддръжка на приложения. Това е зрял и богат на функции сървър, който отговаря на най-взискателните изисквания за внедряване и улеснява инсталирането и стартирането на приложението. Той елиминира традиционната прокси-сървърна архитектура чрез директно интегриране в Apache и Nginx уеб сървъри. Следователно в общността на Ruby (Rails) той също често се нарича mod_rails и mod_rack.

Характеристики на пътниците

Passenger предоставя възможност за работа с множество приложения, хоствани на един и същи сървър.

Той също така поддържа работа с бавни клиенти. Passenger буферира всички заявки и отговори, за да предотврати атаки, които задръстват системните ресурси.

Уеб сървърът Passenger е много популярен и често се използва в производствена среда. Освен това има активна общност, където можете да получите много полезни съветии съвети. Компанията за развитие на пътници предлага търговска поддръжка.

Пътнически вариант с отворен програмен кодосигурява многопроцесен еднонишков режим, а търговската версия поддържа еднонишкови и многонишкови режими.

Също така комерсиалната версия предоставя много „разширени“ функции: паралелизъм, многопоточност, масово внедряване, управление на ресурсите, ограничаване на ресурсите и т.н.

Забележка: Повече информация за Passenger можете да намерите на уебсайта на проекта. Относно Пътническо предприятие - .

Puma: Модерен уеб сървър за Ruby

Puma е високопроизводителен уеб сървър за Ruby приложения. Базиран е на уеб сървъра Mongrel, който добави няколко революционни функции и повлия на развитието на Ruby приложенията по много начини. Разработчикът Puma (Evan Phoenix) трансформира операционната структура на Mongrel, като се премести в Rack (и по този начин елиминира някои проблеми с производителността) и разработи приложение за поддръжка на едновременност.

Характеристики на Puma

Puma не изисква много място и използва малко ресурси.

Уеб сървърът Puma предоставя няколко режима на работа: позволява ви да зададете минимални и максимална суманишки, а също така поддържа клъстерен режим, където можете да използвате разклонени процеси, за да обработвате заявки едновременно.

Базиран е на парсера Mongrel и до голяма степен е наследил неговия код.

Уеб сървърът Puma е предназначен за Rubinius, но може да работи и с JRuby

Той предоставя прост, но доста обширен и гъвкав набор от конфигурации, което улеснява подготовката на уеб сървър както за разработка, така и за среда.

Извън кутията Puma не поддържа хостинг и производство на множество приложения, но това може да се направи с помощта на специалния инструмент Jungle.

Тънък: прост и бърз HTTP сървър

Тънкото е много популярен сървърприложения; неговите създатели твърдят, че това е най-„сигурният, стабилен, бърз и разширяем Ruby уеб сървър“. Тънкият се развива активно. Базиран е на три основни Ruby библиотеки:

  • Parser Mongrel.
  • Мрежова библиотека EventMachine
  • Rack Middleware

Тънки функции

Тънкият HTTP сървър е проектиран да работи с всяка рамка, която прилага Rack спецификацията. За да направи това, той изтегля конфигурационни файловеСтелаж.

Базиран на EventMachine, Thin може да обработва дълги заявки без помощта на обратен прокси (за разлика от някои други уеб сървъри).

Забележка: За да научите повече за Thin, отидете на уебсайта на проекта.

Unicorn: Rack-базиран HTTP сървър за бързи клиенти и Unix

Unicorn е зрял, пълнофункционален сървър за приложения за Ruby. По-късно беше адаптиран за работа с Python. Принципът на работа на Unicorn е следният: уеб сървърът не изпълнява всички задачи, а само тези, за които е пряко отговорен, останалите задачи прехвърля на други програми, които са по-способни да ги изпълняват.

Характеристики на еднорога

Главният процес на Unicorn ражда работни процеси за обработка на заявки според зададените параметри. Той също така наблюдава работните процеси, за да предотврати проблеми с ресурсите. Тоест, ако даден процес изисква много време или ресурси, сървърът ще го спре с Unicorn.

Както бе споменато по-горе, Unicorn използва операционната система за балансиране на натоварването; за да направи това, той може да прехвърля задачи към други услуги. Благодарение на това заявките не се натрупват.

Подобно на NGINX, Unicorn ви позволява да внедрявате приложения, без да прекъсвате текущите клиентски връзки. Това е много полезна функция при актуализиране на приложение.

други полезни функцииЕднорог:

  • Всички работни процеси се изпълняват в рамките на конкретно изолирано адресно пространство и обслужват заявки една по една.
  • Куките before_fork и after_fork ви позволяват да се справяте с разклоненията на процеса.
  • Механизмът за копиране при запис за управление на паметта пести памет.
  • Един уеб сървър може да слуша на множество интерфейси.

Забележка: Повече за Unicorn - .

Етикети: ,

По правило за обикновения потребител такива понятия като „уеб сървър“ или „хостинг“ се свързват с нещо напълно неразбираемо. Междувременно в този въпрос няма нищо сложно. Нека се опитаме да обясним какво е уеб сървър, защо е необходим и как работи, без да навлизаме в технически подробности, но, така да се каже, на пръсти. Отделно ще се спрем на въпроса как да създадем и конфигурираме такъв сървър на домашен компютърен терминал или лаптоп.

Какво е уеб сървър?

Най-важното в този проблем- разберете, че сървър от този тип не е нищо повече от компютър в Интернет с инсталиран подходящ софтуер.

Но това абсолютно не означава, че не можете да създадете своя собствена конфигурация у дома. Тъй като имаме по-общи операции Windows системи, въпроси за това как да създадете уеб сървър на Ubuntu (Linux) няма да бъдат разглеждани.

За какво са уеб сървърите?

Този тип сървър съхранява много информация в Интернет. В същото време същите антивируси се обръщат към тях, за да актуализират собствените си бази данни. Потребителят също има пряка връзка с такива сървъри, като прави заявки в браузъра (търсене на информация, достъп до страница и т.н.).

Така се оказва, че всички страници, присъстващи в Интернет, се съхраняват на уеб сървъри, към които, от една страна, се прави потребителска заявка или обжалване инсталирана програма, а от друга страна, резултатът се връща от самия сървър, до който е направен опит за достъп.

Как работи всичко?

Всички потребители са свикнали с факта, че за да влязат в някакъв ресурс в Интернет (уеб страница), който съдържа информация от определен тип, префиксът www (или http) и последващото име просто се въвеждат в адресната лента. Но никой не мисли как уеб сървърът разбира заявката и дава резултата.

Всъщност тук трябва да правите разлика между понятията сървър и клиент. В нашия случай страницата, хоствана в Интернет, се съхранява на отдалечен сървър. Компютърът на потребителя действа като клиент, от който се осъществява обаждането.

За достъп до интернет се използват програми, наречени уеб браузъри. Те превеждат заявката на потребителя в цифров код, който се разпознава от уеб сървъра. Сървърът го обработва и издава отговор в съответния код, а браузърът вече преобразува милиони нули и единици в нормална форма с текстова, графична, звукова или видео информация, която се поставя на страницата.

Най-популярните уеб сървъри

От целия сървърен софтуер Apache и Microsoft IIS се считат за най-често срещаните. Първият е по-популярен и се използва повече в UNIX-подобни системи, въпреки че може да се настрои на Windows среда. Освен това сървърът Apache е абсолютно безплатен софтуер и е съвместим с почти всички известни операционна система. Въпреки това, както беше отбелязано, този софтуер е предназначен главно за професионални програмисти и разработчици.

Софтуерният продукт на Microsoft е предназначен за обикновен потребител, който може да инсталира и конфигурира такъв уеб сървър за Windows без него допълнителна помощквалифициран специалист.

Въпреки това, въз основа на официалната статистика, софтуерът Apache използва около 60% от всички съществуващи сървъри, така че ще разгледаме въпроса за инсталирането и настройката на първоначалната конфигурация, използвайки неговия пример.

Уеб сървър на домашен компютър: инсталация

За инсталиране ще трябва да изтеглите специален сървърен пакет, съкратено WAMP, който включва три основни компонента:

  • апач- черупкасървър, който може да работи самостоятелно, но само ако няма динамично съдържание на хостваните страници.
  • PHP е език за програмиране, използван от добавки за управление на сървъри с динамично съдържание като WordPress, Joomla, Drupal.
  • MySQL е унифицирана система за управление на бази данни, използвана, отново, при създаване на уебсайтове с динамично съдържание.

Инсталацията може да се извърши от пакета WampServer. За да направите това, просто следвайте инструкциите на "Съветника", който на един от етапите ще ви подкани да изберете интернет браузър, който ще се използва по подразбиране.

За да направите това, ще трябва да отидете в папката с изпълнимия файл на браузъра (ако не е Internet Explorer, обикновено се намира в директорията Програмните файлове). По пътя самият браузър трябва да бъде добавен към списъка с изключения на защитната стена на Windows. На последния етап се поставя отметка пред елемента за незабавно стартиране, след което в системната област ще се появи съответната икона, върху която трябва да кликнете и да промените, за да изберете стартирането на локалния хост (localhost).

Ако всичко е направено правилно, ще се появи Начална страницасървър. След това ще бъдете подканени да инсталирате допълнителни компоненти (ако това не е направено, системата ще даде грешка). По принцип инсталацията се отнася до допълнителни добавки, елементи и компоненти, които ще бъдат използвани от сървъра в бъдеще.

Пример за настройка и тестване на сървър

Настройването на уеб сървър е малко по-сложно. Първо, в менюто на системната област отидете до папката WWW (където се съхраняват добавки или HTML файлове). След това напишете следния текст в Notepad:

WAMP тест!

Здравейте!

"; ?>

Можете просто да копирате текста в Notepad и да запишете файла като index.php в същата WWW папка (въпреки че можете да го направите и без, тъй като тази стъпка се използва само за проверка на локалния хост). Вместо поздрав можете да вмъкнете друг текст или фраза.

След това в браузъра трябва да опресните страницата (F5), след което съдържанието ще се покаже на екрана. Но за други компютри страницата няма да бъде достъпна.

За да отворите достъп, трябва да промените файла httpd.conf, като напишете в раздела, който започва с следните редове:

Поръчка Разреши, Откажи

Вместо послеслов

Разбира се, по отношение на разбирането на същността на функционирането или настройките на домашен уеб сървър, тук е дадена само най-началната и кратка информация, така да се каже, за общо разбиране. Всъщност всички процеси са много по-сложни, особено по отношение на конвертиране на заявки и издаване на отговори, да не говорим за настройките на сървъра у дома. Ако потребителят има желание да разбере тези въпроси, не може да мине без поне основни познания за същата добавка на WordPress и езика PHP. От друга страна, за публикуването на примитивни страници, съдържащи предимно само текстова информация, тази първоначална информация също може да се използва.

Здравейте, тази статия обхваща 5 от най-популярните опции за настройка на сървър за уеб приложение. Какви са опциите и коя да изберете?

Има много фактори, които трябва да се имат предвид при избора на сървърна среда, като производителност, мащабируемост, достъпност, надеждност, цена и лекота на управление.

Статията представя набор от най-често използваните сървърни среди с техните Кратко описаниевключително плюсове и минуси. Всички концепции могат да се използват в различни комбинации помежду си и всяка среда има различни изисквания, така че няма единствена правилна конфигурация.

1. Всичко на един сървър

Средата е на същия сървър. За типично уеб приложение това ще включва уеб сървър, сървър на приложения и сървър на база данни. Специален случай на внедряване на този набор е, чието име е съкращение от Linux, Apache, MySQL и PHP, на един и същ сървър.

Пример за употреба:Добър за бързо внедряване на приложение, тъй като е най-простата конфигурация от всички, но предлага малко по отношение на мащабируемост и изолиране на компоненти.

Професионалисти:

  • Простота

минуси:

  • Приложението и базата данни използват едни и същи сървърни ресурси (CPU, памет, I/O и т.н.), което в допълнение към потенциално ниската производителност затруднява определянето на източника (приложение или база данни) на тази най-ниска производителност.
  • Трудно мащабиране хоризонтално.

2. Специализиран сървър за база данни

Системата за управление на базата данни (СУБД) може да бъде отделена от останалата среда, за да се елиминира конкуренцията за сървърни ресурси между приложението и базата данни и да се увеличи сигурността чрез премахване на базата данни от DMZ, публичния Интернет.

Пример за употреба:Добър за бързо внедряване на приложение, но също така елиминира проблема с конкуренцията между приложения и бази данни за едни и същи системни ресурси.

Професионалисти:

  • Приложението и базата данни не се конкурират за едни и същи сървърни ресурси (CPU, памет, I/O и т.н.).
  • Можете да мащабирате вертикално всеки компонент (приложение и база данни) независимо, като добавите допълнителни ресурси към желания сървър.
  • С определени настройки това може да подобри сигурността чрез премахване на базата данни от DMZ.

минуси:

  • Процесът на инсталиране е малко по-сложен, отколкото в случай на използване на един сървър.
  • Може да възникнат проблеми с производителността, ако мрежова връзкамежду два сървъра има дълго време за реакция (например сървърите са географски разделени един от друг), или пропускателна способностнедостатъчно за предаваните данни.

3. Балансиране на натоварването (обратен прокси)

Балансьорите на натоварването могат да се добавят към сървърна среда, за да се увеличи производителността и надеждността чрез разпределяне на натоварването между множество сървъри. Ако един от сървърите се повреди, други сървъри ще обработват входящия трафик, докато сваленият сървър отново се активира. Балансиращото натоварване може също да се използва за обслужване на множество приложения в един и същи домейн и порт, като се използва обратен прокси.

Примери за обратен прокси софтуер включват HAProxy и Varnish.

Пример за употреба:Полезно за среди, които изискват мащабиране чрез добавяне на повече сървъри, известно също като хоризонтално мащабиране.

Професионалисти:

  • Прави възможно хоризонталното мащабиране, тоест ресурсите на средата могат да бъдат увеличени чрез добавяне на нови сървъри към нея.
  • Може да защити срещу DDOS атаки, като ограничи клиентските връзки до приемлив брой и честота.

минуси:

  • Балансиращото натоварване може да се превърне в пречка за производителността, ако няма достатъчно ресурси или е неправилно конфигурирано.
  • Може да създаде допълнителни усложнения, които изискват допълнителни усилия от страна на администратора, например работа с приложения, които изискват така наречените „залепващи сесии“ (sticky session).

4. HTTP ускорител (кеширане на обратен прокси)

HTTP ускорител или обратно прокси кеширане на HTTP заявки може да се използва за намаляване на времето, необходимо за предоставяне на съдържание на потребител чрез използване различни методи. Основната техника, използвана с HTTP ускорителя, е да кешира отговорите от уеб или сървъра на приложения в паметта, така че следващите заявки за същото съдържание да могат да се обработват бързо и с по-малко ненужни взаимодействия с уеб или сървъра на приложения.

Примери за софтуер, поддържащ HTTP ускорение: Varnish, Squid, Nginx.

Пример за употреба:Полезно за динамични уеб приложения с тежко съдържание или голям брой файлове, които могат да бъдат достъпни едновременно.

Професионалисти:

  • Подобрява производителността на сайта чрез намаляване на натоварването на процесора на уеб сървъра чрез кеширане и компресиране, като по този начин увеличава броя на обслужваните потребители.
  • Може да се използва като балансиращо натоварване на обратен прокси.
  • Някои програми за кеширане могат да предпазват от DDOS атаки.

минуси:

  • Изисква настройка за най-добро представяне.
  • Ако естеството на потребителските заявки не позволява ефективно кеширане, това може да влоши производителността на сървъра.

5. Репликация на база данни по схемата главен-подчинен (Master-Slave)

Един от начините за подобряване на производителността на система от бази данни, която получава много повече четения, отколкото записи, като системи за управление на съдържанието (CMS), е да се използва репликация на база данни master-slave. Такава схема предполага наличието на един главен и един или повече подчинени възли. В този случай всички записи са насочени към главния възел и заявките за четене могат да бъдат разпределени между всички възли.

Пример за употреба:Дава добър тласък на производителността на приложението по отношение на четене от базата данни.

Ето пример за репликация на база данни главен-подчинен с един подчинен възел:

Професионалисти:

  • Подобрява производителността на четене на база данни чрез разпределяне на заявки за четене между подчинени възли.
  • Може да подобри производителността на запис, като използва хоста изключително за писане (така че не губи време в обслужване на заявки за четене)

минуси:

  • Приложението за база данни трябва да има механизъм за определяне към кои възли да изпраща заявки за четене и запис.
  • Актуализациите на подчинените възли са асинхронни, така че е възможно да получите не най-новите данни, когато бъдат поискани.
  • Ако главният възел спре да работи, не могат да се правят актуализации на база данни, докато проблемът не бъде отстранен.
  • Няма вградено резервиране в случай на повреда на главния възел.

Пример: комбиниране на понятия

Можете да зареждате сървъри за кеширане на баланс в допълнение към сървърите на приложения и да използвате репликация на база данни в една среда. Целта на комбинирането на тези методи е да се извлекат ползите от всеки подход, без да се добавя твърде много сложност.

Ето примерна диаграма за това как може да изглежда сървърна среда:

Да приемем, че инструментът за балансиране на натоварването е конфигуриран да разпознава статични заявки (като изображения, CSS, JavaScript и т.н.) и да изпраща тези заявки към кеширащи сървъри и всички други заявки към сървъри на приложения.

Ето какво ще се случи, когато потребител изпрати заявка за динамично съдържание:

  1. Потребителят иска динамично съдържание с http://example.com/(балансьор на натоварването).
  2. Уредът за балансиране на натоварването изпраща заявка до сървъра на приложенията (бекенд на приложението).

Ако потребителят поиска статично съдържание:

  1. Инструментът за балансиране на натоварването проверява кеша (cache-backend), за да види дали исканото съдържание е кеширано.
  2. Ако е кеширана, тогава исканото съдържание се връща към балансиращото натоварване, отидете на стъпка 7. Ако не е кеширана, тогава кеширащият сървър ще препрати заявката към сървъра на приложения чрез балансиращото натоварване.
  3. Устройството за балансиране на натоварването ще препрати заявката към сървъра на приложения.
  4. Сървърът на приложения (бекенд на приложението) чете от базата данни и връща исканото съдържание обратно към балансиращото натоварване.
  5. Устройството за балансиране на натоварването препраща отговора към кеш сървъра (cache-backend).
  6. Кеширащият сървър кешира полученото съдържание и го връща на балансиращото натоварване.
  7. Балансиращото натоварване връща исканото съдържание на потребителя.

Тази среда има две възможни точки на повреда (балансиране на натоварването и главен сървър на база данни), но осигурява другите предимства на надеждността и производителността, описани по-рано във всяка точка.

Вече трябва да имате добра представа какво точно ще използвате за собственото си приложение или приложения. Ако работите върху подобряването на вашата среда, не забравяйте, че е най-добре да продължите итеративно, за да избегнете прекаленото усложняване.



Зареждане...
Връх