Hostujemy miliony witryn na naszych platformach hostingowych CampusPress i WPMU DEV. I jesteśmy również za Edublogs, prawdopodobnie największa sieć WordPress Multisite na świecie (jeśli nie liczyć WordPress.com).

Październik 2020: przetestowaliśmy wszystkie najlepsze hosty WordPress! Dowiedz się, jak się porównujemy.Zobacz Wyniki

W ciągu ostatnich 11+ lat budowania i rozwijania tych usług, zmieniliśmy wszystko, co robimy. Popełniliśmy błędy, wiele się nauczyliśmy i będziemy stale ulepszać naszą infrastrukturę i praktyki, aby zapewnić jeszcze lepszą obsługę naszych klientów.

Pomyśleliśmy, że dobrze byłoby podzielić się trochę zakulisowym spojrzeniem na naszą obecną konfigurację. Sprawdzimy również, ile będzie kosztować samodzielne ustawienie czegoś takiego. Jeśli witryna pobiera przyzwoity ruch, nie wymaga przestojów lub jest przeznaczona dla wielu użytkowników, aby być zalogowanym na raz (jak Multisite, BuddyPress lub witryna Członkowska), to ten przewodnik jest dla ciebie!

The CampusPress Home Page
CampusPress hostuje WordPress Multisite dla tysięcy szkół i uniwersytetów.

Większość tego, co udostępniamy w tym poście, pochodzi z naszego serwisu CampusPress, który obsługuje sieci wielostanowiskowe małe i duże dla szkół i uniwersytetów na całym świecie. Na przykład hostujemy strony takie jak emergency.cornell.edu który musi być w stanie obsłużyć setki tysięcy potencjalnych odwiedzających w krótkim czasie, jeśli na terenie kampusu wystąpi okropne wydarzenie lub klęska żywiołowa. Główne strony internetowe (providence.edu) oraz serwisy informacyjne (thelantern.com) może również mieć duże obciążenie i musi działać bez przestojów.

Co zaskakujące, te witryny o dużym natężeniu ruchu nie są technicznie najtrudniejsze do hostowania. Pamięć podręczna i CDN mogą pomóc w statycznej zawartości. Jednak witryny członkowskie, fora, sieci społecznościowe BuddyPress i każda inna strona, która zalogowała się w aktywności użytkownika, tworzy obciążenie bazy danych, które znacznie rośnie nawet przy niewielkiej liczbie użytkowników. To wtedy pojawia się redundancja i oddzielenie bazy danych od serwerów internetowych. A dla nas Amazon Web Services pozwoliło nam stworzyć idealne środowisko dla WordPress i WordPress Multisite.

Dlaczego przenieśliśmy się do AWS

Amazon Web Services

Przez wiele lat dzierżawiliśmy serwery w centrum danych od Peer1. To działało dobrze, ponieważ nasz zespół techniczny mógł zdalnie zarządzać serwerami, aby zbudować zoptymalizowaną konfigurację, która dobrze nam służyła.

Ale, podobnie jak większość sieci, istnieje wiele czynników, które spowodowały, że w ciągu ostatnich kilku lat powoli przenosiliśmy całą naszą infrastrukturę do Amazon Web Services (AWS). Na przykład:

  • Lokalizacja – AWS ułatwia konfigurację w regionach na całym świecie, w tym w USA, Kanadzie, Australii i UE. Peer1 miał również centra danych w wielu krajach, ale nie tak wiele, a przenoszenie i zarządzanie między nimi nie było tak łatwe. Wielu naszych klientów coraz częściej wymaga hostingu w określonych krajach ze względu na przepisy i regulacje dotyczące danych. Inni po prostu chcą zmniejszyć opóźnienia.
  • Pay-as-you-go – Nasza poprzednia umowa wymagała od nas miesięcznej dzierżawy serwerów, niezależnie od tego, czy były one potrzebne. Musieliśmy być zawsze gotowi na korki. AWS jest bardziej modelem na żądanie, co pozwala nam niemal natychmiast uruchomić serwery wirtualne, więc płacimy tylko za to, z czego korzystamy. Podobnie, gdy ruch jest niski, jak gdy szkoły są niedostępne dla wielu naszych klientów w święta Bożego Narodzenia, nasze rachunki spadają.
  • It ‘s freakin’ Amazon – AWS stał się najbardziej zaufanym i znanym dostawcą chmury, jaki istnieje. Jesteśmy w stanie wykorzystać zaufanie (i certyfikaty bezpieczeństwa), które posiada AWS, aby zapewnić naszych klientów o jakości technologii stojącej za hostowanymi przez nas witrynami.

Wirtualna Chmura Prywatna

Konfiguracja CampusPress na AWS-rysunek stworzony w cloudcraft.co

Powyższy diagram pokazuje podstawową strukturę każdego używanego przez nas klastra Virtual Private Cloud (VPC). Możemy hostować wiele sieci WordPress Multisite na każdym, choć niektórzy klienci będą potrzebować lub chcą własnego dedykowanego klastra. Używamy podobnych VPC do hostowania tego bloga, a także naszego Edublogs.org (który ma ponad 4 miliony stron!).

Przyjrzyjmy się bliżej VPC…

CDN

Pierwszą rzeczą, którą trafi każdy odwiedzający, będzie sieć dostarczania treści lub CDN. Jesteśmy partnerem hostingowym CloudFlare, więc większość naszych klientów korzysta z CloudFlare, który zawiera dodatkowe korzyści bezpieczeństwa, takie jak Zapora sieciowa (WAF) i Ochrona przed atakami DDoS. Inni wybierają AWS Cloudfront, a inni nadal będą włączać dowolną z niezliczonych usług CDN. CDN obsługuje obrazy i zawartość statyczną z dowolnego centrum danych znajdującego się najbliżej odwiedzającego, co ogranicza ruch, który faktycznie dociera do serwerów internetowych i może przyspieszyć czas ładowania strony. Sprawdź naszą recenzję niektórych opcji CDN tutaj.

EC2 i elastyczne Równoważenie Obciążenia

W przypadku rzeczywistych serwerów internetowych używamy co najmniej 2 dużych instancji EC2 C4 z systemem Linux z pamięcią 8 GB każda. W każdym regionie AWS istnieje wiele “stref dostępności”, które są oddzielnymi fizycznymi centrami danych. To buduje redundancję, jeśli wystąpi awaria lub klęska żywiołowa, która dotyka jednej lokalizacji, druga może przejąć kontrolę.

Kierowanie ruchu do tych instancji EC2 to elastyczny mechanizm równoważenia obciążenia, który określa, który serwer wirtualny EC2 powinien obsługiwać każdy widok strony lub akcję odwiedzającego.

Kontenery Docker oddzielają różne instalacje WordPress od siebie w poszczególnych instancjach.

Baza Danych Aurora

Do bazy danych, w której przechowywane są treści, komentarze i dane użytkowników, używamy dwóch instancji RDS M4-Standard z systemem MySQL. Są one skonfigurowane w układzie “master / standby” z przełączeniem awaryjnym w trybie gotowości, jeśli coś pójdzie nie tak z master.

Przechowywanie Plików S3

Używanie S3 do przesyłania plików użytkownika, takich jak obrazy i pliki, było naszym pierwszym doświadczeniem z AWS – i jest to coś, co możesz (i powinieneś) zrobić, nawet jeśli hostujesz swoją witrynę gdzieś indziej niż Amazon. S3 jest szybki, redundantny i wręcz Tani dla pamięci masowej i przepustowości.

Baza kodów EFS

Twoja baza kodu, w tym rdzeń WordPress, wtyczki i motywy, wymaga domu. Staliśmy się częściowy do stosunkowo nowego elastycznego systemu plików (EFS) na AWS, aby sobie z tym poradzić. Używamy Bitbucket.com do zarządzania kodem i kontroli wersji, a także wewnętrzna aplikacja wdrożeniowa do aktualizacji we wszystkich hostowanych przez nas witrynach. Możesz również użyć Git lub innych usług hostingu i zarządzania kodem.

Elasticache

Dodanie usługi AWS Elasticache do miksu oznacza, że możemy podawać odwiedzającym dowolną statyczną zawartość HTML bez konieczności pracy w bazie danych. Pamiętaj, że zazwyczaj zalogowani użytkownicy nie są obsługiwani w pamięci podręcznej. Więc jeśli cała witryna jest prywatna lub witryna członkowska, pamięć podręczna nie zrobi wiele dla ciebie.

E-mail SES

Instancje Ec2 mogą również wysyłać wiadomości e-mail z WordPressa, takie jak powiadomienia o komentarzach lub resetowanie hasła. Ale jeśli Twoja witryna wysyła wiele wiadomości e-mail, zwłaszcza jeśli używasz czegoś takiego jak subskrypcja przez e-mail, lepiej jest skorzystać z usługi zaprojektowanej specjalnie do obsługi poczty e-mail. Jeśli nic innego, SES pozwala zwiększyć szanse na dostarczanie wiadomości e-mail (i nie jest oznaczany jako spam).

Alarmy i dzienniki Cloudwatch

Obserwowanie całego VPC jak jastrząb jest Cloudwatch. Zbierając dzienniki i monitorując zasoby, alarmy Cloudwatch mogą automatycznie dodawać (lub usuwać) instancje EC2, gdy obciążenie tego wymaga, dzięki czemu nie płacisz za usługi wirtualne, gdy nie są potrzebne, a także możesz skalować, aby obsłużyć najwyższy ruch, jaki możesz sobie wyobrazić.

Poza Infrastrukturą

Code

Serwery są tylko jedną z części hostingu witryn o wysokiej dostępności WordPress, które są skalowane. Witryny mogą przejść do trybu offline z wielu powodów, w tym konfliktów wtyczek/motywów, błędów użytkownika, usług innych firm, na których polegasz i innych. Dlatego mamy dość rygorystyczne procedury, aby zapobiec takim możliwościom.

Wskazówki dotyczące kodu dla wtyczek i motywów

W przypadku każdej z witryn korporacyjnych, które obsługujemy, jedną z dużych różnic, które przeciętny użytkownik zauważy, jest to, że wtyczek i motywów nie można dodawać bezpośrednio z pulpitu WordPress.

Z biegiem lat stworzyliśmy listę funkcji i wymagań kodu, które muszą być spełnione dla każdej wtyczki lub motywu, który hostujemy. Dla tych, którzy są przyzwyczajeni do tego, że mogą po prostu dodawać dowolne wtyczki do swoich stron, czasami może to być punkt sporny.

Ale zależy nam na wysokiej wydajności i bezpiecznym kodzie. I nie wszystkie wtyczki i motywy są sobie równe. Więc nasz zespół programistów ręcznie przegląda każdy temat i wtyczki, które hostujemy.

Oto lista tego, czego szukamy-wszystkie wtyczki i motywy, które obsługujemy, muszą:

  • przestrzegaj wytycznych dotyczących motywów WordPress i standardów kodowania WordPress;
  • nie polegać na usługach stron trzecich (chyba że możemy zapewnić, że nie powiedzie się to z wdziękiem i / lub zatwierdzić w inny sposób dobrze ugruntowane usługi);
  • nie aktualizuje automatycznie ani nie modyfikuje plików;
  • nie zmienia timeoutu wywołań wp_remote_* ;
  • nigdy nie zmieniaj wp_feed_cache_transient_lifetime (hak do filtra);
  • nie używaj SHOW TABLES, zamiast tego używaj SHOW TABLES jak ‘wp_xyz’;
  • nie używaj DESC do opisywania tabeli, zamiast tego używaj DESC;
  • nie zmienia WP_DEBUG, error_reporting ani display_errors;
  • nie usuwaj domyślnych ról (remove_role);
  • zasady nie flush rewrite ($wp_rewrite – >flush_rules nie są dozwolone);
  • nie flush cache (wp_cache_flush nie jest dozwolone);
  • nie zawiera zapytań SQL. Powinien korzystać z wbudowanych funkcji WordPress do pobierania postów, stron, załączników, użytkowników i odpowiednich metatagów;
  • nie tworzy nowych tabel ani nie modyfikuje schematu tabel;
  • nie używaj wymienionych tutaj funkcji systemu plików;
  • nie przechowuje plików w serwerowym systemie plików. Zawsze musi korzystać z załączników WordPress, jeśli akceptuje przesyłanie plików;

Możesz być zaskoczony, ile wtyczek I tematów, które oceniamy, nie spełnia tych wytycznych. Niestandardowe zapytania SQL to najczęstszy problem, który widzimy.

A każda aktualizacja wtyczek i motywów jest sprawdzana, aby upewnić się, że nic nie przejdzie.

Zapewnienie jakości i testowanie

Wyłączamy również automatyczne aktualizacje rdzenia WordPress, wtyczek i motywów. Chcemy dokładnie przetestować aktualizacje przed ich uruchomieniem. Dla Większości Klientów prowadzimy cotygodniowy cykl “zarządzanie zmianą”, w którym aktualizacje są wysyłane do każdego regionu wcześnie we wtorkowe poranki. Dzięki temu nasi klienci wiedzą, kiedy spodziewać się aktualizacji, a my możemy zaplanować obecność naszego zespołu i monitorować go. Nigdy nie ma niespodzianek.

Zanim zmiana lub aktualizacja może przejść przez proces, musi:

  • Być ręcznie testowane i w pełni sprawdzane w lokalnych środowiskach testowych przez co najmniej dwóch programistów
  • Przejść dowolne możliwe testy zautomatyzowane i / lub jednostkowe w wielu środowiskach programistycznych
  • Zdaj testowanie ręczne przez zespół QA / support w wielu środowiskach programistycznych
  • Być wdrożone w małej podgrupie witryn na żywo i wszystkich witryn programistycznych/testowych klientów, którzy chętnie uczestniczą w programie testów beta przez co najmniej 72 godziny
  • Przekazać ostateczny kod podręcznika i przegląd wydajności przez kierownictwo zespołu technicznego

Zestawienie-Koszty

Money symbols

Gdy połączysz infrastrukturę techniczną AWS ze ścisłą praktyką zarządzania kodem, otrzymasz witryny, w których możesz oczekiwać czasu sprawności 99.99% lub wyższego i które poradzą sobie z każdym natężeniem ruchu, który możesz na to rzucić.

Ale wszystko ma swoją cenę. Na ile patrzymy, jeśli sam spróbujesz coś takiego zrobić?

Zacznijmy od klastra chmury prywatnej AWS. Oto zestawienie aktualnych cen dla regionu USA-Wirginia:

Dwie duże instancje RDS M4 dla bazy danych – $126.00 każda.

Dwie duże instancje EC2 C4 dla serwerów WWW – $ 144.00 każda.

One ElastiCache M3 Large instance-131,04 zł

Jedna elastyczna instancja Load Balancer w / minimum 10 GB danych przetwarzanych miesięcznie – $18.08

Jedna instancja magazynu plików EFS o pojemności 100 GB – $30.00

Tylko to kosztuje $575.12 miesięcznie-a my jeszcze nie zapłaciliśmy za jednego odwiedzającego, przesyłanie plików, a nawet 1 MB przepustowości.  Możesz łatwo dodać setki, jeśli nie tysiące miesięcznie w zależności od ruchu.

Musimy również uwzględnić koszty dla wielu programistów i inżynierów DevOps, których z pewnością potrzebujesz. Jejku!

Jest Inny Sposób?

WPMU DEV Hosting

Dla typu DIY, który miał nadzieję, że ten post będzie trochę bardziej szczegółowy, sprawdź ten post, który krok po kroku przeprowadzi Cię przez jak skonfigurować AWS prawie identycznie do tego, co opisaliśmy tutaj.

Dla innych z Was również Ty możesz korzystać z tej samej skali i procedur dzięki naszym usługom hostingu dla przedsiębiorstw – za ułamek kosztów samodzielnego działania. 😉

Zobacz CampusPress.com jeśli jesteś szkołą lub uniwersytetem, a WPMU DEV Hosting dla wszystkich innych. Chętnie pomożemy!

Mam nadzieję, że wiele się nauczyłeś z tego zakulisowego spojrzenia na to, jak hostujemy WordPress Multisite. Jeśli masz jakieś pytania, zadaj je w komentarzach poniżej.

Tagi:

You May Also Like

Jak naprawić nieprawidłowy błąd JSON w WordPress (Przewodnik dla początkujących)

W artykule: Co powoduje błąd “nieprawidłowa odpowiedź JSON” w WordPress?1. Sprawdź adresy…

Jak naprawić błąd krytyczny w WordPress (krok po kroku)

W artykule: Co To jest błąd krytyczny w WordPress?Co powoduje krytyczny błąd…

Jak zmienić kolor linku w WordPress (poradnik dla początkujących)

W artykule: Dlaczego Linki Są Ważne?Jak dodawać linki w postach i stronach…

9 Najlepsze Darmowe Wtyczki WordPress Author Bio Box

W artykule: 1. Simple Author Box2. Branda3. Autor postu WP4. Author Bio…