Пас аз он ки код фаъол аст кабуд сервер комилан нав карда мешавад, ба роутер фармон дода мешавад, ки аз он гузаред сабз ба кабуд сервер.
Акнун ҳама муштариён натиҷаи кодеро, ки бо он кор мекунанд, мебинанд кабуд сервер
Чанд муддате, сабз сервер дар сурати бемуваффақият ҷойгиркунӣ ҳамчун нусхаи эҳтиётӣ хизмат мекунад кабуд сервер ва дар сурати нокомӣ ва хатогиҳо, роутер ҷараёни корбарро ба он бармегардонад сабз сервер бо версияи кӯҳнаи устувор ва рамзи нав барои аз нав дида баромадан ва санҷиш фиристода мешавад.
Ва дар охири раванд он ба ҳамин тариқ нав карда мешавад сабз сервер. Ва пас аз навсозии он, роутер ҷараёни дархостро ба он бармегардонад сабз сервер.
Ҳамааш хеле хуб ба назар мерасад ва дар назари аввал бо он ҳеҷ мушкиле вуҷуд надорад.
Аммо азбаски мо дар ҷаҳони муосир зиндагӣ мекунем, варианти гузариши ҷисмонӣ, ки дар нақшаи классикӣ нишон дода шудааст, ба мо мувофиқат намекунад. Маълумотро ҳоло сабт кунед, мо баъдтар ба он бармегардем.
Дар мавриди сессияҳо, маълумотро танҳо дар кэш нигоҳ доред, ки аз ҷониби хидматҳои тарафи сеюм идора карда мешавад (memcached, redis), аз ин рӯ, ҳатто агар шумо 20 раванди барномаро иҷро кунед, ҳар яке аз онҳо, ки ба кэш дастрасӣ пайдо карда, метавонад корро бо муштарӣ дар ҳамон ҳолате, ки корбар дар раванди дигар бо барнома кор мекард. Бо ин равиш, маълум мешавад, ки новобаста аз он ки шумо чанд нусхаи хидматҳои тарафи сеюмро истифода мебаред, ҳама чиз муқаррарӣ ва бидуни мушкилот бо дастрасӣ ба маълумот кор хоҳад кард.
7. Пайвасткунии порт
Танҳо сервери веб бояд донад, ки чӣ тавр бо хидматҳои тарафи сеюм кор кардан лозим аст. Ё беҳтараш, хидматҳои тарафи сеюмро мустақиман дар дохили сервери веб насб кунед. Масалан, ҳамчун модули PHP дар Apache.
Ҳама хидматҳои шумо бояд тавассути дастрасӣ ба ягон суроға ва порт (localgost:5432, localhost:3000, nginx:80, php-fpm:9000) барои ҳамдигар дастрас бошанд, яъне аз nginx ман метавонам ҳам ба php-fpm ва ҳам ба postgres ва аз php-fpm то postgres ва nginx ва воқеан аз ҳар як хидмат ман метавонам ба хидмати дигар дастрасӣ пайдо кунам. Бо ин роҳ, қобилиятнокии хидмат ба қобилиятнокии хидмати дигар вобаста нест.
8. Параллелизм
Бо як раванд кор кунед, вагарна якчанд раванд бо ҳамдигар мувофиқат карда наметавонанд!
Барои андозагирӣ ҷой гузоред. Сӯи Docker барои ин бузург аст.
Docker Swarm як асбобест барои эҷод ва идоракунии кластерҳои контейнерҳо ҳам байни мошинҳои гуногун ва ҳам як қатор контейнерҳо дар як мошин.
Бо истифода аз тӯда, ман метавонам муайян кунам, ки ман ба ҳар як раванд чӣ қадар захираҳо ҷудо мекунам ва чӣ қадар равандҳои ҳамон хидматро оғоз мекунам ва мувозинаткунандаи дохилӣ, ки маълумотро дар бандари додашуда қабул мекунад, онро ба таври худкор ба равандҳо прокси хоҳад кард. Ҳамин тариқ, дидам, ки сарбории сервер зиёд шудааст, ман метавонам равандҳои бештарро илова кунам ва ба ин васила сарбории баъзе равандҳоро кам кунам.
9. Якбора истифодашаванда
Барои кор бо равандҳо ва додаҳо навбатҳоро истифода набаред. Куштани як раванд бояд ба тамоми барнома таъсир расонад. Агар як хидмат қатъ шавад, ҳама чиз коҳиш меёбад.
Ҳар як раванд ва хидматро дар вақти дилхоҳ хомӯш кардан мумкин аст ва ин набояд ба хидматҳои дигар таъсир расонад (албатта, ин маънои онро надорад, ки хидмат барои хидмати дигар дастнорас хоҳад буд, аммо хидмати дигар пас аз он хомӯш намешавад). Ҳама равандҳо бояд боэҳтиётона қатъ карда шаванд, то вақте ки онҳо қатъ карда шаванд, ягон маълумот осеб набинад ва вақте ки шумо онро фаъол мекунед, система дуруст кор кунад. Яъне, ҳатто дар сурати қатъ шудани ҳолати фавқулодда, маълумот набояд вайрон шавад (механизми транзаксия дар ин ҷо мувофиқ аст, дархостҳо дар пойгоҳи додаҳо танҳо дар гурӯҳҳо кор мекунанд ва агар ҳадди аққал як дархост аз гурӯҳ ноком шавад ё бо як дархост иҷро карда шавад. хато бошад, пас ягон дархости дигари гурӯҳ дар ниҳоят ноком намешавад).
10. Паритети коркард/амалиёт
Истеҳсол, саҳна ва версияи маҳаллии барнома бояд гуногун бошад. Дар истеҳсолот мо чаҳорчӯбаи Yii Lite ва ба таври маҳаллӣ Yii -ро истифода мебарем, то он дар истеҳсолот тезтар кор кунад!
Дар асл, ҳама ҷобаҷогузорӣ ва кор бо код бояд дар муҳити тақрибан якхела бошанд (мо дар бораи сахтафзори ҷисмонӣ сухан намегӯем). Инчунин, ҳар як корманди таҳиякунанда бояд дар ҳолати зарурӣ кодро дар истеҳсолот ҷойгир кунад, на баъзе шӯъбаҳои махсус омӯзонидашуда, ки танҳо ба шарофати қувваи махсус метавонад барномаро ба истеҳсолот бардорад.
Docker низ дар ин кор ба мо кӯмак мекунад. Агар ҳамаи нуктаҳои қаблӣ риоя карда шаванд, истифодаи docker раванди ҷойгиркунии муҳити атрофро ҳам дар истеҳсолот ва ҳам дар мошини маҳаллӣ ба ворид кардани як ё ду фармон меорад.
11. Журналҳо
Мо ба файлҳо ва пойгоҳи додаҳо гузоришҳо менависем! Мо файлҳо ва пойгоҳи додаҳоро аз гузоришҳо тоза намекунем. Биёед танҳо як диски сахт бо 9000 Пета байт харем ва ин хуб аст.
Ҳама гузоришҳо бояд ҳамчун ҷараёни рӯйдодҳо баррасӣ карда шаванд. Худи барнома набояд дар коркарди гузоришҳо иштирок кунад. Гузоришҳо бояд ё ба stdout бароварда шаванд ё тавассути протокол ба монанди udp фиристода шаванд, то кор бо гузоришҳо барои барнома ягон мушкилот эҷод накунад. graylog барои ин хуб аст. Graylog, ки ҳамаи гузоришҳоро тавассути udp қабул мекунад (ин протокол интизори посухро дар бораи қабули бомуваффақияти баста талаб намекунад) ба барнома ҳеҷ ваҷҳ халал намерасонад ва танҳо бо сохтор ва коркарди гузоришҳо сарукор дорад. Мантиқи барнома барои кор бо чунин равишҳо тағир намеёбад.
12. Вазифаҳои маъмурият
Барои навсозии додаҳо, пойгоҳи додаҳо ва ғайра, нуқтаи ниҳоии алоҳида сохташударо дар API истифода баред, 2 маротиба дар як саф иҷро кардани он боиси такрор шудани ҳама чиз мегардад. Аммо шумо беақл нестед, ду маротиба клик намекунед ва ба мо муҳоҷират лозим нест.
Ҳама вазифаҳои маъмурӣ бояд дар ҳамон муҳит бо ҳама рамзҳо, дар сатҳи барориши онҳо иҷро карда шаванд. Яъне, агар ба мо лозим ояд, ки сохтори махзани маълумотро тағир диҳем, он гоҳ мо онро тавассути тағир додани номи сутунҳо ва илова кардани сутунҳои нав тавассути баъзе асбобҳои идоракунии пойгоҳи додаҳо дастӣ иҷро намекунем. Барои чунин чизҳо, мо скриптҳои алоҳида эҷод мекунем - муҳоҷират, ки дар ҳама ҷо ва дар ҳама муҳитҳо ба ҳамон тарз бо натиҷаи умумӣ ва фаҳмо иҷро карда мешаванд. Барои ҳама вазифаҳои дигар, ба монанди пур кардани лоиҳа бо маълумот, методологияҳои шабеҳ бояд истифода шаванд.
P.S Ҳама мисолҳо дар MacOS сохта шудаанд. Аксарияти онҳо барои Linux низ мувофиқанд. Корбарони Windows, маро бубахшед, аммо ман муддати тӯлонӣ бо Windows кор накардаам.
Биёед вазъиятеро тасаввур кунем, ки мо дар компютери мо ягон версияи PHP насб карда нашудааст ва умуман чизе нест.
Версияҳои охирини docker ва docker-compose -ро насб кунед. (инро метавон дар интернет пайдо кард)
Пеш аз оғоз, боварӣ ҳосил кунед, ки ҳеҷ чиз дар бандарҳои 80 ва 443 овезон нест.
docker-compose up -d nginx php-fpm
Ҳамин тариқ, лоиҳаи мо аз 3 хидмати алоҳида иборат аст:
nginx - сервери веб
php-fpm - php барои қабули дархостҳо аз сервери веб
фазои корӣ - php барои таҳиягарон
Дар айни замон, мо ба он ноил шудем, ки мо як барномаеро таҳия кардем, ки аз 4 12 хол мувофиқат мекунад, аз ҷумла:
1. Пойгоҳи код — ҳама рамз дар як анбор ҷойгир аст (эзоҳи хурд: илова кардани докер дар дохили лоиҳаи laravel дуруст аст, аммо ин муҳим нест).
2. Вобастагӣ - Ҳама вобастагии мо ба таври возеҳ дар application/composer.json ва дар ҳар як Dockerfile ҳар як контейнер навишта шудаанд.
3. Хидматҳои пуштибонӣ — Ҳар як хидмат (php-fom, nigx, фазои корӣ) ҳаёти худро дорад ва аз берун пайваст аст ва ҳангоми кор бо як хидмат ба дигараш таъсир намерасонад.
4. Тарафҳо — хар як хизмат як процесс аст. Ҳар як хидмат ҳолати дохилиро нигоҳ медорад.
5. Пайвасткунии порт
docker ps
Тавре ки мо мебинем, ҳар як хидмат дар бандари худ кор мекунад ва барои ҳама хидматҳои дигар дастрас аст.
6. Параллелизм
Docker ба мо имкон медиҳад, ки равандҳои сершумори як хидматҳоро бо мувозинати автоматии сарборӣ байни онҳо тавлид кунем.