Moje izkušnje z Plesk

Želim podijeliti neka iskustva o potrebi ili beskorisnosti nečega poput kontrolne ploče za komercijalni jednoglasni web projekt uz vrlo povremenog administratora. Priča je započela prije nekoliko godina kada su me poznanici zamolili da pomognem u kupnji biznisa — novinskog sajta — s tehničke strane. Trebalo je malo ući u to što na čemu radi, osigurati da svi potrebni podaci budu preneseni u odgovarajućem obliku i obujmu, te strateški procijeniti što se može poboljšati.

Moje izkušnje z Plesk
Posao je zaključen, violinist više nije bio potreban. Kraj. U stvarnosti, nije.

Sajt je radio na dvokcoresnoj 4 GB VM na Linode, na nekakvom zastarjelom Debian5 s vremenom aktivnosti od 400 dana i ovako dugim popisom ne ažuriranih paketa. Web dio na samoprojektiranoj CMS-u, nginx, php5.3 FPM, mysql podešen Percona. U principu, radilo je.

Paralelno sa razgovorom sa mnom, novi vlasnik je tražio programera kako bi projekt doveli u skladu s očekivanjima. Našao je. Programer je procijenio promet i volumene i odlučio je da zna optimizirati i upravljati troškovima. Migrirao je cijeli sajt na 700-rubljan shared hosting pod upravljanjem njemu poznatog IS****era. Nakon nekoliko dana, ponovno poziv od vlasnika: „sve se usporava i čini se da smo napadnuti“. Pokušao sam riješiti situaciju preko ploče, ali nakon nekog vremena bezuspješnih pokušaja da promijenim verziju PHP-a ili hendlere s fcgi na fpm, odustao sam i otišao u shell. Tamo sam našao uključen debag, koji je svijetlio internet s lozinkom za mysql, 777 na neke mape, koje su do tog trenutka bile pune malware-a i sličnih užasa. Vlasnik je shvatio i odlučio da štednja na hostingu, programeru i administratoru, koji bi pomno pratio kako teku stvari, nije ispravno.

Gremo na RuVDS. Mal bliže kot britanska Linode in če se kdaj pojavi potreba po shranjevanju osebnih podatkov in vseh teh stvareh, ni več potrebno seliti nikamor. Ker je bilo načrtovano širitev projekta, smo vzeli VM "za rast": 4 jedra, 8 GB pomnilnika, 80 GB diska. Ni, da ne znam delati z nginx konfiguracijami ročno, preprosto nisem imel navdušenja za tako intimno ukvarjanje s tem projektom (glej zgoraj o delu s skrajšanim delovnim časom). Zato sem namestil Plesk (tukaj bom izpustil podrobnosti o namestitvi, ker jih v bistvu ni: zagnal sem namestitveni program, postavil geslo za administratorja, vnesel ključ – to je to), takrat je bila to 17.0. Osnovne nastavitve kar dobro delujejo iz škatle, obstaja fail2ban in zadnje na voljo različice PHP, nginx. 

Morda je vredno ustaviti in razložiti, zakaj. Ker se s takšnimi stvarmi ukvarjam redko in nimam nobenega posebnega orodja ter niza predlog v vsakem primeru, je bilo jasno, da potrebujem določeno avtomatizacijo osnovnih stvari, da bi, prvič, hitro, drugič, varno, in tretjič, da so vsi najboljši postopki nekdo že uvedel.

Torej, namestil sem. Prihranil sem precej časa, ponoven zagon spletne strani na novem strežniku je bil praktično trenutni. Odpovedalo se je le še konfiguraciji MySQL, da sem mu dal polovico pomnilnika in povečal število buffer poolov, ter predal nginx polovico jeder (Plesk ne spreminja globalnih konfiguracij), in v dveh dneh sem pogledal v shell, da vidim statistiko mysqltuner. Ja, in kupil sem plačani ImunifyAV iz kataloga razširitev, da se znebim naložene zlonamerne programske opreme. Našlo se je okoli 11000 okuženih datotek. Prava groza je bila v tem, da so se v statične datoteke vlivali obfucirani kosi kode, in čiščenje tega ročno bi bilo povsem obupno. Sprva sem poskusil ClamAV, vendar je ugotovil, da takšnih stvari ne obravnava, medtem ko je ImunifyAV lahko. Pri tem so ozdravljene datoteke ostale v delovnem stanju, preprosto je bil odstranjen kos z zlonamerno programsko opremo.

Aritmetika je preprosta: 50 $ na mesec za VM, 10 $ za Plesk (v resnici manj, ker smo kupili takoj za leto s popustom dveh mesecev) in 3 $ za antivirus. Ali pa veliko kovčkov denarja za moj čas, ki bi ga preživel na strežniku na začetku in se ročno ukvarjal s temi hlevi. Lastnika takšen razpored povsem ustreza.

Moje izkušnje z Plesk
U međuvremenu, našli smo novog programera. Dogovorili smo se o raspodeli odgovornosti, napravili poddomen za testnu verziju i rad je počeo. On je razvijao novu verziju sajta na Laravel-u, dok sam ja pratio fail2ban%).

Moje izkušnje z Plesk
Zanimljivo je da se tok radoznalih ne prekida i da u spisku zabranjenih uvek ima oko sto adresa. Efekat je zanimljiv: konkretno, obično kada uđem u shell, na pozdravu vidim oko 20,000-30,000 neuspešnih pokušaja pristupa putem SSH. Sa uključenim fail2ban-om imate oko 70. Uloženih napora: 0. Nažalost, nije bilo ni sitnog problema. Po defaultu je bio 'poluuključen' WAF (modsecurity): u režimu otkrivanja. To jest, beležio je sumnjivu aktivnost u log, ali zapravo nije preduzimao nikakve akcije. A fail2ban je bez razlike čitao sve logove, prema uključenim jail-ovima, i banovao sve što se pomeralo. Tako smo zabranili polovinu redakcije :D. Morali smo da isključimo taj jail, a potrebne IP adrese stavili na belu listu za veću sigurnost. Uloženo truda: dva puta kliknuti mišem i naučiti urednike da kažu svoju IP adresu.

Moje izkušnje z Plesk
Što se programeru odmah svidelo — mogućnost učitavanja baza podataka direktno iz panela i brz pristup phpMyAdmin-u.

Moje izkušnje z Plesk
Što se meni dopalo — logovi i bekapovi. Logovi se pišu i rotiraju sami iz kutije; bekapovi se veoma jednostavno podešavaju. U najspokojnijem vremenu pravi se potpuni bekap, negde oko 10 gigabajta, a zatim svakog dana po inkrementalni, po 200 megabajta, tokom nedelje. Obnova je granularna, do konkretnog fajla ili baze podataka. Ako je potrebno da se obnovi iz inkrementalnog, ne morate prvo raditi sa potpunim i restaurirati celu sekvencu, Plesk sve radi sam. Bekapove možete učitavati bilo gde: na ftp, dropbox, s3 bucket, google drive i još mnogo toga.

Moje izkušnje z Plesk
Dan D: programer je konačno završio novi motor, stavili smo ga u produkciju, importovali stare podatke i počeli birati boju svojih budućih Mazeratija. I dalje biramo.

Počeli su prvi problemi. Novi sajt je očekivano bio teži od starog, ali pravi problem je bio u tome što smo za privlačenje saobraćaja, između ostalog, koristili Yandex.Zen, koji je gurao posetioce u velikim grupama. Sajt se gušio pri 150 simultanih konekcija (ne govorim o RPS-u jer to nismo merili). Počeli smo da pritisnemo dugmadi i podešavamo podešavanja php_fpm:
 
Moje izkušnje z Plesk
О, уже держит 500 соединений. С каждым добавлением кредитной карты к средствам продвижения объемы трафика росли. Следующий рубеж — 1000 одновременных подключений. Здесь пришлось доработать код и углубиться в метрики производительности. Plesk в этом не особо помог, но этого и не ожидали. Включили журнал медленных запросов, добавили индексы в базу данных, убрали лишние запросы из кода и еще раз оптимизировали конфигурацию MySQL по советам MySQLTuner.

Новый вызов — 2000 соединений. Как раз вышла версия Plesk 17.8, в которой добавили кеширование Nginx. Обновились (на удивление легко). Пробуем. Работает! Но тут же возникла проблема: перестал работать фид Яндекс.дзена. Сайт функционирует, но фид не работает. Нет фида — нет трафика. Напряжение растет. Под давлением обстоятельств начал анализировать Nginx с помощью strace и выяснил, что произошло. Оказалось, что на каком-то этапе Nginx закэшировал ошибку 500 как ответ на запрос Яндекса feed.xml. Исправили, добавив исключения в настройки кеша:

Moje izkušnje z Plesk
Очевидно, что владельцу нужно больше, объемы потихоньку растут. Пока справляемся, но заранее начали экспериментировать с memcached, благо Laravel поддерживает его почти по умолчанию. Устанавливать memcached вручную для «поиграться» не очень хотелось, поэтому поставили образ Docker. Прямо из панели.

Moje izkušnje z Plesk
Ну ладно, признаюсь, пришлось зайти в терминал и установить модуль через pecl. Прямо по navodilih. Пока не могу сказать о приросте пропускной способности, значительных нагрузок не наблюдалось. Движок сайта подключился к localhost:11211, статистика отображается, память используется. Если всё понравится, посмотрим, что делать дальше. Либо так и оставим, либо установим «настоящий» прямо на ОС. Либо попробуем redis тем же способом.

Затем понадобилось организовать почтовую рассылку. Никаких релей, только SMTP-аутентификация. Создал почтовый адрес, через его реквизиты делаем рассылку на PHP.

Moje izkušnje z Plesk
Недавно вышел Plesk Obsidian (18.0), обновились, не испытав страха благодаря предыдущему опыту. Все прошло очень гладко, даже рассказать не о чем. Из приятного — интерфейс значительно улучшился и стал более современным и удобным в некоторых местах. Интересная функция — Advanced Monitoring на Grafana.

Moje izkušnje z Plesk
Пока подробно с ней не разбирался, но можно, например, настраивать алерты по любым параметрам на почту. Владельцу, ух!

Ko sem že omenil vmesnik, je prilagodljiv in res dobro deluje na telefonih. V zgodnjih fazah, medtem ko smo poskušali najti optimalne nastavitve PHP in druge, nam je to zelo pomagalo. Še posebej, ko programer v napadu delovne vneme kaj dela ob 23. uri, jaz pa v napadu delovne vneme pijem vodka v savni in NUJNO potrebujem, da se nekaj preklopi.

Moje izkušnje z Plesk
O, mimogrede. Na sliki je prikazan PHP Composer. Še nismo igrali z njim, a recimo, za Laravel lahko prihrani nekaj prijav v terminal in nekaj časa pri namestitvi odvisnosti. Tak sistem obstaja tudi za Node.JS in Ruby.

SSL je preprost. Če se domena pravilno rešuje, Let’s Encrypt lahko naredimo z enim klikom in se nato samodejno posodablja, tako za domeno kot za poddomene in celo za e-poštne storitve.

Moje izkušnje z Plesk
Sama Plesk programska oprema v trenutku je dokaj prijetna in stabilna. Samo se posodablja tiho, porabi malo virov in deluje brezhibno. Sploh se ne spomnim, da bi se dogajalo kaj, kar bi lahko bilo očitna napaka proizvoda. Seveda so bile težave, a so bile bodisi posledica nepopolne konfiguracije bodisi pri prehodih, tako da ni veliko za zameriti. Splošne izkušnje z delom s Pleskom so prijetne. Kar mu manjka, in to je treba razumeti, je kakršna koli (kakršna koli) klasterizacija. Ne LB, ne HA. Poskusiti je možno, a vložena prizadevanja bodo tako velika, da se je bolje sprva lotiti nečesa drugega.

Menim, da lahko povzamem. Za primere, ko ni administratorja ali ko jih je malo, ko cena gostovanja in obratovanja spletne strani(e) presega, recimo, 100 u.e., ko ne gre za slab sharing s 1500 spletnimi stranmi na strežniku, ko se od tistega, ki sprejema odločitev, pričakuje izbira, ali najeti administratorja za polovično zaposlitev, ali kupiti programsko opremo in najeti administratorja za "pol škatlice", ali pa ga sploh ne najeti — smisel zagotovo obstaja. Z vidika oddaljenega administratorja — enako. 10 $ na mesec, prihrani čas in prinaša fleksibilnost pri delu, na zelo veliko vsoto. Če me na primer prosijo, da prevzamem podoben projekt, bom vztrajal na preselitvi na Plesk.oŽelim deliti nekatere vtise o potrebnosti ali nepotrebnosti nečesa, kot je nadzorni panel za komercialni enostopenjski spletni projekt ob prisotnosti zelo part-time administratorja.

Moje izkušnje z Plesk

Izvor: habr.com

Kupite zanesljivo gostovanje za spletne strani z zaščito pred DDoS, VPS VDS strežniki 🔥 Kupite zanesljivo gostovanje za spletne strani z zaščito pred DDoS, VPS VDS strežniki | ProHoster