Thaum lub sijhawm koj xav tau tso tawm dua, tag nrho qhov project tau hloov kho rau lwm tus neeg rau zaub mov (xiav), uas tam sim no tsis ua cov kev thov.
Tom qab lub code yog nyob rau xiav server tau hloov kho tag nrho, lub router tau muab cov lus txib kom hloov los ntawm ntsuab rau xiav server.
Tam sim no txhua tus neeg siv pom qhov tshwm sim ntawm tus lej khiav nrog xiav server.
Rau qee lub sijhawm, ntsuab tus neeg rau zaub mov ua hauj lwm raws li ib tug backup daim ntawv nyob rau hauv cov ntaub ntawv ntawm unsuccessful xa mus rau xiav server thiab nyob rau hauv cov ntaub ntawv ntawm tsis ua hauj lwm thiab kab, lub router hloov cov neeg siv ntws rov qab mus rau ntsuab server nrog cov qub ruaj khov version, thiab cov cai tshiab raug xa mus rau kev kho dua tshiab thiab kev sim.
Thiab thaum kawg ntawm tus txheej txheem, nws yog hloov kho nyob rau hauv tib txoj kev ntsuab server. Thiab tom qab hloov kho nws, lub router hloov qhov kev thov ntws rov qab mus rau ntsuab server.
Nws zoo nkaus li zoo heev thiab thaum xub thawj siab ib muag yuav tsum tsis txhob muaj teeb meem nrog nws.
Tab sis txij li thaum peb nyob hauv lub ntiaj teb niaj hnub no, qhov kev xaiv nrog lub cev hloov pauv raws li qhia hauv cov txheej txheem classical tsis haum rau peb. Sau cov ntaub ntawv tam sim no, peb yuav rov qab mus rau nws tom qab.
Qhov tseeb, qhov taw tes no sib tshooj nrog cov ntsiab lus hais txog kev teeb tsa, txij li tsis muaj qhov taw tes no, cov ntaub ntawv teeb tsa ib txwm tsis tuaj yeem ua thiab, feem ntau, lub peev xwm los teeb tsa yuav poob rau tsis muaj dab tsi.
Tag nrho cov kev sib txuas rau cov kev pabcuam sab nraud, xws li cov neeg ua haujlwm queue, databases, caching cov kev pabcuam, yuav tsum yog tib yam rau ob qho tib si hauv cheeb tsam thiab qhov chaw thib peb / ntau lawm. Hauv lwm lo lus, txhua lub sijhawm, los ntawm kev hloov txoj hlua txuas, Kuv tuaj yeem hloov hu mus rau lub hauv paus # 1 nrog lub hauv paus # 2 yam tsis tau hloov daim ntawv thov code. Los yog, saib ua ntej, ua piv txwv, thaum ntsuas qhov kev pabcuam, koj yuav tsis tas yuav qhia txog kev sib txuas hauv txhua txoj hauv kev tshwj xeeb rau lub cache server ntxiv.
5. Tsim, tso, ua
Muaj tsuas yog qhov kawg version ntawm cov cai ntawm tus neeg rau zaub mov, tsis muaj caij nyoog ntawm dov rov qab tso tawm. Tsis tas yuav sau qhov chaw disk. Tus neeg twg uas xav tias lawv tuaj yeem tso cai rau hauv kev tsim khoom nrog qhov yuam kev yog tus programmer phem!
Txhua theem ntawm kev xa tawm yuav tsum tau sib cais los ntawm ib leeg.
Muaj sij hawm tig rov qab. Ua cov ntawv tshaj tawm nrog cov ntawv qub ntawm daim ntawv thov (tam sim tau sib sau ua ke thiab npaj rau kev sib ntaus sib tua) khaws cia hauv kev nkag tau sai, yog li ntawd thaum muaj kev ua yuam kev koj tuaj yeem rov qab kho cov qub version. Ntawd yog, conditionally muaj ib daim nplaub tshev Tshaj tawm thiab folder tam sim no, thiab tom qab ua tiav kev xa tawm thiab sib dhos cov ntawv tais ceev tseg tam sim no txuas los ntawm cov cim txuas rau qhov kev tso tawm tshiab uas nyob hauv Tshaj tawm nrog rau cov pa npe ntawm tus naj npawb tso tawm.
Qhov no yog qhov uas peb nco ntsoov Blue-Green deployment, uas tso cai rau koj tsis tsuas yog hloov ntawm cov cai, tab sis kuj hloov ntawm tag nrho cov peev txheej thiab txawm ib puag ncig nrog lub peev xwm rov qab txhua yam.
6. Cov txheej txheem
Khaws daim ntawv thov lub xeev cov ntaub ntawv ncaj qha hauv daim ntawv thov nws tus kheej. Siv cov ntu hauv RAM ntawm daim ntawv thov nws tus kheej. Siv ntau qhov sib koom ntawm cov kev pabcuam thib peb raws li qhov ua tau. Cia siab rau qhov tseeb tias daim ntawv thov tsuas muaj ib txoj kev thiab tsis tso cai rau scaling.
Hais txog cov kev sib tham, khaws cov ntaub ntawv tsuas yog hauv lub cache tswj los ntawm cov kev pabcuam thib peb (memcached, redis), yog li txawm tias koj muaj 20 daim ntawv thov txheej txheem khiav, ib qho ntawm lawv, tau nkag mus rau lub cache, yuav tuaj yeem txuas ntxiv ua haujlwm nrog tus neeg siv khoom hauv tib lub xeev uas tus neeg siv tau ua haujlwm nrog daim ntawv thov hauv lwm tus txheej txheem. Nrog rau txoj hauv kev no, nws hloov tawm tias txawm tias muaj pes tsawg daim ntawv luam ntawm cov kev pabcuam thib peb uas koj siv, txhua yam yuav ua haujlwm ib txwm thiab tsis muaj teeb meem nrog kev nkag mus rau cov ntaub ntawv.
7. Chaw nres nkoj khi
Tsuas yog lub vev xaib server yuav tsum paub ua haujlwm nrog cov kev pabcuam thib peb. Los yog zoo dua tsis tau, nruab cov kev pabcuam thib peb ncaj qha hauv lub vev xaib server. Piv txwv li, raws li PHP module hauv Apache.
Tag nrho koj cov kev pabcuam yuav tsum nkag mus rau ib leeg los ntawm kev nkag mus rau qee qhov chaw nyob thiab chaw nres nkoj (localgost: 5432, localhost: 3000, nginx: 80, php-fpm: 9000), uas yog, los ntawm nginx Kuv tuaj yeem nkag mus rau php-fpm thiab mus rau postgres, thiab los ntawm php-fpm mus rau postgres thiab nginx thiab ua tau los ntawm txhua qhov kev pabcuam kuv tuaj yeem nkag mus rau lwm qhov kev pabcuam. Txoj kev no, qhov muaj txiaj ntsig ntawm kev pabcuam tsis raug khi rau qhov muaj txiaj ntsig ntawm lwm qhov kev pabcuam.
8. Parallelism
Ua haujlwm nrog ib tus txheej txheem, txwv tsis pub ntau cov txheej txheem yuav tsis tuaj yeem sib koom ua ke!
Tsis txhob siv cov kab ke ua haujlwm nrog cov txheej txheem thiab cov ntaub ntawv. Kev tua ib tus txheej txheem yuav tsum cuam tshuam rau tag nrho daim ntawv thov. Yog tias ib qho kev pabcuam poob qis, txhua yam poob qis.
Txhua tus txheej txheem thiab kev pabcuam tuaj yeem raug kaw txhua lub sijhawm thiab qhov no yuav tsum tsis txhob cuam tshuam rau lwm cov kev pabcuam (qhov no tsis txhais tau tias qhov kev pabcuam yuav tsis muaj rau lwm qhov kev pabcuam, tabsis lwm qhov kev pabcuam yuav tsis tua tomqab qhov no). Tag nrho cov txheej txheem yuav tsum raug txiav tawm kom zoo, yog li thaum lawv raug txiav tawm, tsis muaj cov ntaub ntawv yuav raug puas tsuaj thiab lub kaw lus yuav ua haujlwm kom raug rau lwm zaus koj qhib nws. Ntawd yog, txawm tias thaum muaj xwm txheej ceev, cov ntaub ntawv yuav tsum tsis txhob raug puas tsuaj (qhov kev hloov pauv yog tsim nyog ntawm no, cov lus nug hauv cov ntaub ntawv tsuas yog ua haujlwm hauv pab pawg, thiab yog tias tsawg kawg ib qho lus nug los ntawm pab pawg ua tsis tiav lossis raug tua nrog ib qho yuam kev, ces tsis muaj lwm cov lus nug los ntawm pab pawg neeg thaum kawg ua tsis tau qhov tseeb).
10. Daim ntawv thov kev txhim kho / kev ua haujlwm sib luag
Ntau lawm, staging thiab hauv zos version ntawm daim ntawv thov yuav tsum sib txawv. Hauv kev tsim khoom peb siv Yii Lite lub moj khaum, thiab hauv zos Yii, kom nws ua haujlwm sai dua hauv kev tsim khoom!
Hauv kev muaj tiag, txhua qhov kev xa tawm thiab ua haujlwm nrog cov lej yuav tsum nyob hauv ib puag ncig zoo ib yam (peb tsis tau tham txog lub cev kho vajtse). Tsis tas li ntawd, txhua tus neeg ua haujlwm txhim kho yuav tsum tuaj yeem xa cov cai rau kev tsim khoom yog tias tsim nyog, thiab tsis yog qee qhov tshwj xeeb kev cob qhia devops department, uas tsuas yog ua tsaug rau lub zog tshwj xeeb tuaj yeem nqa daim ntawv thov rau hauv kev tsim khoom.
Docker kuj pab peb nrog qhov no. Yog tias tag nrho cov ntsiab lus dhau los tau pom, siv docker yuav coj cov txheej txheem ntawm kev xa tawm ib puag ncig ntawm kev tsim khoom thiab ntawm lub tshuab hauv zos kom nkag mus rau ib lossis ob qho lus txib.
11. Cov ntaub ntawv
Peb sau cov cav rau cov ntaub ntawv thiab databases! Peb tsis ntxuav cov ntaub ntawv thiab cov ntaub ntawv los ntawm cov cav. Cia li yuav ib lub hard drive nrog 9000 Peta bytes thiab qhov zoo.
Tag nrho cov cav yuav tsum raug suav hais tias yog cov kwj ntawm cov xwm txheej. Daim ntawv thov nws tus kheej yuav tsum tsis txhob koom nrog hauv kev ua cov cav. Cov cav yuav tsum tau tso tawm los ntawm stdout lossis xa los ntawm cov txheej txheem xws li udp, kom ua haujlwm nrog cov cav tsis tsim teeb meem rau daim ntawv thov. greylog yog qhov zoo rau qhov no. Graylog tau txais tag nrho cov cav ntawm udp (cov txheej txheem no tsis tas yuav tos cov lus teb txog kev txais tos zoo ntawm pob ntawv) tsis cuam tshuam nrog daim ntawv thov txhua txoj kev thiab tsuas yog cuam tshuam nrog kev teeb tsa thiab kev ua cov cav. Daim ntawv thov logic tsis hloov mus ua hauj lwm nrog xws li mus kom ze.
12. Kev tswj xyuas cov haujlwm
Txhawm rau hloov kho cov ntaub ntawv, databases, thiab lwm yam, siv qhov sib cais tsim qhov kawg hauv API, ua tiav 2 zaug ua ke yuav ua rau txhua yam raug duplicated. Tab sis koj tsis ruam, koj yuav tsis nyem ob zaug, thiab peb tsis xav tau kev tsiv teb tsaws chaw.
Txhua txoj haujlwm tswj hwm yuav tsum tau ua nyob rau hauv ib puag ncig ib puag ncig raws li tag nrho cov cai, ntawm qib kev tso tawm. Ntawd yog, yog tias peb xav tau hloov cov qauv ntawm cov ntaub ntawv, ces peb yuav tsis ua nws manually los ntawm kev hloov cov npe ntawm txhua kab thiab ntxiv cov tshiab los ntawm qee qhov kev tswj xyuas cov cuab yeej pom. Rau tej yam zoo li no, peb tsim cov ntawv sib cais - kev tsiv teb tsaws chaw, uas tau ua tiav txhua qhov chaw thiab txhua qhov chaw ib puag ncig zoo ib yam nrog cov txiaj ntsig zoo thiab nkag siab. Rau tag nrho lwm cov dej num, xws li sau qhov project nrog cov ntaub ntawv, yuav tsum siv cov txheej txheem zoo sib xws.
2.4. Tom qab kev teeb tsa, peb xyuas seb cov npe nrog qhov project tau raug tsim thiab tua sau.
ls
exit
docker-compose down
2.5. Cia peb rov qab mus rau PHPStorm thiab teeb tsa txoj hauv kev kom raug rau peb daim ntawv thov laravel hauv cov ntaub ntawv .env.
3. Ntxiv tag nrho cov lej rau Git.
Txhawm rau ua qhov no, peb yuav tsim qhov chaw cia khoom ntawm Github (lossis nyob qhov twg). Cia peb mus rau ntawm cov npe habr hauv lub davhlau ya nyob twg thiab ua raws li cov cai hauv qab no.
php-fpm - php kom tau txais kev thov los ntawm lub vev xaib server
chaw ua haujlwm - php rau cov neeg tsim khoom
Tam sim no, peb tau ua tiav tias peb tau tsim ib daim ntawv thov uas ua tau raws li 4 lub ntsiab lus ntawm 12, uas yog:
1. Codebase - tag nrho cov cai yog nyob rau hauv ib lub repository (me me: tej zaum yuav muaj tseeb rau ntxiv docker nyob rau hauv lub laravel project, tab sis qhov no tsis tseem ceeb).
2. Kev vam meej - Tag nrho peb qhov kev cia siab tau sau meej meej hauv daim ntawv thov / composer.json thiab hauv txhua Dockerfile ntawm txhua lub thawv.
3. Kev Pabcuam Rov Qab - Txhua qhov kev pabcuam (php-fom, nignx, chaw ua haujlwm) nyob ntawm nws lub neej thiab txuas nrog sab nraud thiab thaum ua haujlwm nrog ib qho kev pabcuam, lwm qhov yuav tsis cuam tshuam.
Cia peb nres lub ntim thiab khiav lawv hla tus chij --scale
docker-compose down &&
docker-compose up -d --scale php-fpm=3 nginx php-fpm
Raws li peb tuaj yeem pom, cov ntawv luam tau raug tsim los ntawm lub thawv php-fpm. Peb tsis tas yuav hloov dab tsi hauv kev ua haujlwm nrog lub thawv no. Peb kuj tseem nkag mus rau nws ntawm qhov chaw nres nkoj 9000, thiab Docker tswj kev thauj khoom ntawm cov thawv rau peb.
7. Kev tsis taus -Txhua lub thawv tuaj yeem tua tsis tau ua phem rau lwm tus. Kev nres lossis rov pib lub thawv yuav tsis cuam tshuam rau kev ua haujlwm ntawm daim ntawv thov thaum lub sijhawm xa tawm tom ntej. Txhua lub thawv tuaj yeem nqa tau txhua lub sijhawm.
8. Kev txhim kho kev siv / kev ua haujlwm sib luag - tag nrho peb ib puag ncig yog tib yam. Los ntawm kev khiav lub kaw lus ntawm lub server hauv kev tsim khoom, koj yuav tsis tas yuav hloov dab tsi hauv koj cov lus txib. Txhua yam yuav ua raws li Docker ib yam nkaus.
9. Kev sau npe - tag nrho cov cav hauv cov thawv no mus rau kwj thiab pom hauv Docker console. (qhov no, qhov tseeb, nrog rau lwm cov thawv ntim hauv tsev, qhov no yuav tsis yog qhov teeb meem yog tias koj tsis saib xyuas nws)
docker-compose logs -f
Tab sis muaj ib tug ntes nyob rau hauv hais tias Default qhov tseem ceeb nyob rau hauv PHP thiab Nginx kuj sau cav rau ib cov ntaub ntawv. Yuav kom ua tau raws li 12 yam, nws yog qhov tsim nyog cuam ββtshuam sau ntawv rau ib cov ntaub ntawv nyob rau hauv configurations ntawm txhua lub thawv cais.
Docker kuj muab lub peev xwm xa cov cav tsis yog rau stdout xwb, tab sis kuj rau tej yam xws li greylog, uas kuv tau hais saum toj no. Thiab hauv greylog, peb tuaj yeem khiav cov cav raws li peb thov thiab peb daim ntawv thov yuav tsis pom qhov no nyob rau hauv ib txoj kev.
10. Cov hauj lwm tswj - Txhua txoj haujlwm tswj hwm tau daws los ntawm laravel ua tsaug rau cov cuab yeej cuab tam raws nraim li cov neeg tsim ntawm 12 yam thov xav tau.
Ua piv txwv, kuv yuav qhia tias qee cov lus txib raug ua li cas.
Peb mus rau hauv lub thawv.
docker-compose exec workspace bash
php artisan list
Tam sim no peb tuaj yeem siv cov lus txib. (thov nco ntsoov tias peb tsis tau teeb tsa lub database thiab cache, yog li ib nrab ntawm cov lus txib yuav tsis raug ua kom raug, vim tias lawv tau tsim los ua haujlwm nrog lub cache thiab database).
11. Configurations thiab 12. Tsim, tso, khiav
Kuv xav muab ntu no rau Blue-Green Deployment, tab sis nws tau dhau los ua ntau dhau rau tsab xov xwm no. Kuv yuav sau ib tsab xov xwm cais txog qhov no.
Hauv kev txiav txim siab, lub tswv yim yog raws li CI / CD systems zoo li Jenkins ΠΈ Gitlab CI. Hauv ob qho tib si, koj tuaj yeem teeb tsa ib puag ncig hloov pauv cuam tshuam nrog ib puag ncig tshwj xeeb. Yog li, hauv qhov xwm txheej no, point c yuav ua tiav Configurations.
Thiab qhov point hais txog Tsim, tso, khiav yog daws los ntawm built-in functions nrog lub npe Pipeline.
Pipeline tso cai rau koj faib cov txheej txheem xa mus rau ntau theem, qhia txog theem ntawm kev sib dhos, tso tawm thiab ua tiav. Tsis tas li hauv Pipeline, koj tuaj yeem tsim cov thaub qab, thiab qhov tseeb txhua yam. Qhov no yog ib qho cuab yeej uas muaj peev xwm tsis muaj kev txwv.
Daim ntawv thov code yog ntawm github.
Tsis txhob hnov ββqab pib lub submodule thaum cloning no repository.