Moje iskustvo s Plesk

Želim podijeliti neka iskustva o potrebnosti ili nepotrebnosti nečega poput kontrolne ploče za komercijalni jednoserverni web projekt uz prisustvo vrlo povremenog administratora. Priča je počela prije nekoliko godina kada su poznanici poznanika tražili da ih tehnički podržim prilikom kupnje posla - novinskog portala. Bilo je potrebno malo se upustiti u to što radi, osigurati da su svi potrebni podaci preneseni na odgovarajući način i u odgovarajućoj mjeri, te strateški razmisliti što se može poboljšati.

Moje iskustvo s Plesk
Posao je završen, violinist nije bio potreban. Kraj. Zapravo, nije.

Web stranica se vrtjela na dvojezgrenom 4GB VM-u na Linode-u, na nekom starom Debianu 5 s vremenom rada od 400 dana i takvim popisom neaktualnih paketa. Web dio na domaćem CMS-u, nginx, php5.3 FPM, mysql optimiziran Percona. U načelu, radilo je.

Paralelno sa razgovorima sa mnom, novi vlasnik je tražio programera kako bi projekt prilagodio očekivanjima. Pronašao je. Programer je procijenio promet i opterećenja te odlučio da zna o optimizaciji i upravljanju troškovima. Migrirao je cijelu stranicu na 700-kuna shared hosting pod upravom njemu poznatog IS****era. Nakon nekoliko dana ponovno poziv od vlasnika: "sve usporava i čini se da su nas napali". Pokušao sam ispraviti situaciju kroz ploču, ali nakon nekog vremena neuspješnih pokušaja promjene verzije PHP-a ili handlera s fcgi na fpm, odustao sam i otišao u shell. Tamo sam pronašao uključeno debagiranje, koje je izlagalo lozinku za mysql na cijelom internetu, 777 na nekim mapama koje su u to vrijeme pucale od učitane maliciozne kod i sličnih sranja. Vlasnik je shvatio i odlučio da je pogrešno štedjeti na hostingu, programeru i administratoru koji bi povremeno pazio kako stvari idu.

Idemo na RuVDS. Malo bliže nego britanski Linode, i ako se odjednom odlučite pohraniti osobne podatke i sve to, nećete morati više nigdje seliti. Kako je projekt planirano proširiti, uzeli smo VM 'na rast': 4 jezgre, 8 GB RAM-a, 80GB diska. Nije da ne znam s konfiguracijama nginx-a ručno, jednostavno nisam imao entuzijazma da se toliko intimno bavim ovim projektom (pogledajte gore o part-time). Stoga — instalirao sam Plesk (ovdje ću preskočiti detalje instalacije, jer ih zapravo nema: pokrenuo instalater, postavio lozinku za administratora, unio ključ – to je to), tada je to bila verzija 17.0. Osnovne postavke rade pristojno iz kutije, ima fail2ban i najnovije dostupne verzije PHP-a, nginx-a. 

Vjerojatno je potrebno stati i objasniti zašto je on. Budući da se takvim stvarima bavim rijetko, i nemam nikakav posebni alat ili set šablona za svaki slučaj, bilo je jasno da je potrebna neka automatizacija osnovnih stvari, kako bi, prvo, brzo, drugo, sigurno, treće, da su sve najbolje prakse već implementirane.

Dakle, postavio sam. Uštedio sam značajno vrijeme, ponovno pokretanje web stranice na novom serveru dogodilo se gotovo trenutno. Ostalo je samo prilagoditi mysql konfiguraciju, dodijelivši mu pola memorije i povećajući broj buffer poolova, te dodijeliti nginx-u polovinu jezgri (Plesk ne dira globalne konfiguracije), i tijekom nekoliko dana provjeravati u terminalu statistike mysqltunera. Da, i kupio sam plaćeni ImunifyAV iz kataloga ekstenzija da se oslobodim zaraženih datoteka. Pronašao sam otprilike 11000 zaraženih datoteka. Užas u tome je što su se u statičke datoteke infiltrirali obfuscirani dijelovi koda, a čišćenje toga ručno bi bilo sasvim neugodno. Prvo sam probao ClamAV, ali on, kako se ispostavilo, ne hvata takve stvari, a ImunifyAV je uspjelo. Osim toga, izliječene datoteke ostaju u radnom stanju, jednostavno se uklanja dio s malware-om.

Aritmetika je jednostavna: 50$ mjesečno za VM, 10$ za Plesk (u stvari manje, jer smo kupili odmah na godinu s popustom od dva mjeseca) i 3$ za antivirus. Ili mnogo novčanica za moje vrijeme koje bih proveo na serveru ispravljajući te konjušnice ručno u početku. Vlasnika je takav raspored sasvim zadovoljio.

Moje iskustvo s Plesk
U međuvremenu smo pronašli novog programera. Dogovorili smo se o raspodjeli odgovornosti, napravili smo poddomen za testnu verziju, i posao je započeo. On je radio novu verziju stranice na Laravelu, dok sam ja pratio fail2ban%.

Moje iskustvo s Plesk
Zanimljivo je da broj radoznalaca ne prestaje, a na popisu zabranjenih adresa uvijek je oko stotinu. Efekt je zanimljiv: naime, obično, kada uđem u shell, na pozdravu vidim oko 20.000-30.000 neuspješnih pokušaja prijave putem SSH-a. Uz uključen fail2ban, taj broj pada na oko 70. Uloženih napora: 0. Nažalost, nije prošlo bez mrvicu katrana. Po defaultu je WAF (modsecurity) bio „poluuključen“: u režimu otkrivanja. To znači da je pisao sumnjivu aktivnost u log, ali zapravo nije poduzimao nikakve akcije. A fail2ban je bez razmišljanja čitao sve logove, prema uključenim jailovima, i brisao sve što se micalo. Na taj smo način zabranili pola redakcije :D. Morali smo isključiti taj jail i potrebne IP adrese za sigurnost uvrstiti na bijelu listu. Uloženih napora: dva puta kliknuti mišem i naučiti urednike kako reći svoju IP adresu.

Moje iskustvo s Plesk
Što se programeru odmah svidjelo — mogućnost učitavanja baza podataka direktno iz panela i brz pristup phpMyAdminu.

Moje iskustvo s Plesk
Što mi se svidjelo — logovi i backupi. Logovi se pišu i rotiraju sami iz kutije; backup se podešava vrlo jednostavno. U najuspavanijem vremenu radi se puni backup, negdje oko 10 gigabajta, a zatim svaki dan po inkrementalni, oko 200 megabajta, tijekom tjedna. Obnova je granularna, do određenog fajla ili baze podataka. Ako je potrebno obnoviti iz inkrementalnog, ne treba se mučiti prvo s punim i vraćanjem cijelog lanca, Plesk sve radi sam. Backup se može učitati bilo gdje: na FTP, na Dropbox, S3 bucket, Google drive i slično.

Moje iskustvo s Plesk
Dan D: programer je konačno završio novi motor, prebacili smo ga u produkciju, uvezli stare podatke i sjeli birati boju svojih budućih Mazarija. Još uvijek biramo.

Počeli su prvi problemi. Nova stranica bila je očekivano teža od stare, ali pravi problem bio je u tome što smo za privlačenje prometa koristili između ostalog Yandex.Zen, koji je dovodio posjetitelje velikim količinama. Stranica se rušila pri 150 istovremenih povezanosti (ne govorim o RPS-u, jer nismo mjerili). Počeli smo pritiskati gumbe i okretati točkiće u području postavki php_fpm:
 
Moje iskustvo s Plesk
Evo, već drži 500 konekcija. Kako se kreditna kartica koristi za promocijske troškove, valovi prometa su postali veći. Sljedeći cilj je 1000 istovremenih povezanosti. Tada je trebalo malo doraditi kod i pogledati u dušu muskulacije. Plesk nije pomogao, ali to se i nije očekivalo. Uključili smo log sporih upita, dodali indekse na bazu, uklonili suvišne upite iz koda, još jednom sredili mysql konfiguraciju prema savjetima mysqltunera.

Novi izazov — 2000 konekcija. U pravo vrijeme je objavljena verzija Plesk 17.8, u kojoj su, između ostalog, dodali nginx caching. Osvježili smo se (na čuđenje, lako). Probamo. Radi! I odmah je uslijedio zamah, prestalo je raditi Yandex Zen feed. Web stranica radi, ali feed ne radi. Ako feed ne radi, nema prometa. Atmosfera se zagrijava. Pod pritiskom okolnosti i zbog nedostatka mašte odmah sam počeo strace-nginx i pronašao što je bilo. Ispostavilo se da je u nekom trenutku budalasti nginx keširao grešku 500 kao odgovor na Yandex GET feed.xml. Ispravili smo dodavanjem iznimaka u postavke keširanja:

Moje iskustvo s Plesk
Razumljivo je da vlasniku treba JOŠ, valovi polako rastu. Za sada se nosimo, ali unaprijed smo počeli eksperimentirati s memcached, srećom Laravel ga podržava gotovo iz kutije. Nije mi se baš dalo ručno postavljati memcached za "igranje", pa smo postavili Docker sliku. Direktno iz panela.

Moje iskustvo s Plesk
Dobro, lažem, morao sam ući u shell i instalirati modul preko pecl. Direktno po uputi. Ne mogu još reći ništa o povećanju propusnosti, nije bilo značajnih naplava. Web engine se povezao na localhost:11211, statistike se prikazuju, memorija se koristi. Ako bude dobro, vidjet ćemo što dalje raditi. Možda ostaviti ovako ili instalirati "pravi" direktno na O.S. Ili ćemo pokušati redis na sličan način.

Kasnije je bilo potrebno dodati mail distribuciju. Bez relaya, samo smtp autentifikacija. Postavio sam email adresu, putem njenih podataka šaljemo distribuciju preko PHP-a.

Moje iskustvo s Plesk
Nedavno je objavljen Plesk Obsidian (18.0), ažurirali smo se prema prethodnom iskustvu bez straha. Sve je prošlo vrlo glatko, čak se nema o čemu pričati. Od ugodnog — kvalitet sučelja se znatno poboljšao, moderniziran je i postao u nekim mjestima praktičniji. Cool stvar Advanced Monitoring na Grafani.

Moje iskustvo s Plesk
Još se nisam detaljno upoznao s njom, ali se, na primjer, može postaviti upozorenje za bilo koji parametar na email. Vlasniku, lol.

Kad već govorim o sučelju, ono je responzivno i stvarno dobro radi na telefonu. U ranim fazama, dok smo pokušavali pronaći optimalne PHP postavke i ostalo, to nam je jako pomoglo. Pogotovo kada programer u trenutku radnog entuzijazma nešto radi u 23 sata, a ja u trenutku radnog entuzijazma pijem votku u kupelji, i HITNO je potrebno nešto prebaciti.

Moje iskustvo s Plesk
Oh, usput. Na slici se vidi da je PHP Composer postao dostupan. Još nismo igrali s njim, ali, recimo, za Laravel može uštedjeti nekoliko prijava u shell i malo vremena za instalaciju ovisnosti. Sličan sustav postoji za Node.JS i Ruby.

Sa SSL-om je sve jednostavno. Ako se domena pravilno razrješava, Let’s Encrypt se aktivira jednim klikom i nastavlja se automatski ažurirati, kako na samoj domeni, tako i na poddomenama, pa čak i na e-mail uslugama.

Moje iskustvo s Plesk
Samo Plesk kao softver trenutno je prilično ugodan i stabilan. Samo se ažurira i OS tiho, troši malo resursa, radi bez problema. Čak se ni ne sjećam da sam negdje na nešto nabasao što bi bilo očiti nedostatak proizvoda. Problema je naravno bilo, ali su ili proizašla iz nesavršenosti konfiguracije, ili su se dogodila negdje na sučelju, tako da se nema na što posebno požaliti. Općenito, iskustva s Pleskom su pozitivna. Ono što nedostaje, a to treba razumjeti, jest bilo kakva (bilo koja) klasterizacija. Ni LB, ni HA. Moguće je pokušati, ali uloženih napora će biti toliko da je bolje odmah raditi nešto drugačije.

Mislim da se može sažeti. U slučaju kada nema admina, ili ga je malo, kada cijena hostinga i web stranica koje se na njemu vrte prelazi, recimo, 100 u.e., kada nije riječ o smešnom dijeljenju s 1500 sajtova na serveru, kada se pred donosiocem odluka nalazi izbor zaposliti admina na pola radnog vremena, ili kupiti softver i angažirati admina na "polovici", ili ga uopće ne zaposliti — ima smisla. S gledišta udaljenog admina — isto. 10$ mjesečno, a štedi vrijeme i daje fleksibilnost u radu na vrlo velikom iznosu. Ako me, primjerice, jako zamole da preuzmem sličan projekt, insistirat ću na prebacivanju na Plesk.oŽelim podijeliti neka iskustva o potrebnosti ili nepotrebnosti takve stvari kao što je kontrolna ploča za komercijalni jedno-serverni web projekt pri prisutnosti vrlo djelomičnog admina.

Moje iskustvo s Plesk

Izvor: habr.com

Kupite pouzdan hosting za web stranice s DDoS zaštitom, VPS VDS servere 🔥 Kupite pouzdan hosting za web stranice s DDoS zaštitom, VPS VDS servere | ProHoster