На мінулым тыдні ў
віртуальны хостынг (Shared-хостынг) мяркуе, што на адным серверы размешчана мноства акаўнтаў кліентаў. На акаўнце аднаго кліента, як правіла, знаходзіцца некалькі сайтаў. Сайты працуюць як на гатовых CMS (напрыклад, Bitrix), так і на кастамных. Такім чынам, тэхнічныя патрабаванні ва ўсіх сістэм розныя, таму ў рамках аднаго сервера неабходна кіраваць некалькімі версіямі PHP.
У якасці асноўнага вэб-сервера мы выкарыстоўваем Nginx: ён прымае ўсе падлучэнні звонку і аддае статычны кантэнт. Астатнія запыты мы праксуем далей, на вэб-сервер Apache. Тут і пачынаецца магія: для кожнай версіі PHP запушчаны асобны асобнік Apache, які слухае вызначаны порт. Гэты порт прапісваецца ў віртуальным хасце кліенцкага сайта.
Аб працы Shared-схемы можна прачытаць больш падрабязна ў
Shared-схема
Важна адзначыць, што мы ставім пакеты PHP пад розныя версіі, бо звычайна ва ўсіх дыстрыбутывах ляжыць толькі адна версія PHP.
Бяспека перш за ўсё!
Адна з галоўных задач віртуальнага хостынгу - забяспечыць бяспеку дадзеных кліента. Розныя акаўнты, знаходзячыся на адным серверы, самастойныя і незалежныя. Як гэта працуе?
Файлы сайтаў захоўваюцца ў хатніх каталогах саміх карыстачоў, а ў віртуальным хасце вэб-сервераў паказваюцца патрэбныя шляхі. Пры гэтым важна, каб вэб-серверы, Nginx і Аpache, атрымалі доступ да канчатковых файлаў вызначанага кліента, бо вэб-сервер запускаецца толькі ад аднаго карыстача.
Для Nginx выкарыстоўваецца патч бяспекі, распрацаваны камандай Timeweb: гэты патч змяняе карыстача на таго, які паказаны ў канфігурацыйным файле вэб-сервера.
У іншых хостынг-правайдэраў гэтая праблема можа быць вырашана, напрыклад, праз маніпуляцыі з пашыранымі правамі файлавай сістэмы (ACL).
Для працы Apache выкарыстоўваецца модуль мультыпрацэсінгу
Такім чынам, дзякуючы аперацыям, апісаным вышэй, мы атрымліваем бяспечнае ізаляванае асяроддзе для кожнага кліента. Пры гэтым мы таксама вырашаем задачы маштабавання для Shared-хостынгу.
Як рэалізаваная звязак Apache і Nginx, можна прачытаць у
Калі ў вас засталіся пытанні да нашых экспертаў, пішыце ў каментарах. Паспрабуем на ўсё адказаць ці апісаць рашэнне задачы больш падрабязна ў наступных артыкулах.
Крыніца: habr.com