Mans pieredzes stāsts ar Plesk

Vēlos dalīties ar dažām domām par to, cik nepieciešama vai nevajadzīga ir vadības panelis komerciālajam vienas servera tīmekļa projektam, ja ir tikai daļējs administrators. Stāsts sākās pirms diviem gadiem, kad pazīstami cilvēki lūdza mani tehniski pavadīt uzņēmuma — ziņu vietnes — iegādi. Bija jāiepazīstas ar to, kas uz kā darbojas, jāpārliecinās, ka visi nepieciešamie rādītāji tiek nodoti pienācīgā veidā un apjomā, un stratēģiski jāizdomā, ko var uzlabot.

Mans pieredzes stāsts ar Plesk
Darījums notika, vijolnieks kļuva nevajadzīgs. Beigas. Patiesībā nē.

Mājaslapa darbojās uz divkodolu 4 GB VM Linode, uz kāda novecojuša Debian5 ar 400 dienu darbības laiku un šādu neaktualizētu pakotņu sarakstu. Tīmekļa daļa uz pašrakstītas CMS, nginx, php5.3 FPM, mysql optimizēts Percona. Principā, viss darbojās.

Līdztekus sarunām ar mani jaunais īpašnieks meklēja programmētāju, lai pielāgotu projektu cerībām. Atrada. Programmētājs novērtēja trafiku un apjomus, un nolēma, ka spēj optimizēt un vadīt izmaksas. Viņš migrēja visu mājaslapu uz 700 rubļu dalīto hostingu, ko pārvaldīja viņam ierastais IS****er. Pāris dienu laikā atkal zvanīja īpašnieks: "viss apstājas un šķiet, ka mūs ir sabojājuši". Es mēģināju labot situāciju caur paneli, bet pēc kāda laika bezjēdzīgām mēģinājumiem mainīt PHP versiju vai pārveidot handlers no fcgi uz fpm, padevos un devos uz shell. Tur es atradu ieslēgtu debug, kas izgaismoja visām interneta vārtiem paroli no mysql, 777 dažām mapēm, kuras brīžiem plīsa no iekļautās ļaunprogrammatūras un līdzīgām blēņām. Īpašnieks apzinājās un nolēma, ka taupīt uz hostinga, programmētāja un administratora, kurš skatītos ar vienu aci, kā situācija attīstās — ir nepareizi.

Mēs dodamies uz RuVDS. Nedaudz tuvāk nekā britu Linode, un, ja pēkšņi vēlēsies uzglabāt personiskos datus un visu pārējo, vairs nevajadzēs nekur pārvākties. Tā kā projekts tika plānots paplašināt, tika iegādāta VM "uz izaugsmi": 4 kodoli, 8 GB RAM, 80 GB diska. Ne tā, ka es nemāku strādāt ar nginx konfigurācijām pats, bet vienkārši man nebija entuziasma tik intīmi nodarboties ar šo projektu (skat. iepriekš par daļēju darba laiku). Tātad — uzstādīju Plesk (šeit es izlaidīšu uzstādīšanas detaļas, jo to faktiski nav: palaidu instalētāju, uzstādīju administratora paroli, ievadīju atslēgu — viss), tajā laikā tas bija 17.0. Pamatnostādnes strādā samērā labi, iekļauts fail2ban un jaunākās pieejamās PHP, nginx versijas. 

Iespējams, vajag apstāties un izskaidrot, kāpēc tieši viņu. Tā kā es ar tādām lietām nodarbojos reti, un man nav nekādu īpašu rīku vai sagatavoju komplektu katram gadījumam, bija skaidrs, ka nepieciešama kāda automatizācija pamata lietām, lai, pirmkārt, ātri, otrkārt, droši, un treškārt, lai kāds jau būtu ieviesis visas labākās prakses.

Tātad, es to uzstādīju. Laiks tika ievērojami ietaupīts, vietnes pārstartēšana jaunajā serverī notika praktiski nekavējoties. Atlika tikai pielāgot MySQL konfigurāciju, piešķirot tam pusi atmiņas un palielinot buferu skaitu, un atdot nginx puse kodolu (Plesk nemaina globālās konfigurācijas), un pāris dienu laikā ieiet terminālī, lai paskatītos uz mysqltuner statistiku. Jā, un iegādājos maksas ImunifyAV no papildinājumu kataloga, lai atbrīvotos no iepludinātās ļaunprogrammatūras. Atradās apmēram 11000 inficētu failu. Nodarījuma briesmas bija tajā, ka statiskajos failos iekļuva obfuskēti koda fragmenti, un tīrīt to ar roku būtu pilnīgi nomācoši. Sākumā mēģināju ClamAV, bet, kā izrādījās, tas šādas lietas neņem, bet ImunifyAV spēja. Turklāt izārstētie faili paliek funkcionāli, vienkārši tiek dzēsta ļaunprogrammatūras daļa.

Matemātika ir vienkārša: 50$ mēnesī par VM, 10$ par Plesk (patiesībā mazāk, jo nopirkām uz gadu ar divu mēnešu atlaidi) un 3$ par antivīrusu. Vai arī daudz naudas par manu laiku, ko pavadītu serverī, sākotnējā posmā rokot šīs kūts manuāli. Šāda kārtība īpašniekam pilnībā derēja.

Mans pieredzes stāsts ar Plesk
Tikmēr mēs atradām jaunu programmētāju. Vienojāmies ar viņu par atbildības sadalījumu, izveidojām apakšdomēnu testēšanas versijai, un darbs sākās. Viņš veidoja jauno mājaslapas versiju Laravel, bet es skatījos uz fail2ban%).

Mans pieredzes stāsts ar Plesk
Interesanti, ka ziņkārīgo plūsma nepārtraucas, un melnajā sarakstā vienmēr ir ap simts adresēm. Efekts ir interesants: piemēram, parasti, ja es ieeju šellā, pie sveiciena redzu ap 20000–30000 neveiksmīgu SSH piekļuves mēģinājumu. Ar ieslēgtu fail2ban ap 70. Ieguldījuma pūles: 0. Diemžēl neiztika bez nelielas rūgtuma. Pēc noklusējuma bija "pustiekams" WAF (modsecurity): atklāšanas režīmā. Tas rakstīja aizdomīgu aktivitāti žurnālā, bet faktiski nekādas darbības neveica. Un fail2ban bez izšķirības lasīja visus žurnālus, saskaņā ar ieslēgtajiem jails, un bloķēja visu, kas kustējās. Tādējādi mēs nobloķējām pusi redakcijas :D. Bija jāizslēdz šis jail, un nepieciešamās IP adreses uzticamības dēļ jāizvirza balto sarakstā. Ieguldījuma pūles: divreiz ar peli pamānīt un iemācīt redaktoriem pateikt savu IP adresi.

Mans pieredzes stāsts ar Plesk
Kas programmētājam patika uzreiz — iespēja augšupielādēt datu bāzes tieši panelī un ātra piekļuve phpMyAdmin.

Mans pieredzes stāsts ar Plesk
Kas man patika — žurnāli un dublējumkopijas. Žurnāli tiek ierakstīti un rotēti automātiski; dublējumkopijas ir ļoti viegli iestatāmas. Vājākajos laikos tiek izveidota pilna dublējumkopija, apmēram 10 gigabaiti, un tad katru dienu pa inkrementālai, apmēram 200 megabaiti, nedēļas laikā. Atjaunošana ir granularitāti līdz konkrētam failam vai datu bāzei. Ja ir nepieciešams atjaunot no inkrementālā, tad nav jānokļūst pirmajiem ar pilnu un visā ķēdē atjaunošanu, Plesk visu dara automātiski. Dublējumkopijas var augšupielādēt kur vien vēlies: uz FTP, Dropbox, S3 bucket, Google Drive un citiem.

Mans pieredzes stāsts ar Plesk
Diena D: programmētājs beidzot pabeidza jauno dzinēju, mēs to augšupielādējām ražošanā, importējām vecos datus un sākām izvēlēties krāsu saviem nākotnes Maserati. Vēl joprojām izvēlamies.

Sākās pirmās problēmas. Jaunā mājaslapa bija gaidāmi smagāka par veco, bet reālā problēma bija tā, ka trafika piesaistei izmantojām arī Yandex.Zen, kas piegādāja apmeklētājus masveidā. Mājaslapa sabruka pie 150 vienlaicīgām pieslēgšanām (es nerunāju par RPS, jo neizmērījām). Sākām spaidīt pogas un griezt rokturus php_fpm iestatījumu jomā.
 
Mans pieredzes stāsts ar Plesk
Oho, jau tur 500 savienojumu. Pašreiz pievienojot kredītkarti reklāmas līdzekļiem, trafika viļņi kļūst lielāki. Nākamais mērķis - 1000 vienlaicīgu savienojumu. Šeit nācās pārstrādāt kodu un paskatīties uz muskuļu dvēseli. Plesk šajā ziņā nepalīdzēja, bet to īpaši arī negaidījām. Ieslēdzām lēno vaicājumu žurnālu, pievienojām indeksus datubāzei, iznīcinājām liekos vaicājumus kodā, vēlreiz sakārtojām MySQL konfigurāciju pēc mysqltuner ieteikumiem.

Jauns izaicinājums – 2000 savienojumu. Tieši iznāca Plesk 17.8 versija, kurā, starp citu, pievienoja nginx kešēšanu. Atjauninājām (pārsteidzoši viegli). Mēģinām. Strādā! Un tad uzreiz sākās problēmas – pārstāja darboties Yandex.zen plūsma. Lapa strādā, bet plūsma nestrādā. Ja nav plūsmas, nav arī trafika. Atmosfēra saasinās. Spiediena apstākļos un iztēles trūkuma dēļ sāku tūlīt strace-ot nginx un atradu, ko meklēju. Izrādās, kādā brīdī stulbais nginx kešējis ievērojamo 500. kļūdu kā atbildi uz Yandex get feed.xml. Saviem spēkiem novēršami, pievienojām izņēmumus keša iestatījumiem:

Mans pieredzes stāsts ar Plesk
Saprotams, ka īpašniekam vajag VĒL, viļņi pakāpeniski pieaug. Pašlaik tiekam galā, bet iepriekš esam sākuši eksperimentēt ar memcached, jo Laravel to atbalsta gandrīz no sākuma. Nē, nebija vēlēšanās manuāli uzstādīt memcached tikai „spēlēties”, tāpēc izmantojām Docker attēlu. Tiesi no paneļa.

Mans pieredzes stāsts ar Plesk
Nu, labi, aizmirsu, nācās ieiet shell un uzstādīt moduli caur pecl. Tiesi pa norādījumā. Par caurlaidības pieaugumu pagaidām nav ko teikt, pietiekami lieli uzplūdi nebija. Vietnes dzinējs pieslēdzās localhost:11211, statistika tiek rādīta, atmiņa tiek patērēta. Ja patiks, paskatīsimies, ko darīt tālāk. Vai nu atstāsim tā, kā ir, vai uzstādīsim „īsteno” tieši OS. Vai arī ar šo pašu metodi izmēģināsim redis.

Vēlāk vajadzēja pievienot pasta izsūtīšanu. Tad nekādu relay, tikai smtp autentifikācija. Izveidoju pasta adresi, caur tās rekvizītiem veicam izsūtīšanu ar PHP.

Mans pieredzes stāsts ar Plesk
Ne tik sen iznāca Plesk Obsidian (18.0), atjauninājām, balstoties uz iepriekšējo pieredzi bez bailēm. Viss notika ļoti gludi, pat nav par ko stāstīt. No patīkamā – interfeiss ir ievērojami uzlabojies, modernizējies un dažās vietās kļuvis ērtāks. Aizraujoša lieta ir Advanced Monitoring uz Grafana.

Mans pieredzes stāsts ar Plesk
Pagājām ilgāk ar to, bet, piemēram, var konfigurēt brīdinājumus par jebkuru parametru uz e-pastu. Īpašniekam, lol.

Runājot par saskarni, tā ir pielāgojama un patiešām labi darbojas telefonā. Agrīnajos posmos, kamēr mēs centāmies atrast optimālus PHP un citu iestatījumus, tas ļoti palīdzēja. Un jo īpaši tad, kad programmētājs strādā, piemēram, plkst. 23, kamēr es savā darba entuziasmā dzeru degvīnu pirtī un STEIDZAMI ir jāmaina kaut kas.

Mans pieredzes stāsts ar Plesk
Ak, jā, attēlā redzams, ka parādījies PHP Composer. Pagājuši no tā nedarbojāmies, bet, piemēram, Laravel tas var ietaupīt pāris pieslēgšanās shell un kādu laiku atkarību instalēšanai. Līdzīga sistēma ir arī Node.JS un Ruby.

Ar SSL viss ir vienkārši. Ja domēns pareizi rezolvējas, Let’s Encrypt tiek izveidots ar vienu klikšķi un pēc tam pats atjaunojas gan uz paša domēna, gan apakšdomēniem, un pat e-pasta pakalpojumiem.

Mans pieredzes stāsts ar Plesk
Pats Plesk šobrīd ir diezgan patīkams un stabils. Tas patiess atjaunojas un OS tiek atjaunota klusi, tas patērē maz resursu un darbojas nevainojami. Pat neatceros, ka kaut kur būtu uzkāpis uz kāda būtiska defekta. Protams, problēmas bija, bet tās bija vai nu konfigurācijas nepilnību, vai kaut kur saskares rezultāts, tāpēc īpaši nav par ko piekasīties. Kopumā pieredze ar Plesk ir patīkama. Taču jāapzinās, ka tajā nav nekādas (jebkādas) klasterizācijas. Ne LB, ne HA. Jūs varat mēģināt, bet ieguldīto pūļu būs tik daudz, ka labāk sākotnēji darīt kaut ko savādāk.

Domāju, ka varam izdarīt secinājumus. Gadījumam, kad administratora nav vai tas ir ļoti maz, kad hostinga cena un vietnes (vietņu) uzturēšana pārsniedz, teiksim, 100 eiro, kad runa nav par zemo izpildi ar 1500 vietnēm uz servera, kad lēmumu pieņēmējam ir izvēle nolīgt administratoru uz pusslodzi vai iegādāties programmatūru un ieviest administratoru uz "pusi algas", vai vispār to neieviest - noteikti ir jēga. No attālināta administrators viedokļa - tas pats. 10 dolāri mēnesī, bet tas taupa laiku un palielina elastību darbā par ļoti lielu summu. Ja, piemēram, mani ļoti lūgs ņemt līdzīgu projektu zem sava spārna, es uzstādīšu uz pārvietošanos uz Plesk.oEfektivitātes noslēpums ir kvalitatīvs kods, nevis efektīvs vadītājs.

Mans pieredzes stāsts ar Plesk

Avots: habr.com

Iegādājieties uzticamu tīmekļa hostingu ar DDoS aizsardzību, VPS VDS serveriem 🔥 Iegādājieties uzticamu tīmekļa hostingu ar DDoS aizsardzību, VPS VDS serveriem | ProHoster