Moje doświadczenia z Pleskiem

Chciałbym podzielić się pewnymi wrażeniami na temat konieczności lub braku konieczności istnienia czegoś takiego jak panel sterowania dla komercyjnego projektu webowego na jednym serwerze z bardzo niepełnoetatowym administratorem. Historia zaczęła się kilka lat temu, kiedy znajomi znajomych poprosili mnie o towarzyszenie przy zakupie firmy - serwisu informacyjnego - z technicznego punktu widzenia. Trzeba było trochę zagłębić się w to, co działa na czym, upewnić się, że wszystkie niezbędne szczegóły zostały przekazane we właściwej formie i objętości, a także strategicznie oszacować, co można ulepszyć.

Moje doświadczenia z Pleskiem
Umowa została zawarta, skrzypek nie był już potrzebny. Koniec. Niezupełnie.

Strona działała na dwurdzeniowym 4-gigabajtowym komputerze wirtualnym na Linode, na jakimś mchu Debian5 z 400 dniami dostępności i długą listą nieaktualizowanych pakietów. Web Part działa na niestandardowym CMS-ie, nginx, PHP 5.3 FPM i dostrojonej bazie danych Percona MySQL. Zasadniczo działało.

Równolegle z rozmowami ze mną, nowy właściciel szukał programisty, który doprowadzi projekt do oczekiwań. Znalazł takiego. Programista ocenił ruch i wolumeny i uznał, że jest dobry w optymalizacji i zarządzaniu kosztami. Przeniósł całą witrynę na hosting współdzielony za 700 rubli zarządzany przez swojego zwykłego IS****era. Kilka dni później właściciel zadzwonił ponownie: „wszystko jest wolne i wygląda na to, że coś się zepsuło”. Próbowałem naprawić sytuację przez panel, ale po pewnym czasie bezowocnych prób zmiany wersji PHP lub handlera z fcgi na fpm, poddałem się i przeszedłem do powłoki. Tam znalazłem włączone debugowanie, które pokazywało cały Internet z hasłem od Muscle, 777 w niektórych folderach, które w tym czasie pękały od wgranego złośliwego oprogramowania i podobnych bzdur. Właściciel zdał sobie z tego sprawę i uznał, że oszczędzanie na hostingu, programiście i administratorze, który miałby na oku, jak wszystko idzie, jest błędem.

Przechodzimy na RuVDS. Jest trochę bliżej niż brytyjski Linode, a jeśli nagle zechcesz przechowywać dane osobowe i tak dalej, nie będziesz musiał się nigdzie ruszać. Ponieważ projekt był planowany do rozbudowy, wzięliśmy maszynę wirtualną „na rozrost”: 4 rdzenie, 8 GB pamięci, 80 GB dysku. Nie chodzi o to, że nie potrafię ręcznie edytować konfiguracji nginx, po prostu nie miałem entuzjazmu, aby tak dokładnie pracować nad tym projektem (patrz wyżej o pracy na pół etatu). Dlatego zainstalowałem Pleska (pominę tutaj szczegóły instalacji, ponieważ ich nie ma: uruchomiłem instalator, ustawiłem hasło dla administratora, wpisałem klucz – to wszystko), w tym czasie było 17.0. Podstawowe ustawienia działają w miarę dobrze od razu po wyjęciu z pudełka, jest fail2ban i najnowsze dostępne wersje PHP, nginx. 

Może warto się zatrzymać i wyjaśnić dlaczego. Ponieważ rzadko robię takie rzeczy i nie mam żadnych specjalnych narzędzi ani zestawu półfabrykatów do każdego przypadku, było jasne, że potrzebna jest pewna automatyzacja podstawowych rzeczy, aby po pierwsze było to szybkie, po drugie bezpieczne, a po trzecie wszystkie najlepsze praktyki zostały już przez kogoś wdrożone.

Więc zainstalowałem. Zaoszczędziłem sporo czasu, ponowne uruchomienie witryny na nowym serwerze nastąpiło niemal natychmiast. Pozostało tylko zobaczyć konfigurację mięśni, dając jej połowę pamięci i zwiększając liczbę puli buforów, i dać nginx połowę rdzeni (Plesk nie dotyka konfiguracji globalnych) i przejść do powłoki na kilka dni, aby przyjrzeć się statystykom mysqltuner. O, i kupiłem płatny ImunifyAV z katalogu rozszerzeń, aby pozbyć się złośliwego oprogramowania, które zostało wlane. Było około 11000 XNUMX zainfekowanych plików. Najgorsze jest to, że zaciemnione fragmenty kodu zostały wlane do statystyk, a ręczne czyszczenie byłoby całkowicie nudne. Najpierw wypróbowałem ClamAV, ale okazało się, że nie radzi sobie z takimi rzeczami, podczas gdy ImunifyAV mógł. Ponadto wyleczone pliki pozostają sprawne, część ze złośliwym oprogramowaniem jest po prostu usuwana.

Rachunek jest prosty: 50 USD miesięcznie za VM, 10 USD za Plesk (właściwie mniej, bo kupiliśmy go na rok z dwumiesięczną zniżką) i 3 USD za antywirusa. Albo mnóstwo walizek pieniędzy za mój czas, który na początku spędziłbym na serwerze, ręcznie czyszcząc te stajnie. Właściciel był całkiem zadowolony z takiego układu.

Moje doświadczenia z Pleskiem
Tymczasem znaleźliśmy nowego programistę. Uzgodniliśmy z nim podział obowiązków, utworzyliśmy subdomenę dla wersji testowej i zaczęliśmy pracę. On przeglądał nową wersję strony na Laravel, a ja przyglądałem się fail2ban%).

Moje doświadczenia z Pleskiem
Ciekawe, że przepływ ciekawskich ludzi nie ustaje i na liście zablokowanych jest zawsze około stu adresów. Efekt jest ciekawy: w szczególności, zazwyczaj, jeśli przejdę do powłoki, widzę około 20000 30000-2 70 nieudanych prób logowania przez SSH na powitanie. Przy włączonym fail0ban około 2. Włożony wysiłek: XNUMX. Niestety, w tym wszystkim była łyżka dziegciu. Domyślnie WAF (modsecurity) był „włączony na pół”: w trybie wykrywania. To znaczy, że zapisywał podejrzaną aktywność do dziennika, ale w rzeczywistości nie podejmował żadnych działań. A failXNUMXban bezmyślnie czytał wszystkie dzienniki, zgodnie z włączonymi jailami, i zabijał wszystko, co się ruszało. W ten sposób zablokowaliśmy połowę redakcji :D. Musieliśmy wyłączyć to jail i dodać niezbędne adresy IP do białej listy dla niezawodności. Włożony wysiłek: dwa razy nacisnąłem myszką i nauczyłem redaktorów mówić ich adres IP.

Moje doświadczenia z Pleskiem
To, co od razu spodobało się programiście, to możliwość bezpośredniego przesyłania baz danych do panelu i szybki dostęp do phpMyAdmin

Moje doświadczenia z Pleskiem
Podobały mi się logi i kopie zapasowe. Logi są zapisywane i automatycznie rotowane zaraz po wyjęciu z pudełka; kopie zapasowe są bardzo łatwe do skonfigurowania. W najsłabszych momentach tworzona jest pełna kopia zapasowa, około 10 gigabajtów, a następnie codziennie kopia przyrostowa, 200 megabajtów, przez tydzień. Granularne odzyskiwanie, do określonego pliku lub bazy danych. Jeśli musisz przywrócić z kopii przyrostowej, nie musisz zawracać sobie głowy pełną kopią zapasową i przywracaniem całego łańcucha, Plesk robi wszystko sam. Możesz przesyłać kopie zapasowe w dowolne miejsce: na FTP, Dropbox, S3 Bucket, Google Drive itp.

Moje doświadczenia z Pleskiem
Dzień G: programista w końcu ukończył nowy silnik, wgraliśmy go do prod, zaimportowaliśmy stare dane i usiedliśmy, aby wybrać kolor naszego przyszłego Maserati. Nadal tam siedzimy i wybieramy.

Zaczęły się pierwsze problemy. Nowa strona była, jak można było się spodziewać, cięższa od starej, ale prawdziwym problemem było to, że aby przyciągnąć ruch, używali między innymi Yandex.Zen, który przyciągał odwiedzających partiami. Strona upadła przy 150 równoczesnych połączeniach (nie mówię o RPS, ponieważ nie mierzyliśmy tego). Zaczęli naciskać przyciski i kręcić pokrętłami w obszarze ustawień php_fpm:
 
Moje doświadczenia z Pleskiem
Ups, już ma 500 połączeń. Gdy karta kredytowa została zastosowana do narzędzi promocyjnych, fale ruchu stały się większe. Następnym kamieniem milowym jest 1000 równoczesnych połączeń. Tutaj musieliśmy dopracować kod i zajrzeć w duszę mięśni. Splash nie pomógł w tym, ale tak naprawdę nie spodziewaliśmy się tego. Włączyliśmy dziennik powolnych zapytań, zawiesiliśmy indeksy w bazie danych, usunęliśmy niepotrzebne zapytania z kodu, ponownie przeczesaliśmy konfigurację mysql zgodnie z radą mysqltuner.

Nowe wyzwanie — 2000 połączeń. Właśnie wyszedł Plesk 17.8, który między innymi dodał buforowanie nginx. Zaktualizowano (zaskakująco łatwe). Spróbujmy. Działa! A potem nadepnęliśmy na coś miękkiego, kanał Yandex.Zen przestał działać. Strona działa, kanał nie działa. Kanał nie działa, nie ma ruchu. Atmosfera robi się coraz gorętsza. Pod presją okoliczności i brakiem wyobraźni natychmiast zacząłem strace nginx i znalazłem to, czego szukałem. Okazuje się, że w pewnym momencie głupi nginx buforował błąd 500 jako odpowiedź na Yandex get feed.xml. Naprawiliśmy to, dodając wyjątki do ustawień buforowania:

Moje doświadczenia z Pleskiem
Jasne jest, że właściciel potrzebuje WIĘCEJ, fale stopniowo rosną. Na razie sobie radzimy, ale zaczęliśmy eksperymentować z memcached z wyprzedzeniem, na szczęście Laravel obsługuje go niemal od razu. Nie chcieliśmy instalować memcached ręcznie, aby „pobawić się”, więc zainstalowaliśmy obraz dockera. Prosto z panelu.

Moje doświadczenia z Pleskiem
Okej, kłamię, musiałem wejść do powłoki i zainstalować moduł przez pecl. Dokładnie instrukcje. Nie ma jeszcze nic do powiedzenia o wzroście przepustowości, nie było wystarczająco dużych napływów. Silnik witryny połączył się z localhost:11211, statystyki są wyświetlane, pamięć jest zjadana. Jeśli nam się spodoba, zobaczymy, co dalej. Albo zostawimy to tak, jak jest, albo zainstalujemy „prawdziwy” bezpośrednio w Axis. Albo spróbujemy redis w ten sam sposób

Następnie konieczne było dołączenie listy mailingowej. Żadnych przekaźników, tylko uwierzytelnianie smtp. Utworzyłem adres mailingowy i za pomocą jego danych, za pomocą PHP, tworzymy listę mailingową.

Moje doświadczenia z Pleskiem
Niedawno wydano Plesk Obsidian (18.0), zaktualizowaliśmy go na podstawie wcześniejszych doświadczeń bez obaw. Wszystko poszło bardzo gładko, nie ma o czym mówić. Pozytywnie, interfejs znacznie poprawił się pod względem jakości, został zmodernizowany i stał się wygodniejszy w niektórych miejscach. Zaawansowany monitoring na Grafanie to fajna rzecz.

Moje doświadczenia z Pleskiem
Jeszcze nie zagłębiłem się w szczegóły, ale możesz na przykład ustawić alerty dla dowolnego parametru w swojej poczcie e-mail. Do właściciela, lol.

Skoro już mowa o interfejsie, to jest on adaptacyjny i działa naprawdę dobrze na telefonie. Na wczesnym etapie, kiedy próbowaliśmy znaleźć optymalne ustawienia PHP itd., było to bardzo pomocne. A zwłaszcza, kiedy programista, w przypływie entuzjazmu do pracy, robi coś o 23:XNUMX, a ja, w przypływie entuzjazmu do pracy, piję wódkę w łaźni i PILNIE muszę coś zmienić.

Moje doświadczenia z Pleskiem
A, swoją drogą. Na zdjęciu widać, że pojawił się PHP Composer. Jeszcze się nim nie bawiliśmy, ale powiedzmy, że dla tego samego Laravela może zaoszczędzić kilka logowań w powłoce i trochę czasu na instalowanie zależności. Ten sam system istnieje dla Node.JS i Ruby.

Dzięki SSL wszystko jest proste. Jeśli domena jest rozwiązana tam, gdzie powinna, Let's Encrypt jest wykonywane jednym kliknięciem, a następnie aktualizuje się, zarówno w samej domenie, jak i w subdomenach, a nawet w usługach pocztowych.

Moje doświadczenia z Pleskiem
Plesk jako oprogramowanie jest obecnie całkiem przyjemny i stabilny. Aktualizuje się i system operacyjny cicho, zużywa niewiele zasobów, działa płynnie. Nie przypominam sobie nawet, abym kiedykolwiek natknął się na coś, co byłoby oczywistą wadą produktu. Oczywiście były problemy, ale wynikały albo z niedoskonałej konfiguracji, albo gdzieś na styku, więc nie ma się do czego przyczepić. Wrażenia z pracy z Pleskiem są generalnie przyjemne. Czego nie ma, i musisz to zrozumieć, to żadnego (żadnego) klastrowania. Ani LB, ani HA. Możesz spróbować, ale zainwestowany wysiłek będzie tak duży, że lepiej zrobić coś inaczej od początku.

Myślę, że możemy to podsumować. W przypadku, gdy nie ma administratora lub jest go za mało, gdy cena hostingu i działających na nim stron przekracza, powiedzmy, 100 USD, gdy nie mówimy o bestialskim serwerze współdzielonym z 1500 stronami, gdy decydent ma wybór, czy zatrudnić administratora na pół etatu, czy kupić oprogramowanie i uzyskać administratora za „pół szyszki”, czy w ogóle go nie uzyskać – zdecydowanie ma to sens. Z punktu widzenia zdalnego administratora – to samo. 10 USD miesięcznie, ale oszczędza czas i daje elastyczność w pracy nad bardzo bоwiększa kwota. Jeśli na przykład zostanę poproszony o wzięcie podobnego projektu pod swoje skrzydła, będę nalegał na przeniesienie go do Pleska.

Moje doświadczenia z Pleskiem

Źródło: www.habr.com

Kup niezawodny hosting dla stron z ochroną DDoS, serwery VPS VDS 🔥 Kup niezawodny hosting stron internetowych z ochroną DDoS, serwery VPS VDS | ProHoster