Do të doja të ndaja disa përshtypje për domosdoshmërinë ose panevojshmërinë e një gjëje të tillë si një panel kontrolli për një projekt komercial në internet me një server me një administrator shumë me kohë të pjesshme. Historia nisi disa vite më parë, kur miqtë e miqve më kërkuan të asistoja në blerjen e një biznesi - një faqe lajmesh - nga pikëpamja teknike. Ishte e nevojshme të thellohej pak në atë që po punonte për çfarë, të sigurohej që të gjitha detajet e nevojshme të ishin transferuar në formën dhe vëllimin e duhur dhe të kuptoni në mënyrë strategjike se çfarë mund të përmirësohej.
Marrëveshja u përfundua, violinisti nuk ishte më i nevojshëm. fund. Jo ne te vertete.
Sajti funksiononte në një makinë virtuale me dy bërthama 4GB në Linode, në disa procesorë me myshk. Debian5 me 400 ditë kohëzgjatje funksionimi dhe një listë të gjatë paketash të papërditësuara. Pjesa e uebit është në një CMS të personalizuar, nginx, PHP 5.3 FPM dhe një Percona MySQL të akorduar. Në thelb funksionoi.
Paralelisht me bisedat me mua, pronari i ri po kërkonte një programues për ta sjellë projektin në pritshmëritë e tij. Gjetur. Programuesi vlerësoi trafikun dhe vëllimet dhe vendosi se ai dinte të optimizonte dhe menaxhonte koston. Ai migroi të gjithë faqen në një host të përbashkët prej 700 rubla të menaxhuar nga IS****er-i i tij i zakonshëm. Disa ditë më vonë pati një tjetër thirrje nga pronari: "Gjithçka është e ngadaltë dhe duket se jemi thyer". U përpoqa ta korrigjoja situatën përmes panelit, por pas disa kohësh përpjekjesh të pafrytshme për të ndryshuar versionin ose mbajtësin PHP nga fcgi në fpm, hoqa dorë dhe hyra në guaskë. Aty gjeta një debug të aktivizuar që shkëlqente në të gjithë internetin me fjalëkalimin nga muskuli, 777 në disa dosje që në atë kohë po plaseshin me malware dhe marrëzi të ngjashme. Pronari e kuptoi dhe vendosi se ishte e gabuar të kursente në hosting, një programues dhe një administrator që mund të vëzhgonte se si po shkonin gjërat.
Ne do të shkojmë në RuVDS. Pak më afër se Linode britanike, dhe nëse papritmas dëshironi të ruani të dhënat personale dhe të gjitha këto, nuk do të keni nevojë të lëvizni askund tjetër. Meqenëse projekti ishte planifikuar të zgjerohej, morëm një VM për rritje: 4 bërthama, 8 gigabajt memorie, 80 GB disk. Nuk është se nuk di të konfiguroj manualisht konfigurimet nginx, thjesht nuk pata entuziazmin për të punuar në këtë projekt kaq intimisht (shih më lart për part time). Kjo është arsyeja pse instalova Plesk (këtu do të heq detajet e instalimit, sepse në përgjithësi nuk ka asnjë: nisa instaluesin, vendosa fjalëkalimin për administratorin, futa çelësin - kjo është e gjitha), në atë kohë ishte 17.0. Cilësimet bazë funksionojnë me tolerancë jashtë kutisë, ka fail2ban dhe versionet më të fundit të disponueshme të PHP dhe nginx.
Ndoshta ia vlen të ndaleni dhe të shpjegoni pse. Meqenëse unë i bëj rrallë gjëra të tilla dhe nuk kam mjete të veçanta ose grup përgatitjesh për secilin rast, ishte e qartë se duhej një lloj automatizimi i gjërave bazë, në mënyrë që së pari, shpejt, së dyti, në mënyrë të sigurt dhe së treti. , të gjitha praktikat më të mira që dikush i ka zbatuar tashmë.
Pra, e instalova. Kursova shumë kohë, rifillimi i faqes në një server të ri ishte pothuajse i menjëhershëm. E tëra që mbetej ishte të redaktoni konfigurimin e muskujve, duke i dhënë gjysmën e memories dhe duke rritur numrin e grupeve të tamponit, dhe t'i jepni nginx gjysmën e bërthamave (Plesk nuk prek konfigurimet globale) dhe për disa ditë futeni në guaskë për të parë në statistikat e mysqltuner. Po, dhe bleva ImunifyAV me pagesë nga katalogu i shtesave për të hequr qafe malware-in e përmbytur. U gjetën rreth 11000 skedarë të infektuar. E neveritshme është që copa kodi të turbullta u derdhën në statikë dhe pastrimi i tij me dorë do të ishte krejtësisht i mërzitshëm. Së pari provova ClamAV, por, siç doli, nuk kërkon gjëra të tilla, por ImunifyAV mund. Për më tepër, skedarët e dezinfektuar mbeten në gjendje pune, pjesa me malware thjesht fshihet.
Aritmetika është e thjeshtë: 50 dollarë në muaj për VMka, 10 dollarë për Plesk (në fakt më pak, sepse e keni blerë për një vit menjëherë me një zbritje dy mujore) dhe 3 dollarë për antivirus. Ose shumë para për kohën time, të cilat do t'i kisha shpenzuar në server në fillim, duke i grumbulluar këto stalla me dorë. Pronari ishte mjaft i kënaqur me këtë marrëveshje.

Ndërkohë, ata gjetën një programues të ri. Ne ramë dakord me të për shpërndarjen e përgjegjësisë, krijuam një nën-domain për versionin e testimit dhe filloi puna. Ai ishte duke prerë një version të ri të faqes në Laravel, dhe unë po shikoja fail2ban%).

Interesant është fakti se fluksi i njerëzve kureshtarë nuk ndalet dhe në listën e të ndaluarve ka gjithmonë rreth njëqind adresa. Efekti është interesant: në veçanti, zakonisht, nëse hyj në guaskë, shoh rreth 20000-30000 përpjekje të pasuksesshme për t'u identifikuar përmes SSH në përshëndetje. Me fail2ban të aktivizuar, rreth 70. Përpjekjet e investuara: 0. Fatkeqësisht, nuk ishte pa një pikë vaji. Si parazgjedhje, WAF (modsecurity) ishte gjysmë i aktivizuar: në modalitetin e zbulimit. Kjo do të thotë, ai shkroi aktivitete të dyshimta në regjistër, por në fakt nuk mori asnjë masë. Dhe fail2ban lexoi pa dallim të gjitha regjistrat, sipas burgjeve të aktivizuara, dhe vrau gjithçka që lëvizte. Kështu e ndaluam gjysmën e redaktorëve :D. Më është dashur të çaktivizoj këtë burg dhe të listoj adresat e nevojshme IP për besueshmëri. Janë bërë përpjekje: shtypni dy herë miun dhe mësoni redaktorët t'ju tregojnë adresën tuaj IP.

Ajo që programuesit i pëlqeu menjëherë ishte aftësia për të ngarkuar bazat e të dhënave direkt në panel dhe akses i shpejtë në phpMyAdmin

Ajo që më pëlqeu ishin regjistrat dhe kopjet rezervë. Regjistrat shkruhen dhe rrotullohen jashtë kutisë; Rezervimet janë shumë të lehta për t'u konfiguruar. Në kohën më të ngadaltë, bëhet një kopje rezervë e plotë, rreth 10 koncerte, dhe më pas çdo ditë një shtesë, 200 megabajt secila, për një javë. Rimëkëmbja është e grimcuar, deri në një skedar ose bazë të dhënash specifike. Nëse keni nevojë të rivendosni nga një shtesë, atëherë nuk keni nevojë të shqetësoheni së pari me një rikthim të plotë dhe të të gjithë zinxhirit, Plesk bën gjithçka vetë. Ju mund të ngarkoni kopje rezervë kudo: në FTP, dropbox, kovë s3, google drive, etj.

Dita F: programuesi më në fund përfundoi motorin e ri, e ngarkuam në prodhim, importuam të dhëna të vjetra dhe u ulëm për të zgjedhur ngjyrën e Maseratit tonë të ardhshëm. Ne jemi ende ulur dhe zgjedhim.
Filluan problemet e para. Faqja e re pritej të ishte më e rëndë se ajo e vjetra, por shkalla e vërtetë ishte se për të tërhequr trafikun ata përdorën, ndër të tjera, Yandex.Zen, i cili solli shumë vizitorë. Faqja u rrëzua me 150 lidhje të njëkohshme (nuk po flas për RPS, sepse nuk e matën). Ne filluam të shtypim butonat dhe të kthejmë pullat në zonën e cilësimeve php_fpm:

Hej, ai tashmë ka 500 lidhje. Ndërsa kartat e kreditit iu shtuan mjeteve të promovimit, valët e trafikut u bënë më të mëdha. Pika tjetër është 1000 lidhje të njëkohshme. Këtu na u desh të rifundonim kodin dhe të shikonim në shpirtin e muskujve. Spërkatja nuk na ndihmoi, por nuk e prisnim vërtet. Ne aktivizuam regjistrin e ngadaltë të pyetjeve, shtuam indekse në bazën e të dhënave, hoqëm pyetjet e panevojshme nga kodi dhe pastruam edhe një herë konfigurimin mysql sipas këshillave të mysqltuner.
Sfidë e re - 2000 lidhje. Sapo arriti të lëshohej versioni i Plesk 17.8, në të cilin ndër të tjera u shtua edhe caching nginx. Përditësuar (çuditërisht e lehtë). Le te perpiqemi. Punon! Dhe pastaj ata shkelën në anën e butë, furnizimi Yandex.Zen pushoi së funksionuari. Faqja po funksionon, furnizimi nuk funksionon. Furnizimi nuk funksionon, nuk ka trafik. Atmosfera po nxehet. Nën presionin e rrethanave dhe mungesës së imagjinatës, shkova menjëherë në Strace dhe Nginx dhe gjeta atë që kërkoja. Rezulton se në një moment budalla nginx ka ruajtur gabimin e 500-të të humbur si përgjigje ndaj Yandex get feed.xml. E rregulloi atë duke shtuar përjashtime në cilësimet e cache:

Është e qartë se pronari ka nevojë për MË SHUMË, dallgët po rriten ngadalë. Tani për tani po e përballojmë, por kemi filluar të eksperimentojmë me memcached paraprakisht, për fat të mirë Laravel e mbështet atë pothuajse jashtë kutisë. Unë disi nuk doja të instaloja manualisht memcached vetëm për të "luajtur", kështu që instalova një imazh docker. Direkt nga paneli.

Epo, në rregull, po gënjej, më duhej të futesha në guaskë dhe të instaloja modulin përmes pecl. Pikërisht në . Nuk ka asgjë për të thënë për rritjen e xhiros ende nuk ka pasur flukse mjaft të mëdha. Motori i faqes është i lidhur me localhost:11211, shfaqen statistikat, memoria po konsumohet. Nëse ju pëlqen, do të shohim se çfarë të bëjmë më pas. Ose do ta lëmë kështu, ose do ta vendosim atë "vërtetin" pikërisht në Bosht. Ose le të provojmë redis në të njëjtën mënyrë
Pastaj ishte e nevojshme të bashkëngjitni një listë postimesh. Nuk ka rele, vetëm vërtetim smtp. Vendos një adresë emaili dhe përdor detajet e saj për të dërguar një buletin nëpërmjet PHP.

Jo shumë kohë më parë u lëshua Plesk Obsidian (18.0), ne e përditësuam bazuar në përvojën e kaluar pa frikë. Gjithçka shkoi shumë mirë, nuk ka asgjë për të folur. Gjëja e këndshme është se cilësia e ndërfaqes është përmirësuar shumë, është bërë më moderne dhe është bërë më e përshtatshme në disa vende. Gjë e bukur Monitorim i avancuar në Grafana.

Unë nuk e kam trajtuar ende në detaje, por ju, për shembull, mund të vendosni alarme për çdo parametër në emailin tuaj. Për pronarin, lol.
Ndërsa po flas për ndërfaqen, është e përgjegjshme dhe funksionon shumë mirë në telefon. Në fazat e hershme, ndërsa po përpiqeshim të gjenim cilësimet optimale për PHP dhe gjëra të tjera, kjo na ndihmoi shumë. Dhe veçanërisht kur një programues, në një entuziazëm pune, bën diçka në orën 23:XNUMX, dhe unë, në një entuziazëm pune, pi vodka në banjë dhe më duhet urgjentisht të ndërroj diçka.

Oh, meqë ra fjala. Fotografia tregon se është shfaqur PHP Composer. Ne nuk kemi luajtur ende me të, por, të themi, për Laravel, ai mund të kursejë disa hyrje në shell dhe pak kohë në instalimin e varësive. I njëjti sistem ekziston për Node.JS dhe Ruby.
Me SSL gjithçka është e thjeshtë. Nëse domeni zgjidh siç pritej, Let's Encrypt bëhet me një klik dhe më pas përditësohet vetë, si për vetë domenin, ashtu edhe për nëndomenet, madje edhe shërbimet e postës.

Vetë Plesk si softuer aktualisht është mjaft i këndshëm dhe i qëndrueshëm. Ai përditëson veten dhe Aksi në heshtje, konsumon pak burime dhe funksionon pa probleme. As që mbaj mend që kam shkelur diku diçka, që do të ishte një defekt i dukshëm në produkt. Sigurisht, kishte probleme, por ato ishin ose për shkak të konfigurimit të papërsosur ose diku në kryqëzim, kështu që nuk ka asgjë për t'u ankuar. Përshtypjet e punës me Plesk janë përgjithësisht të këndshme. Ajo që nuk ka, dhe ne duhet ta kuptojmë këtë, është çdo (ndonjë) grupim. As LB as HA. Mund të provoni, por mundi do të jetë aq i madh sa është më mirë të bëni diçka ndryshe që në fillim.
Mendoj se mund ta përmbledhim. Për rastin kur nuk ka administrator, ose nuk ka mjaftueshëm, kur çmimi i hostimit dhe faqeve që rrotullohen në të i kalon, le të themi, 100 USD, kur nuk flasim për ndarje shtazarake prej 1500. faqet në një server, kur vendimmarrësi ballafaqohet me Nëse ju keni zgjedhjen të punësoni një administrator me kohë të pjesshme, ose të blini softuer dhe të keni një administrator për gjysmë dollar, ose të mos keni fare një të tillë - patjetër që ka kuptim. Nga këndvështrimi i administratorit të largët - e njëjta gjë. 10 dollarë në muaj dhe kursen kohë dhe jep fleksibilitet në punë për një kohë shumë të gjatëоnjë sasi më të madhe. Nëse, për shembull, më kërkohet me forcë të marr një projekt të ngjashëm nën krahun tim, unë do të insistoj që ta transferoj atë në Plesk.
Burimi: www.habr.com
