Powrót do bloga

Konfiguracja serwera Redis jako zarządcy sesji dla PHP na Ubuntu 20.04

Konfiguracja serwera Redis jako zarządcy sesji dla PHP na Ubuntu 20.04

Redis to otwartoźródłowy system pamięci podręcznej i przechowywania danych w pamięci, nazywany również serwerem struktur danych. Oferuje zaawansowane wsparcie dla wielu typów danych, takich jak tablice skrótów (hashe), listy, zbiory, mapy bitowe i wiele innych. Ze względu na swoją doskonałą wydajność, Redis cieszy się popularnością w wiodących branżach i największych korporacjach międzynarodowych.

Zalety Redis

Jeśli chodzi o szybkość, serwery Redis nie mają sobie równych. Jako NoSQL serwer bazodanowy, oferuje fantastyczną prędkość przechowywania i pobierania danych. Ponadto Redis posiada wyjątkowe funkcjonalności, które ułatwiają bezproblemową pracę z różnymi danymi, w tym złożonymi. Łatwość użycia i zaawansowane funkcje Redis nie tylko wyróżniły go na tle innych rozwiązań, ale także pozwoliły na jego rosnącą standaryzację jako głównej bazy danych dla użytkowników korporacyjnych i indywidualnych.

Poniżej szczegółowo opiszemy kroki, które pomogą Ci zainstalować Redis na systemie Ubuntu 20.04. W tym samouczku otrzymasz wszystkie potrzebne informacje, od instalacji do konfiguracji zewnętrznego serwera Redis, który będzie używany jako handler sesji dla aplikacji PHP działającej na Ubuntu 20.04.

Pierwsze kroki

Aby przejść przez te kroki, będziesz potrzebować dwóch różnych serwerów bazodanowych (dropletów) zlokalizowanych w tym samym centrum danych z włączoną siecią prywatną. Są to:

  • Serwer WWW PHP z uruchomionym LAMP and LEMP na Ubuntu 20.04 – będziemy odnosić się do tego serwera jako web.

  • Drugi, czysty serwer Ubuntu 20.04, na którym zostanie zainstalowany Redis – będziemy odnosić się do tego serwera jako redis.

Krok 1 — Instalacja serwera Redis

Naszym pierwszym krokiem jest instalacja serwera Redis na Ubuntu 20.04. Po zakończeniu upewnij się, że serwer działa na naszym redis Droplecie.

W tym samouczku użyjemy osobistych archiwów pakietów (PPA). Zdecydowanie zalecamy korzystanie z PPA ze względów bezpieczeństwa. W porównaniu z innymi repozytoriami firm trzecich, PPA są stabilne, łatwe w instalacji, a przede wszystkim repozytorium to jest przeznaczone dla użytkowników Ubuntu. PPA pozwala uzyskać najnowszą dostępną wersję oprogramowania, nawet dla oprogramowania, którego nie znajdziesz w oficjalnych repozytoriach Ubuntu.

Używanie PPA z nieautoryzowanych źródeł jest absolutnie niewskazane. Upewnij się, że pobierasz PPA wyłącznie z autentycznych i zweryfikowanych źródeł. Możesz dodać repozytorium PPA za pomocą polecenia:

Naciśnij klawisz Enter aby potwierdzić. Po potwierdzeniu zaktualizujemy pamięć podręczną menedżera pakietów za pomocą następującego polecenia:

Następnie zainstalujemy Redis za pomocą polecenia:

Po wykonaniu tego polecenia Redis zostanie zainstalowany na Twoim serwerze. Przetestujmy instalację za pomocą polecenia:

Po uruchomieniu polecenia zobaczysz instancję Redis działającą na localhost na porcie 6379. Otrzymasz również odpowiedź o treści PONG. Jeśli to widzisz, oznacza to, że pomyślnie ukończyłeś pierwszy krok. Szczegółowy przewodnik dotyczący instalacji i zabezpieczania Redis znajdziesz w naszym samouczku Jak zainstalować i zabezpieczyć Redis na Ubuntu 18.04.

Następnie przejdźmy do kolejnego kroku – konfiguracji Redis.

Krok 2 — Konfiguracja Redis do akceptowania połączeń zewnętrznych

Głównym celem konfiguracji Redis jest akceptowanie połączeń przychodzących z zewnątrz. Dlaczego? Ponieważ Redis domyślnie zezwala na połączenia tylko do localhost, i istnieje ograniczenie uniemożliwiające łączenie się z jakiegokolwiek innego miejsca. Mówiąc prościej, będziesz mieć dostęp tylko z wnętrza serwera, na którym zainstalowano Redis.

Najpierw uzyskaj szczegółowe informacje o swoich interfejsach sieciowych za pomocą polecenia ifconfig:

Otrzymasz następujący wynik:

Na eth1 interfejsie znajdziesz inet_addr. Tutaj mamy 10.133.14.9. Użyjemy tego adresu IP w kolejnych krokach, aby połączyć się z serwerem redis z poziomu serwera web.

Krok 3 — Powiązanie z localhost

Możesz użyć dowolnego edytora kodu (najpopularniejsze to Atom i Visual Studio Code).

Teraz otwórz plik /etc/redis/redis.conf i znajdź linię zawierającą definicję bind. Powinieneś dodać swój adres IP sieci prywatnej do tej linii:

Możesz zobaczyć localhost, zamiast 127.0.0.1. Bez obaw, musisz po prostu dodać swój prywatny adres IP. Następnie zrestartuj usługę Redis, aby zastosować zmiany. Użyj poniższego polecenia, aby zrestartować serwer redis:

Użytkownicy, którzy zainstalowali Redis za pomocą aplikacji jednym kliknięciem, powinni użyć poniższego polecenia, aby zrestartować serwer:

Po zrestartowaniu serwera redis, każdy serwer znajdujący się w tej samej sieci prywatnej automatycznie połączy się z tą instancją Redis, bez konieczności robienia tego indywidualnie.

Krok 4 — Konfiguracja hasła serwera Redis

Możesz pominąć ten krok, jeśli używasz instalacji Redis do celów ćwiczeniowych lub szkoleniowych. Jednak ustawienie hasła dla serwera redis jest wysoce zalecane, jeśli chcesz dodać dodatkową warstwę zabezpieczeń do swojej instalacji Redis. Zmodyfikujmy ten sam plik konfiguracyjny, co w poprzednim kroku. Użyj polecenia do edycji:

Odkomentuj linię zawierającą requirepass i ustaw silne hasło:

Zrestartuj usługę Redis, aby odzwierciedlić wprowadzone zmiany. Użyj polecenia, aby zrestartować:

Krok 5 — Testowanie połączenia i uwierzytelniania Redis

W tym kroku połączymy się z usługą Redis z wnętrza maszyny redis, aby upewnić się, że wszystkie wprowadzone zmiany działają bezproblemowo, zgodnie z oczekiwaniami. Aby się połączyć, użyj poniższego polecenia:

W tym miejscu, nawet jeśli pominiesz podanie nazwy hosta, polecenie i tak się uruchomi. Naszym głównym celem jest upewnienie się, że usługa Redis bezproblemowo akceptuje połączenia:

Możliwe, że otrzymasz błąd AUTH podczas próby uzyskania dostępu do danych przy użyciu zdefiniowanego hasła:

Twój wynik będzie wyglądał podobnie do tego:

Aby się uwierzytelnić, uruchom polecenie AUTH wraz z tym samym hasłem, które zostało zdefiniowane w pliku /etc/redis/redis.conf file:

Następnie uruchom polecenie ponownie:

Tym razem otrzymasz odpowiedź OK zamiast błędu. Otrzymasz wynik jak poniżej:

Wynik empty list lub set oznacza, że serwer Redis jest pusty. Dzieje się tak, ponieważ nie skonfigurowaliśmy jeszcze serwera WWW jako mechanizmu obsługi sesji.

Note: Przed przejściem dalej upewnij się, że sesja SSH jest otwarta i połączona z redis-cli. W kolejnych krokach powrócimy do wiersza poleceń redis-cli, aby zweryfikować, czy dane sesji zostały poprawnie zapisane po wprowadzeniu niezbędnych zmian na serwerze web server.

Step 6 — Redis Extension Installation on the Web Server

Kolejne kroki należy wykonać na serwerze web server. Musimy zainstalować rozszerzenie PHP Redis, aby PHP mogło połączyć się z serwerem Redis.

Najpierw zaktualizuj pamięć podręczną menedżera pakietów, uruchamiając polecenie:

Następnie zainstaluj pakiet php5-redis package:

Wszystko jest gotowe do połączenia z Redis.

Step 7 — Redis Set-up as the Default Session Handler on the Web Server

PHP posiada domyślny mechanizm obsługi sesji. W tym kroku zmodyfikujemy plik php.ini na serwerze web, aby zmienić domyślne ustawienia. Lokalizacja pliku php.ini zależy od używanego środowiska:

  • W przypadku środowiska LAMP na Ubuntu 20.04 użyj: /etc/php5/apache2/php.ini.

  • W przypadku środowiska LEMP na Ubuntu 20.04 ścieżka to zazwyczaj /etc/php5/fpm/php.ini.

Jeśli nie masz pewności co do lokalizacji głównego pliku php.ini, skorzystaj z funkcji phpinfo(). Umieść następujący kod w pliku o nazwie info.php w swoim głównym katalogu dokumentów (web root):

Podczas próby uzyskania dostępu do skryptu z poziomu przeglądarki, wyszukaj wiersz zawierający „Loaded Configuration File”. Znajdziesz tam dokładną lokalizację załadowanego głównego pliku php.ini. Pamiętaj, aby usunąć plik info.php, ponieważ zawiera on poufne informacje o Twoim środowisku.

Następnie otwórz plik php.ini i znajdź linię zawierającą session.save_handler. Domyślną wartością będzie files, upewnij się, że zmienisz ją na redis.

W środowiskach LAMP:

W środowiskach LEMP:

Następnie odkomentuj session.save_path i zmodyfikuj wartość, aby zawierała ciąg połączenia Redis. Treść musi być zgodna z poniższym formatem:

Użyj hasła ustawionego w Kroku 4. W przypadku, gdy nie używasz ustawionego hasła, podaj parametr auth podczas konfiguracji Redis. Teraz zapisz plik i zrestartuj usługę php usługę w obu środowiskach.

W środowiskach LAMP :

W środowiskach LEMP :

Krok 8 — Testowanie obsługi sesji przez Redis

W ostatnim kroku potrzebujemy skryptu lub aplikacji PHP, aby upewnić się, że Twoje sesje są teraz obsługiwane przez Redis. Użyjemy prostego skryptu, który implementuje licznik – za każdym razem, gdy odświeżysz stronę, wyświetlana liczba jest zwiększana.

Utwórz plik o nazwie demo.php na serwerze web i umieść go w swoim głównym katalogu dokumentów:

Następnie zmień /usr/share/nginx/html tak, aby odzwierciedlało ścieżkę do Twojego głównego katalogu dokumentów:

Następnie musisz skierować swoją przeglądarkę na http://web/demo.php aby uzyskać dostęp do skryptu. Program będzie zwiększał liczbę przy każdym przeładowaniu strony.

Teraz informacje o sesji będą przechowywane na serwerze Redis. Aby to zweryfikować, musisz wrócić do swojej sesji SSH na maszynie redis za pomocą redis-cli. Pobierz zawartość ponownie za pomocą keys *:

Zobaczysz poniższe dane wyjściowe:

Dane wyjściowe potwierdzają, że wszystkie informacje są bezpiecznie przechowywane na serwerze redis. Jeśli chcesz podłączyć dodatkowe serwery web, możesz postąpić w ten sam sposób.

Podsumowanie

Redis to baza danych NoSQL, która umożliwia przechowywanie licznych nieustrukturyzowanych danych. Niewiele baz danych może równać się z funkcjonalnością i prostotą serwera redis. Jego rosnąca popularność sprawia, że staje się on niezbędnym narzędziem, mającym niewiele zamienników o tak szerokich możliwościach.

Aby pogłębić swoją wiedzę na temat aplikacji PHP i sposobu ich używania, możesz zapoznać się z następującymi poradnikami na naszym blogu:

Miłej pracy!

author

Shreyas Patil

Autor · CloudSigma

Preslav Dobrev jest projektantem kreatywnym w CloudSigma, skupiającym się na spójnej tożsamości biznesowej przy wykorzystaniu tradycyjnych i innowacyjnych kanałów marketingowych. Biegle łączy wizję artystyczną ze strategicznym marketingiem, tworząc wywierające wpływ narracje marki.

Komentarze

Brak komentarzy. Bądź pierwszy.