Minu kogemus Pleskiga töötamisel

Soovin jagada oma muljeid selle kohta, kui vajalik vĂ”i mitte vajalik on juhtpaneel ĂŒhe serveriga kaubandusliku veebiprojekti jaoks, kui administraator on osalise tööajaga. Lugu sai alguse paar aastat tagasi, kui tuttavad palusid mul toetada nende Ă€rikaupa - uudiste veebisaiti - tehniliselt. Tuli natuke sĂŒveneda, mis on millel, jĂ€lgida, et kĂ”ik vajalikud andmed oleksid edastatud Ă”iges vormis ja mahus, ning strateegiliselt mĂ”elda, mida vĂ”iks parandada.

Minu kogemus Pleskiga töötamisel
Tehing Ônnestus, viiuldaja ei olnud enam vajalik. LÔpp. Tegelikult mitte.

Veebisait töötas kahe tuumaga 4 GB virtuaalmasinas Linode'il, mingi iidse Debian 5 peal, millel oli 400 pĂ€eva tööaega ja selline loetelu uuendamata paketidest. Veebi pool töötas isiklikul CMS-il, nginx, php 5.3 FPM, mysql oli seadistatud Percona. ÜhesĂ”naga, see töötas.

Samaan ajal, kui mina rÀÀkisin, otsis uus omanik programmeerijat projekti ootuste kohandamiseks. Ta leidis sellise. Programmeerija hindas liiklust ja mahtusid ning otsustas, et oskab optimeerida ja juhtida kulusid. Ta migratsioonis kogu veebisait 700-rublasel jagatud hostimisel tema tuttava IS****eri haldusesse. MĂ”ne pĂ€eva pĂ€rast tuli jĂ€lle kĂ”ne omanikult: „kĂ”ik on aeglane ja tundub, et meid on rikutud“. PĂŒĂŒdsin olukorda parandada juhtpaneeli kaudu, kuid pĂ€rast mĂ”ningaid viljatuid katseid PHP versiooni vĂ”i kĂ€itisja vahetamiseks fcgi-lt fpm-ile, andsin alla ja lĂ€ksin shelli. Seal leidsin lubatud silumisreĆŸiimi, mis jagas kogu internetis MySQL parooli, 777 mĂ”nede kaustade jaoks, mis sel hetkel purunesid ĂŒleslaetud pahavara tĂ”ttu ja sarnaseid jaburaid asju. Omanik mĂ”istis ja otsustas, et hostimisel, programmeerijal ja administraatoril, kes pilk oleks, kuidas asjad kulgevad - raha sÀÀstmine ei ole Ă”ige.

Meie sihtkoht on RuVDS. See on veidi lĂ€hemal kui Briti Linode ning kui peaks tekkima soov isikuandmeid ja kĂ”ike muud hoida, ei pea enam kuhugi mujale kolima. Et projekt oli plaanis laiendada, vĂ”tsime virtuaalmasina "kasvu jaoks": 4 tuuma, 8 GB mĂ€lu, 80 GB ketast. See ei tĂ€henda, et ma ei oska nginx konfiguratsioonide kallal ise töötada, lihtsalt ei olnud mul nii intiimseks projektiga tegelemiseks entusiasmi (vt ĂŒlalpool osalise tööajaga). SeetĂ”ttu – installisin Pleski (siin ma jĂ€tan installimise detailid vĂ€lja, sest neid on suuresti vĂ€he: kĂ€ivitasin installeri, seadistasin administraatori parooli, sisestasin vĂ”tme – kĂ”ik), tookord oli see versioon 17.0. PĂ”hiseaded töötavad kenasti vĂ€lja kastist, seal on fail2ban ja viimased saadaval olevad PHP, nginx versioonid. 

VÔib-olla tasub peatuda ja selgitada, miks just see. Kuna ma selliste asjadega harva tegelemine, ei olnud mul mingit erilist tööriistade komplekti ega malle igaks juhuks, oli selge, et on vaja mingit automatiseerimist pÔhiasjade jaoks, et esiteks kiiresti, teiseks turvaliselt ja kolmandaks, et kÔik parimad praktikad oleks keegi juba ellu viinud.

Nii, installisin. SÀÀstsin korralikult aega, saidi kĂ€ivitamine uuel serveril Ă”nnestus praktiliselt koheselt. JÀÀnud oli vaid muusikakliendi konfiguratsiooni hĂ€kkimise, andes talle poole mĂ€lu ja suurendades vahemĂ€lu pragusid, ning andes nginx-ile poole tuumadest (Plesk ei puutu globaalsetesse seadistustesse), ja paar pĂ€eva vaadata terminalis mysqltuner'i statistikat. Jah, ja ostsin tasulise ImunifyAV laienduste kataloogist, et vabaneda ĂŒles laaditud pahavara eest. Leidsin umbes 11 000 nakatunud faili. Inimlikult öeldes, obfikeeritud kooditĂŒkid voolasid staatikasse ja nende kĂ€sitsi koristamine oleks olnud tĂ”eliselt masendav. Alguses proovisin ClamAV-d, kuid nagu selgus, ei suuda see selliseid asju kĂ€sitleda, kuid ImunifyAV suutis. Eemaldatud failid jÀÀvad töötavaks, lihtsalt pahavara osa kustutatakse.

Aritmeetika on lihtne: 50$ kuus virtuaalmasina eest, 10$ Pleski eest (tegelikult vÀhem, kuna ostsime kohe aastaks kahe kuu soodustusega) ja 3$ viirusetÔrje eest. VÔi suure hulk rahakohvreid oma aja eest, mille ma alguses serveris veedaksin, need tallid kÀsitsi sorteerides. Selline olukord sobis omanikule tÀiesti.

Minu kogemus Pleskiga töötamisel
Samal ajal leiti uus programmeerija. Leppisime temaga kokku vastutuse jagamises, lÔime katseversiooni jaoks alamdomeeni ja töö algas. Ta arendas uut veebisaiti Laravelis, samal ajal kui mina jÀlgisin fail2bani%)

Minu kogemus Pleskiga töötamisel
Huvitav on see, et uudishimulike voog ei lakka ja keelatud aadresside nimekirjas on alati umbes sada aadressi. Efekt on huvitav: nimelt, kui ma tavaliselt shell'i sisenen, nĂ€en tervitustes umbes 20000–30000 ebaĂ”nnestunud SSH-ĂŒhenduse katset. Fail2ban'i sisse lĂŒlitamisega on neid umbes 70. Pingutuse panus: 0. Kahjuks ei möödunud see tĂ€ielikult ilma igasuguse tĂ”rva-kapita. Vaikimisi oli WAF (modsecurity) „poolikult sisse lĂŒlitatud”: avastamisreĆŸiimis. See tĂ€hendas, et see logis kahtlast tegevust, kuid ei teinud tegelikult midagi. Fail2ban luges aga erinevatelt logidelt, vastavalt lubatud jails'idele, ja blokeeris kĂ”ik, mis liikuma hakkas. Nii olime blokeerinud poole vĂ€ljaande toimetusest :D. Olime sunnitud selle jaili vĂ€lja lĂŒlitama ja vajalikud IP-aadressid usaldusvÀÀrsuse tagamiseks valge nimekirja lisama. Pingutus: kaks korda hiirega klikkida ja Ă”petada toimetajatele oma IP-aadressi ĂŒtlema.

Minu kogemus Pleskiga töötamisel
Mis programmeerijale kohe meeldis, oli vÔimalus laadida andmebaase otse paneelis ja kiire juurdepÀÀs phpMyAdminile.

Minu kogemus Pleskiga töötamisel
Mis mulle meeldis, olid logid ja varukoopiad. Logid kirjutatakse ja rotatsioon toimib automaatselt; varukoopia seadistamine on vÀga lihtne. KÔige vaiksemal ajal tehakse tÀielik varukoopia, umbes 10 GB, ja seejÀrel iga pÀev inkrementaalne, umbes 200 MB nÀdalas. Taastamine on granuleeritud, kuni konkreetse faili vÔi andmebaasini. Kui on vaja taastada inkrementaalsest varukoopiest, siis ei pea kÔigepealt tÀies mahus ja kogu ahela taastamisse vaeva nÀgema, Plesk teeb kÔik ise. Varukoopiate laadimine on vÔimalik igale poole: FTP-le, Dropboxi, S3 bucketisse, Google Drive'i jne.

Minu kogemus Pleskiga töötamisel
Hommik: programmeerija lÔpetas lÔpuks uue mootori, laadisime selle tootmisse, importisime vanad andmed ja hakkasime valima oma tulevase Maserati vÀrvi. Oleme endiselt valimas.

Algasid esimesed probleemid. Uus veebisait oli oodatust raskem, kuid tegelik probleem oli see, et liikluse meelitamiseks kasutasime muu hulgas Yandex.Zeni, mis tĂ”i kĂŒlastajaid suurtes kogustes. Veebisait langes kokku 150 samaaegse ĂŒhenduse korral (ma ei rÀÀgi RPS-ist, kuna me ei mÔÔtnud). Hakkasime nuppe vajutama ja reguleerima php_fpm seadeid:
 
Minu kogemus Pleskiga töötamisel
Oop, already holds 500 connections. As we added the credit card to the advertising funds, the traffic waves started to grow. The next milestone is 1000 simultaneous connections. Here we had to refine the code and look deep into the muscle. Plesk didn't help with this, but we didn't really expect that. We enabled the slow queries log, added indexes to the database, removed unnecessary queries from the code, and tidied up the MySQL config again following mysqltuner's advice.

The new challenge is 2000 connections. Just in time for the release of Plesk 17.8, which, among other things, integrated nginx caching. We updated (surprisingly easy). Let's try. It's working! But then we hit a snag; the Yandex Zen feed stopped working. The site works, but the feed doesn't. No feed means no traffic. The situation is heating up. Under pressure and lacking creativity, I immediately started stracing nginx and found what was wrong. It turned out that at some point the silly nginx cached an incoming 500 error as a response to the Yandex get feed.xml. We fixed this by adding exceptions to the cache settings:

Minu kogemus Pleskiga töötamisel
It's clear that the owner needs MORE, the waves are slowly increasing. We're managing for now, but we've started experimenting with memcached in advance, as Laravel supports it almost out of the box. Installing memcached manually just to 'play around' wasn't appealing, so we set up a Docker image directly from the panel.

Minu kogemus Pleskiga töötamisel
Well, okay, I'm lying, I had to go into the shell and install the module via pecl. Right from juhendis. I can't say much about the increase in throughput yet; there haven't been any significant surges. The site engine connected to localhost:11211, stats are showing, memory is being consumed. If it's good, we'll see what to do next. Either we'll leave it as is, or we'll set up a 'real' one directly in the OS. Or we'll try redis the same way.

Then we needed to add email sending functionality. No relays, just SMTP authentication. Created an email address, and using its credentials through PHP, we set up the mailing.

Minu kogemus Pleskiga töötamisel
Not long ago, Plesk Obsidian (18.0) was released, and we updated without fear based on past experience. Everything went very smoothly, even nothing to report. On the bright side — the interface quality has significantly improved, it's modernized and become more convenient in some places. The Advanced Monitoring feature in Grafana is really nice.

Minu kogemus Pleskiga töötamisel
I haven't explored it in detail yet, but you can set up alerts for any parameter to your email, for the owner, lol.

Kuna ma rÀÀgin liidesest, on see tundlik ja töötab tĂ”eliselt hĂ€sti telefonis. Varajastes etappides, kui proovisime leida optimaalseid PHP seadeid ja muud, aitas see meid palju. Ja eriti siis, kui programmija oma tööentusiastlikus hoogus midagi kell 23 teeb, samas kui mina oma tööentusiastlikus hoogus joon viina saunas ja on KIIRELT vaja midagi ĂŒmber lĂŒlitada.

Minu kogemus Pleskiga töötamisel
Ah, muide. Pildilt on nĂ€ha, et PHP Composer on nĂŒĂŒd saadaval. Me ei ole sellega veel mĂ€nginud, kuid nĂ€iteks Laravel'i jaoks vĂ”ib see sÀÀsta mĂ”ned sisselogimised shell'i ja aega sĂ”ltuvuste installimiseks. Taoline sĂŒsteem on olemas ka Node.JS ja Ruby jaoks.

SSL-iga on kĂ”ik lihtne. Kui domeen resolvib Ă”igesse kohta, saab Let’s Encrypt ĂŒhe klĂ”psuga ja see uuendab end edaspidi ise, nii domeeni kui ka subdomeene ning isegi e-posti teenuseid.

Minu kogemus Pleskiga töötamisel
Plesk ise on tarkvarana praegu ĂŒsna meeldiv ja stabiilne. See uuendab end ja operatsioonisĂŒsteemi vaikselt, tarbib vĂ€he ressursse ja töötab sujuvalt. Ma ei mĂ€leta, et oleks kuskil midagi vipatunud, mis oleks olnud toote ilmne defekt. Probleeme on muidugi olnud, kuid need on kas konfiguratsiooni ebakindluse vĂ”i kuskil ÀÀrepealsete probleemide tĂ”ttu, seega pole millegi kallal eriti nurisemiseks. Üldiselt on mul Pleskiga töötamisest head muljed. Kuid tuleb mĂ”ista, et selles pole mingit (mitte mingit) klasterdamist. Ei LB, ei HA. Proovida vĂ”ib, kuid selleks kuluv töö maht on nii suur, et on parem alustada midagi muud.

MĂ”tleks, et saame kokkuvĂ”tte teha. Kui administraatorit pole, vĂ”i on see minimaalne, kui hostimise ja sellel töötava veebisaidi(d) hind ĂŒletab, noh, ĂŒtleme 100 eurot, kui jutt ei ole mĂ”ttetust ĂŒhisserverist, kus on 1500 saiti, kui otsustaja ees on valik palgata administraator poole kohaga vĂ”i osta tarkvara ja palgata administraator "poolesuhkrus", vĂ”i mitte ĂŒldse - sel on kindlasti mĂ”te. Kaugadministraatori vaatenurgast on sama asi. 10 dollarit kuus, kuid sÀÀstab aega ja annab paindlikkust töö tegemiseks suuremal mÀÀral. Kui nĂ€iteks palutakse mul vĂ”tta sarnane projekt alla oma tiiva alla, siis nĂ”uan Pleskisse ĂŒleviimist.ilotkaSoovin jagada mĂ”ningaid muljeid selle kohta, kui vajalik vĂ”i mitte on selline asi nagu juhtpaneel Ă€riĂŒhe-serveri veebiprojekti jaoks, olles samas vĂ€ga osalise ajaga administraator.

Minu kogemus Pleskiga töötamisel

Allikas: habr.com

Osta usaldusvÀÀrne hostimine veebilehtede jaoks DDoS-i kaitsega, VPS VDS serverid đŸ”„ Osta usaldusvÀÀrne hostimine veebilehtede jaoks DDoS-i kaitsega, VPS VDS serverid | ProHoster