Koduj, dostarczaj, optymalizuj – hosting PHP na platformie UniCloud

PHP jest uznawany za jeden z najprostszych serwerowych języków skryptowych. Jego użycie na stronach internetowych (górne 10 milionów według rankingu strony Alexa) wciąż rośnie i obecnie wynosi 83,5%. Hosting PHP jest obecnie najpopularniejszym typem hostingu na Świecie.

Poniżej opisujemy szereg najistotniejszych elementów związanych z hostingiem PHP w ramach platformy UniCloud.

Wersje PHP

Platforma UniCloud wspiera różne wersje środowiska PHP. Dla projektów zalecamy zawsze korzystanie z najnowszego wydania:

  • PHP 7.3.x
  • PHP 7.2.x
  • PHP 7.1.x
  • PHP 7.0.x
  • PHP 5.6.x
  • PHP 5.5.x
  • PHP 5.4.x
  • PHP 5.3.x

Wersję silnika można wybrać podczas procesu tworzenia środowiska, a także z łatwością zmieniać ją później, poprzez wykorzystanie kreatora topologii.

Serwery Aplikacji PHP

UniCloud domyślnie udostępnia i wspiera dwie wersje serwerów aplikacji PHP (takie funkcje jak aktualizacje wersji silnika oraz łatki bezpieczeństwa w ramach platformy wdrażane są cyklicznie):

Szczegółowe informacje na temat konfiguracji serwerów oraz lista edytowalnych plików konfiguracyjnych dla każdego serwera dostępne są w dokumencie: PHP App Server Configuration.

Wdrożenie Aplikacji PHP

Wdrażanie bez przestoju (tzw. zero-time deployment) zapewnia możliwość uruchomienia jakichkolwiek aplikacji natywnych dla chmury oraz starszych wersji aplikacji. W celu dostarczenia projektów PHP do stworzonego środowiska na platformie UniCloud należy wybrać jedną z dostępnych opcji:

  • z archiwum/adresu URL
  • z repozytorium Git/SVN
  • za pośrednictwem PHP Bitbucket

Dodatkowo istnieje możliwość konfiguracji automatycznego cyklicznego wdrażania z repozytorium – odbywa się to tylko wtedy, gdy pojawiają się zmiany w kodzie.

Zarządzanie Domenami

Do środowiska przeznaczonego na hosting aplikacji PHP możesz podpiąć własną, zewnętrzną domenę i używać jej zamiast domyślnej, systemowej nazwy środowiska. Istnieją dwie możliwości przypisywania domen:

  • rekord CNAME: w wypadku używania Wspólnego Równoważnika Obciążenia (Shared Load Balancer); zalecana dla środowisk developerskich oraz testowych
  • rekord A: w wypadku używania Publicznego IP; jest w stanie poradzić sobie z dużym obciążeniem i nadaje się do środowisk produkcyjnych.

Co więcej, istnieje możliwość łatwego przełączania się między domenami, w celu przekierowania ruchu z jednego środowiska do innego (na przykład przełączając się na nowszą wersję aplikacji bez okresu przestoju).

Dla dostępu przez Publiczne IP, ruch może być przekierowany do innego środowiska za pomocą metody SwapExtlps API (również dostępne przez CLI).

Automatyczne Skalowanie Pionowe

Automatyczne skalowanie pionowe pozwala dynamicznie przydzielać dodatkowe zasoby (RAM, procesor) na podstawie bieżącego użycia i zgodnie z granicznymi wartościami ustawionymi dla serwera. Ta funkcja pozwala alokować tylko te zasoby, które w danym momencie są wymagane do prawidłowego, stabilnego działania aplikacji. Pozwala także oszczędzić czas dzięki pełnej automatyzacji przydzielania zasobów(dodawania lub ich odejmowania).

Platforma automatycznie wykonuje proces skalowania, użytkownik musi jedynie określić górny i dolny limit cloudletów (każdy jest równy 128 MiB pamięci RAM oraz 400 MHz CPU) dla serwera Go za pomocą asystenta topologii.

Aplikacja będzie działała zgodnie z ustawionymi ograniczeniami, zmniejszając użycie zasobów gdy obciążenie jest mniejsze, i zwiększając je w wypadku znacznego obciążenia. W ten sposób płaci się tylko za zasoby, które rzeczywiście się zużywa.

Ręczne Skalowanie Poziome

Istnieje możliwość łatwego dodania kolejnych serwerów PHP poprzez asystenta topologii w trakcie tworzenia środowiska lub jego dostosowywania. Należy kliknąć przycisk „+” w sekcji Skalowanie poziome i dodać wymaganą liczbę instancji.

Maksymalna liczba serwerów tego samego typu wewnątrz pojedynczej warstwy środowiska to 16 węzłów. Co istotne, jeśli na etapie tworzenia środowiska nie dodamy load balancera, ale włączymy automatyczne skalowanie, zostanie on dodany przez platformę automatycznie.

Automatyczne Skalowanie Poziome

Automatyczne skalowanie poziome może być wprowadzone poprzez użycie regulowanych wyzwalaczy (tzw. triggery), które dostosowują liczbę węzłów do stopnia obciążenia aplikacji. Aby skonfigurować skalowanie automatyczne należy przejść do sekcji Ustawienia > Monitorowanie > Automatyczne skalowanie poziome i  wybrać przycisk dodaj.

W tym miejscu można skonfigurować wyzwalacze dla konkretnych stosów i zasobów (CPU, RAM, Sieć, Dysk) poprzez dostosowanie warunków skalowania.

Klastrowanie PHP

Wprowadzenie Klastrowania sesji PHP dla aplikacji może znacznie zwiększyć ich dostępność i możliwości radzenia sobie z awariami poprzez użycie sesji sticky (sticky sessions) uruchomionej na kilku węzłach serwera aplikacji. Ta funkcja jest zapewniana przez węzeł Memcached, który powinien zostać dodany do środowiska i używany jako pamięć dla kopii zapasowych przetworzonych sesji.
Podczas skalowania serwera PHP dla wdrożonej aplikacji tworzona jest dokładna kopia o takiej samej konfiguracji oraz plikach poprzez synchronizację danych.

Dodatkowo, w celu zapewnienia większej funkcjonalności usługi, UniCloud oferuje autoskalowalny WordPress Klaster oraz Magento Klaster dostępny do instalacji za pomocą jednego kliknięcia. Co więcej, w ten sposób można stworzyć pakiet dla dowolnej aplikacji PHP w celu automatyzacji jej klastrowej instalacji.

Połączenie Bazy Danych do Aplikacji PHP

Platforma UniCloud zapewnia zestaw skalowalnych i w pełni sterowalnych serwerów baz danych, które można w łatwy sposób zainstalować i użytkować wewnątrz środowiska PHP. Aby nawiązać połączenie należy dostosować aplikację, postępując według instrukcji odpowiednich dla właściwej bazy danych:

Moduły i Akceleratory

Podczas pracy z platformą UniCloud można rozszerzyć funkcjonalność środowiska poprzez ustawienie różnych rozszerzeń PHP w odpowiednich serwerach aplikacji. Można albo wybrać jedno z dostępnych rozszerzeń i aktywować je, albo wgrać własne rozszerzenie – obydwa sposoby są opisane w instrukcji PHP Modules.

Akceleratory PHP mogą być określone jako osobny typ rozszerzeń.Są one używane do zwiększania wydajności aplikacji poprzez buforowanie już skompilowanych części kodu PHP, które mogą być później szybko wykonane na polecenie użytkownika.

Serwery Apache PHP oraz  NGINX zawierają odrębne zestawy wbudowanych modułów. Dodatkowo istnieje kilka osobnych tutoriali dotyczących konfigurowania różnych modułów:

Bezpieczeństwo PHP

SSL / TLS (Secure Socket Layer / Transpor Layer Security) jest standardem w technologii bezpieczeństwa dla ustanawiania zaszyfrowanego połączenia pomiędzy serwerem sieci oraz przeglądarką. Ta technologia jest wspierana przez platformę UniCloud i zapewnia prywatność oraz bezpieczeństwo wszelkich danych; oznacza to, że nie mogą być one odszyfrowane przez niepowołane osoby.

Poza powszechnymi sposobami zabezpieczania danych, bezpieczeństwo aplikacji może zostać zwiększone poprzez dostosowanie głównego pliku konfiguracyjnego PHP, nazwanego php.ini. Zapewnia on możliwość edycji domyślnych ustawień, a nawet dodania własnych poleceń, zgodnie z potrzebami konkretnej aplikacji.

Dodatkowe wskazówki dotyczące konfiguracji są dostępne dla następujących serwerów aplikacji:

Jeszcze jednym sposobem na zapewnienie bezpieczeństwa aplikacji jest zastosowanie funkcji firewalla dla kontenera. Pozwala on na kontrolę dostępu do węzłów zarówno z, jak i spoza platformy.

 Więcej informacji na temat uruchamiania aplikacji tworzonych języku PHP znajdziesz w dokumentacji Jelastic:

button-jelastic