Mana pieredze ar Plesku

Es vēlētos dalÄ«ties dažos iespaidos par vadÄ«bas paneļa nepiecieÅ”amÄ«bu komerciālam viena servera tÄ«mekļa projektam ar ļoti nepilna laika administratoru. Stāsts sākās pirms pāris gadiem, kad daži draugu draugi lÅ«dza mani pārraudzÄ«t uzņēmuma — ziņu vietnes — iegādi no tehniskā viedokļa. Man bija jāiegÅ«st pamatzināŔanas par to, kas darbojas uz kura, jānodroÅ”ina, lai visa nepiecieÅ”amā informācija tiktu nodota pareizā formātā un apjomā, un stratēģiski jāizvērtē, ko varētu uzlabot.

Mana pieredze ar Plesku
Darījums bija noslēgts, vijolnieks vairs nebija vajadzīgs. Beigas. Ne gluži.

Vietne darbojās uz divkodolu 4 GB virtuālās maŔīnas Linode platformā, kaut kādas novecojuÅ”as Debian 5 operētājsistēmas ar aptuveni 400 dienu darbÄ«bas laiku un milzÄ«gu novecojuÅ”u pakotņu sarakstu. TÄ«mekļa daļa darbojās ar pielāgotu satura pārvaldÄ«bas sistēmu (CMS), nginx, PHP 5.3 FPM un uzlabotu Percona MySQL. Pamatā viss darbojās.

Sarunas laikā ar mani jaunais Ä«paÅ”nieks meklēja programmētāju, lai projektu Ä«stenotu atbilstoÅ”i cerÄ«bām. ViņŔ tādu atrada. Programmētājs novērtēja trafiku un apjomu un nolēma, ka viņam piemÄ«t talants optimizācijā un izmaksu pārvaldÄ«bā. ViņŔ visu vietni migrēja uz 700 rubļu vērtu koplietojamu mitināŔanas pakalpojumu, ko pārvaldÄ«ja viņa ierastais informācijas nesējs. Pēc dažām dienām Ä«paÅ”nieks atkal piezvanÄ«ja: "Viss notiek lēni, un Ŕķiet, ka esam salauzti." Es mēģināju situāciju labot, izmantojot vadÄ«bas paneli, bet pēc vairākiem neveiksmÄ«giem mēģinājumiem mainÄ«t PHP versiju vai apstrādātāju no fcgi uz fpm, es padevos un iegāju čaulā. Tur es atradu iespējotu atkļūdoÅ”anu, kas atklāja paroli visam internetam, 777 dažām mapēm, kuras tajā brÄ«dÄ« jau bija pilnas ar ļaunprātÄ«gu programmatÅ«ru, un tamlÄ«dzÄ«gas muļķības. ÄŖpaÅ”nieks saprata un nolēma, ka taupÄ«t uz mitināŔanu, programmētāju un administratoru, kas rÅ«pÄ«gi sekotu lÄ«dzi, kā viss notiek, ir nepareizi.

Mēs pārceļamies uz RuVDS. Tas ir nedaudz tuvāk nekā Apvienotās Karalistes Linode, un, ja pēkŔņi vēlēsimies glabāt personas datus un visu pārējo, mums nebÅ«s jāpārceļas nekur citur. Tā kā projekts bija paredzēts paplaÅ”ināŔanai, mēs iegādājāmies virtuālo maŔīnu "izaugsmei": 4 kodoli, 8 GB atmiņas, 80 GB diska vietas. Ne jau tāpēc, ka es nezinu, kā manuāli pielāgot nginx konfigurācijas, man vienkārÅ”i nebija entuziasma tik intensÄ«vi strādāt pie Ŕī projekta (skatÄ«t iepriekÅ” par nepilna laika darbu). Tātad, es instalēju Plesk (es Å”eit izlaidīŔu instalēŔanas detaļas, jo tādas Ä«sti nav: palaidiet instalētāju, iestatiet administratora paroli, ievadiet atslēgu, un viss). Toreiz tā bija 17.0. Pamata iestatÄ«jumi darbojas diezgan labi uzreiz pēc instalēŔanas; tam ir fail2ban un jaunākās pieejamās PHP un nginx versijas. 

VarbÅ«t man vajadzētu apstāties un paskaidrot, kāpēc. Tā kā es reti veicu Ŕāda veida darbu un man nav Ä«paÅ”u rÄ«ku vai iepriekÅ” iestatÄ«tu iestatÄ«jumu katrai situācijai, bija skaidrs, ka ir nepiecieÅ”ama zināma pamatfunkciju automatizācija, pirmkārt, lai padarÄ«tu to ātru, otrkārt, lai nodroÅ”inātu droŔību un, treÅ”kārt, lai nodroÅ”inātu, ka visa labākā prakse jau ir ieviesta.

Tā nu es to instalēju. IetaupÄ«ju diezgan daudz laika, un vietne jaunajā serverÄ« restartējās gandrÄ«z acumirklÄ«. Atlika tikai pielāgot muskuļu konfigurāciju, pieŔķirot pusi atmiņas un palielinot buferu kopu skaitu, un pieŔķirot pusi kodolu nginx (Splash nepieskaras globālajām konfigurācijām), un pēc tam uz pāris dienām pieteikties čaulā, lai apskatÄ«tu mysqltuner statistiku. Ak jā, un es nopirku maksas ImunifyAV no paplaÅ”inājumu kataloga, lai atbrÄ«votos no ievietotās ļaunprogrammatÅ«ras. Viņi atrada aptuveni 11 000 inficētu failu. NepatÄ«kamākais ir tas, ka statiskajos failos tika ievietoti apmulsināti koda fragmenti, un to manuāla tÄ«rīŔana bÅ«tu bijusi Ä«sta problēma. Vispirms izmēģināju ClamAV, bet izrādÄ«jās, ka tas nevar tikt galā ar Ŕādām lietām, kamēr ImunifyAV to varēja. Turklāt iztÄ«rÄ«tie faili paliek funkcionāli; ar ļaunprogrammatÅ«ru inficētais fragments tiek vienkārÅ”i izdzēsts.

Matemātika ir vienkārÅ”a: 50 ASV dolāri mēnesÄ« par VMware, 10 ASV dolāri par Plesk (patiesÄ«bā mazāk, jo mēs iegādājāmies pilnu gadu ar divu mēneÅ”u atlaidi) un 3 ASV dolāri par antivÄ«rusu. Vai arÄ« daudz naudas par laiku, ko sākotnēji bÅ«tu pavadÄ«jis serverÄ«, manuāli tÄ«rot Å”os nekārtÄ«bas. ÄŖpaÅ”nieks bija diezgan apmierināts ar Å”o vienoÅ”anos.

Mana pieredze ar Plesku
Tikmēr mēs atradām jaunu programmētāju. Vienojāmies par atbildÄ«bas sadalÄ«jumu, izveidojām apakÅ”domēnu testa versijai un ķērāmies pie darba. ViņŔ veidoja jaunu vietnes versiju Laravel vidē, bet es uzraudzÄ«ju fail2ban%).

Mana pieredze ar Plesku
Interesanti, ka ziņkārÄ«go cilvēku plÅ«sma nekad nebeidzas, un aizliegto adreÅ”u sarakstā vienmēr ir aptuveni simts adreÅ”u. Efekts ir interesants: jo Ä«paÅ”i, kad es parasti piesakos čaulā, sveiciena ekrānā parasti tiek parādÄ«ti aptuveni 20 000–30 000 neveiksmÄ«gu SSH pieteikÅ”anās mēģinājumu. Ar iespējotu fail2ban to ir aptuveni 70. IeguldÄ«tās pÅ«les: 0. Diemžēl bija neliels āķis. Pēc noklusējuma WAF (modsecurity) bija "daļēji iespējots": noteikÅ”anas režīmā. Tas ir, tas reÄ£istrēja aizdomÄ«gas aktivitātes žurnālā, bet neveica nekādas faktiskas darbÄ«bas. Un fail2ban bez izŔķirÄ«bas nolasÄ«ja visus žurnālus atbilstoÅ”i iespējotajiem jailiem un izdzēsa visu, kas pārvietojās. Tādējādi mēs aizliedzām pusi redakcijas personāla :D. Mums bija jāatspējo Å”is jails un jāiekļauj baltajā sarakstā nepiecieÅ”amās IP adreses uzticamÄ«bas labad. IeguldÄ«tās pÅ«les bija pāris peles klikŔķi un redaktoru apmācÄ«ba sniegt savas IP adreses.

Mana pieredze ar Plesku
Programmētājam uzreiz patika iespēja augÅ”upielādēt datubāzes tieÅ”i panelÄ« un ātra piekļuve phpMyAdmin.

Mana pieredze ar Plesku
Man patika žurnāli un dublējumkopijas. Žurnāli tiek rakstÄ«ti un mainÄ«ti automātiski pēc noklusējuma; dublējumkopijas ir ļoti viegli iestatÄ«t. Vislēnākajos laikos tiek izveidota pilna aptuveni 10 GB dublējumkopija, un pēc tam katru dienu nedēļas garumā tiek izveidota 200 MB inkrementāla dublējumkopija. AtjaunoÅ”ana ir detalizēta, lÄ«dz konkrētam failam vai datubāzei. Ja nepiecieÅ”ams atjaunot no inkrementālas dublējumkopijas, nav jāuztraucas par pilnu dublējumkopiju un pēc tam jāatjauno visa ķēde — Plesk to visu dara automātiski. Dublējumkopijas var augÅ”upielādēt jebkur: FTP, Dropbox, S3 Bucket, Google Drive utt.

Mana pieredze ar Plesku
G diena: Programmētājs beidzot pabeidza jauno dzinēju, mēs to ielādējām ražoÅ”anā, importējām vecos datus un apsēdāmies, lai izvēlētos mÅ«su nākotnes Maserati krāsu. Mēs joprojām izvēlamies.

Sākās pirmās problēmas. Jaunā vietne, kā jau paredzams, bija noslogotāka par veco, taču Ä«stā problēma bija tā, ka viņi cita starpā izmantoja Yandex.Zen, lai piesaistÄ«tu datplÅ«smu, kas savukārt piesaistÄ«ja milzÄ«gus apmeklētājus. Vietne avarēja pie mazāk nekā 150 vienlaicÄ«giem savienojumiem (es nerunāju par RPS, jo mēs to nemērÄ«jām). Viņi sāka bakstÄ«t pogas un pielāgot kloķīŔus php_fpm iestatÄ«jumu apgabalā:
 
Mana pieredze ar Plesku
Ups, tas jau satur 500 savienojumus. Kad es izmantoju savu kredītkarti reklāmas rīkiem, datplūsmas viļņi kļuva arvien lielāki. Nākamais pagrieziena punkts bija 1000 vienlaicīgi savienojumi. Šeit man bija jāuzlabo kods un jāpārbauda tā jauda. Splash nepalīdzēja, bet tas nebija tas, ko es gaidīju. Es iespējoju lēno vaicājumu žurnālu, pievienoju datubāzei indeksus, no koda noņēmu nevajadzīgos vaicājumus un vēlreiz pielāgoju MySQL konfigurāciju, sekojot mysqltuner ieteikumam.

Jauns izaicinājums – 2000 savienojumu. Tikko bija izlaista Plesk 17.8 versija, kas cita starpā pievienoja nginx keÅ”atmiņu. Mēs atjauninājām (pārsteidzoÅ”i viegli). Mēs to izmēģinājām. Tas darbojas! Un tad mēs saskārāmies ar Ä·ibeli: Yandex.Zen plÅ«sma pārstāja darboties. Vietne darbojas, bet plÅ«sma nedarbojas. PlÅ«sma nedarbojas, nav datplÅ«smas. Atmosfēra kļūst karstāka. Apstākļu spiediena un iztēles trÅ«kuma dēļ es nekavējoties mēģināju atrast nginx un atradu to, ko meklēju. Izrādās, ka kādā brÄ«dÄ« stulbais nginx keÅ”atmiņā saglabāja nejauÅ”u 500 kļūdu kā atbildi uz Yandex get feed.xml. Mēs to labojām, pievienojot izņēmumus keÅ”atmiņas iestatÄ«jumiem:

Mana pieredze ar Plesku
Ir skaidrs, ka Ä«paÅ”niekam vajag VAIRĀK, un viļņi lēnām pieaug. Pagaidām mēs tiekam galā, bet mēs jau laikus sākām eksperimentēt ar memcached, jo Laravel to atbalsta gandrÄ«z uzreiz. Mēs Ä«sti negribējām instalēt memcached manuāli tikai tāpēc, lai paspēlētos, tāpēc mēs instalējām Docker attēlu. TieÅ”i no informācijas paneļa.

Mana pieredze ar Plesku
Labi, es meloju, man vajadzēja ieiet korpusā un instalēt moduli, izmantojot pecl. TieÅ”i tā. instrukcijasPagaidām nav nekā, ko ziņot par caurlaidspējas pieaugumu; nav bijuÅ”i bÅ«tiski pieaugumi. Vietnes dzinējs ir savienots ar localhost:11211, statistika tiek rādÄ«ta, bet atmiņa tiek patērēta. Ja mums tas patiks, redzēsim, ko darÄ«t tālāk. Vai nu atstāsim to tādu, kāds tas ir, vai instalēsim "Ä«sto" tieÅ”i operētājsistēmā. Vai arÄ« mēģināsim Redis tādā paŔā veidā.

Tad man vajadzēja iestatīt e-pasta biļetenu. Nekādu releju, tikai SMTP autentifikācija. Es izveidoju e-pasta adresi, un mēs izmantojām tās datus, lai nosūtītu biļetenu, izmantojot PHP.

Mana pieredze ar Plesku
Nesen tika izlaista Plesk Obsidian (18.0), un mēs to atjauninājām bez bailēm, pamatojoties uz iepriekŔējo pieredzi. Viss noritēja ļoti gludi, nav nekā, par ko ziņot. PozitÄ«vi ir tas, ka saskarne ir ievērojami uzlabota, modernizēta un tagad dažās jomās lietotājam draudzÄ«gāka. Uzlabotā uzraudzÄ«ba Grafana ir lieliska funkcija.

Mana pieredze ar Plesku
Es to vēl neesmu detalizēti izpētÄ«jis, bet, piemēram, var iestatÄ«t e-pasta brÄ«dinājumus jebkuram parametram. ÄŖpaÅ”niekam, lol.

Runājot par saskarni, tā ir atsaucÄ«ga un ļoti labi darbojas tālrunÄ«. Sākumposmā, kamēr mēs centāmies atrast optimālos PHP iestatÄ«jumus un citas lietas, tas bija milzÄ«gs palÄ«gs. It Ä«paÅ”i, kad programmētājs, darba entuziasma lēkmē, strādā pie kaut kā pulksten 23:00, bet es esmu darba entuziasma lēkmē, dzeru Ŕņabi pirtÄ«, un man STEIDZAMI kaut kas ir jāmaina.

Mana pieredze ar Plesku
Ak, starp citu. Attēlā var redzēt, ka ir parādÄ«jies PHP Composer. Mēs vēl neesam ar to spēlējuÅ”ies, bet, piemēram, Laravel gadÄ«jumā tas var ietaupÄ«t pāris čaulas pieteikÅ”anās reižu un nedaudz laika atkarÄ«bu instalēŔanai. LÄ«dzÄ«ga sistēma pastāv arÄ« Node.JS un Ruby.

SSL ir vienkārÅ”s. Ja domēns tiek identificēts, kā paredzēts, Let's Encrypt tiek instalēts ar vienu klikŔķi un automātiski atjauninās gan paÅ”am domēnam, gan apakÅ”domēniem, gan pat e-pasta pakalpojumiem.

Mana pieredze ar Plesku
Pats Plesk paÅ”laik ir diezgan lietotājam draudzÄ«gs un stabils. Tas klusi atjaunina sevi un operētājsistēmu, izmanto maz resursu un darbojas nevainojami. Es pat neatceros nekādas problēmas, ko varētu uzskatÄ«t par skaidru produkta defektu. Protams, dažas problēmas bija, taču tās bija vai nu nepilnÄ«gas konfigurācijas, vai arÄ« raduŔās kaut kur pa ceļam, tāpēc tur Ä«sti nav ko pārmest. Kopumā mana pieredze ar Plesk ir bijusi patÄ«kama. Kas tam nav, un tas ir svarÄ«gi saprast, ir jebkāda veida klasterizācija. Nav LB, nav HA. Var mēģināt, bet ieguldÄ«jums bÅ«s tik liels, ka labāk jau no paÅ”a sākuma darÄ«t kaut ko citu.

Es domāju, ka mēs varam rezumēt. Situācijā, kad nav administratora vai ir tikai daži, kad mitināŔanas un tajā darbojoŔās(-o) vietnes(-u) izmaksas pārsniedz, teiksim, 100 USD, kad mēs nerunājam par milzÄ«gu koplietojamu serveri ar 1500 vietnēm, kad lēmumu pieņēmējam ir jāizdara izvēle starp nepilna laika administratora nolÄ«gÅ”anu, programmatÅ«ras iegādi un "pusslodzes" administratora nolÄ«gÅ”anu vai vispār nealgoÅ”anu — tas noteikti ir loÄ£iski. No attālināta administratora viedokļa tas ir tas pats. 10 USD mēnesÄ« ietaupa laiku un nodroÅ”ina elastÄ«bu darbam ļoti lielā mērogā.оLielāka summa. Piemēram, ja man stingri lÅ«gs uzņemties lÄ«dzÄ«gu projektu savā paspārnē, es pieprasīŔu tā pārvietoÅ”anu uz Plesk.

Mana pieredze ar Plesku

Avots: www.habr.com

Pievieno komentāru