Brad Fitzpatrick opracował Memcached w 2003 roku dla witryny LiveJournal jako potężny system buforowania typu open source, pozwalający zwiększyć wydajność dynamicznych aplikacji internetowych poprzez zmniejszenie obciążenia bazy danych. Od tego czasu stało się ono niezbędne w przypadku wielu witryn i aplikacji o dużym natężeniu ruchu. Zanim zainstalujemy Memcached na Debianie 12 Bookworm, Debianie 11 Bullseye lub Debianie 10 Buster, przeanalizujmy poniżej kilka kluczowych punktów na temat Memcached.
Kluczowe cechy i zalety:
- Skalowalność: Memcached, obsługujący miliony operacji na sekundę, idealnie nadaje się do aplikacji i usług internetowych na dużą skalę.
- Rozproszone buforowanie: Dzięki architekturze rozproszonego buforowania Memcached umożliwia skalowanie w poziomie na wielu serwerach, zwiększając ogólną pojemność pamięci podręcznej.
- Przechowywanie w pamięci: Jako magazyn klucz-wartość w pamięci, Memcached zapewnia szybki dostęp do danych w pamięci podręcznej, znacznie zmniejszając opóźnienia w dyskowych systemach pamięci masowej.
- Proste API: Memcached zapewnia proste API, które obsługuje różne języki programowania, w tym PHP, Python, Ruby i inne.
- Wygaśnięcie pamięci podręcznej: System umożliwia programistom ustawienie czasów wygaśnięcia danych w pamięci podręcznej, ułatwiając automatyczne usuwanie nieaktualnych lub nieaktualnych danych z pamięci podręcznej.
- Lekki: Przy minimalnym obciążeniu procesora i pamięci, Memcached skutecznie działa na różnych konfiguracjach serwerów bez znacznego obciążania zasobów systemowych.
- Elastyczne typy danych: Memcached obsługuje różne typy danych, takie jak ciągi znaków, liczby całkowite i obiekty złożone, dzięki czemu jest wszechstronny w różnorodnych przypadkach użycia.
Poniższy przewodnik przeprowadzi Cię przez proces instalacji Memcached na Debianie przy użyciu dwóch metod: domyślnego repozytorium Debiana dla najbardziej stabilnej wersji lub pobrania i skompilowania najnowszego pliku binarnego dla tych, którzy wolą pracować z najnowszą wersją.
Metoda 1: Zainstaluj Memcached poprzez domyślne repozytorium APT
W tej sekcji zainstalujemy Memcached w systemie Debian Linux przy użyciu menedżera pakietów APT. Wiąże się to z aktualizacją pakietów systemowych i instalacją Memcached za pomocą kilku przydatnych narzędzi.
Zaktualizuj swój system Debian przed instalacją Memcached
Aby mieć pewność, że masz najnowsze wersje pakietów i aktualizacje zabezpieczeń, zacznij od aktualizacji systemu Debian. Uruchom następujące polecenie:
sudo apt update && sudo apt upgrade
To polecenie zaktualizuje listę pakietów i zaktualizuje nieaktualne pakiety do ich najnowszych wersji.
Zainstaluj narzędzia Memcached i Libmemcached-tools
Debian zawiera Memcached w swoich domyślnych repozytoriach, co ułatwia instalację. Aby zainstalować Memcached, uruchom następujące polecenie:
sudo apt install memcached libmemcached-tools
To polecenie instaluje zarówno Memcached, jak i libmemcached-tools
pakiet. The libmemcached-tools
Pakiet zapewnia dodatkowe narzędzia wiersza poleceń, które umożliwiają większą interakcję i możliwości zarządzania z Memcached.
Metoda 2: Zainstaluj Memcached ze źródła
W tej sekcji opisano instalację Memcached w systemie Debian poprzez kompilację go z kodu źródłowego. Instalacja ze źródła może być korzystna, jeśli chcesz używać najnowszej wersji Memcached lub dostosować kompilację do konkretnych wymagań.
Pobierz źródło Memcached
Najpierw odwiedź Memcached strona z najnowszym wydaniem aby znaleźć aktualną wersję. Skorzystaj z poniższych wget
polecenie, aby pobrać go bezpośrednio:
wget https://memcached.org/latest
Wyodrębnij archiwum źródłowe Memcached
Następnie wyodrębnij pobrany kod źródłowy, uruchamiając następującą komendę:
tar -xvf latest
Zanim będziesz kontynuować, przejdź do wyodrębnionego katalogu. Nazwa katalogu zależy od pobranej wersji:
cd memcached-{place version number here}
Zastępować {version_number}
z rzeczywistym numerem wersji.
Zainstaluj pakiety początkowe wymagane do kompilacji Memcached
Przed skompilowaniem Memcached musisz zainstalować niezbędne zależności kompilacji. Uruchom następujące polecenie, aby je zainstalować:
sudo apt install build-essential libevent-dev gcc make libc6-dev
Zainstalowane pakiety służą następującym celom:
gcc
: Dobrze znany kompilator C dla plików źródłowych Memcached.make
: Kieruje kompilacją.libc6-dev
: Zawiera odniesienie do biblioteki GNU C i plików nagłówkowych.libevent-dev
: Zawiera pliki programistyczne do asynchronicznego powiadamiania o zdarzeniach.
Skonfiguruj instalację
Użyj --prefix=
parametr ustawiający katalog, w którym zostaną zainstalowane pliki binarne i biblioteki Memcached:
./configure --prefix=/usr/local
Skompiluj kod źródłowy Memcached
Skompiluj kod źródłowy Memcached za pomocą pliku make
Komenda:
make
Przetestuj Memcached, potwierdzając aktualną wersję:
./memcached --version
Zainstaluj Memcached za pomocą polecenia „make install”.
Po zakończeniu procesu kompilacji zainstaluj Memcached, uruchamiając następującą komendę:
sudo make install
To polecenie instaluje Memcached w twoim systemie, udostępniając go z wiersza poleceń. Aby upewnić się, że system rozpoznaje nowe biblioteki, uruchom następujące polecenie:
sudo ldconfig
Sprawdź instalację Memcached
Aby sprawdzić, czy Memcached został pomyślnie zainstalowany, uruchom następujące polecenie:
memcached -V
To polecenie wyświetli zainstalowaną wersję Memcached, potwierdzając pomyślną instalację z kodu źródłowego.
Utwórz usługę systemową dla Memcached
Kiedy instalujesz Memcached ze źródła, nie tworzy on automatycznie pliku usługi systemowej. Aby uruchomić Memcached jako usługę i zarządzać nią za pomocą systemctl
, musisz utworzyć niestandardowy plik usługi systemowej dla Memcached. Wykonaj poniższe kroki, aby utworzyć i włączyć usługę:
Utwórz nowy plik o nazwie memcached.service
w /etc/systemd/system
katalogu za pomocą wybranego edytora tekstu. W tym przykładzie użyjemy nano
:
sudo nano /etc/systemd/system/memcached.service
Dodaj następującą zawartość do pliku memcached.service
plik:
[Unit]
Description=Memcached Service
After=network.target
[Service]
Type=simple
User=memcache
Group=memcache
ExecStart=/usr/local/bin/memcached /etc/memcached.conf
Restart=always
[Install]
WantedBy=multi-user.target
Zapisz plik i wyjdź z edytora tekstu.
Stwórz memcache
użytkownika i grupę, aby bezpiecznie uruchomić usługę:
sudo useradd -r -s /sbin/nologin -U -M memcache
Załaduj ponownie konfigurację systemową, aby rozpoznać nowy plik usługi:
sudo systemctl daemon-reload
Na koniec uruchom usługę:
sudo systemctl enable memcached --now
Zarządzanie statusem usługi Memcached
W tej sekcji omówione zostanie zarządzanie usługą Memcached w systemie Debian. Obejmuje to sprawdzanie statusu usługi, uruchamianie i zatrzymywanie usługi oraz konfigurowanie jej do uruchamiania podczas uruchamiania systemu.
Sprawdź status usługi Memcached
Domyślnie Memcached powinien działać po instalacji. Aby sprawdzić jego status, użyj przycisku systemctl
polecenie w następujący sposób:
systemctl status memcached
To polecenie wyświetli bieżący stan usługi Memcached.
Uruchom usługę Memcached
Jeśli Memcached nie jest uruchomiony, możesz uruchomić usługę za pomocą następującego polecenia:
sudo systemctl start memcached
Włącz Memcached podczas uruchamiania systemu
Aby mieć pewność, że usługa Memcached uruchomi się automatycznie podczas uruchamiania systemu, użyj następującego polecenia:
sudo systemctl enable memcached
Zatrzymaj usługę Memcached
Jeśli chcesz zatrzymać usługę Memcached, użyj tego polecenia:
sudo systemctl stop memcached
Wyłącz Memcached podczas uruchamiania systemu
Aby zapobiec automatycznemu uruchamianiu usługi Memcached podczas uruchamiania systemu, uruchom następującą komendę:
sudo systemctl disable memcached
Uruchom ponownie usługę Memcached
Jeśli chcesz ponownie uruchomić usługę Memcached, na przykład po dokonaniu zmian w konfiguracji, użyj tego polecenia:
sudo systemctl restart memcached
Sprawdź, czy Memcached nasłuchuje na porcie domyślnym
Na koniec sprawdź, czy Memcached aktywnie nasłuchuje na hoście lokalnym, używając portu domyślnego 11211
. Aby to potwierdzić, uruchom następujące polecenie:
ps -ef | grep memcached
W wynikach powinna zostać wyświetlona linia wskazująca, że Memcached działa i nasłuchuje na określonym porcie, podobnie do poniższego:
memcache 5934 1 0 09:36 ? 00:00:00 /usr/bin/memcached -m 64 -p 11211 -u memcache -l 127.0.0.1 -P /var/run/memcached/memcached.pid
root 6591 3653 0 09:55 pts/0 00:00:00 grep memcached
Skonfiguruj wskazówki Memcached
W tej sekcji opisano konfigurowanie ustawień Memcached poprzez edycję pliku memcached.conf
plik. Omówimy dostosowanie adresu IP nasłuchującego, wyłączenie UDP i zmianę domyślnej alokacji pamięci.
Otwórz plik konfiguracyjny Memcached
Otwórz plik konfiguracyjny Memcached znajdujący się pod adresem /etc/memcached.conf
za pomocą edytora tekstu, np nano
:
sudo nano /etc/memcached.conf
Użytkownicy, którzy skompilowali Memcached ze źródeł, będą musieli go utworzyć, więc przy pierwszym otwarciu; plik będzie pusty w porównaniu z metodą APT; możesz to skopiować, aby rozpocząć dostosowywanie:
# Example memcached.conf file
# Start with a cap of 64 megs of memory. It's reasonable, and the daemon default
# Note that the daemon will grow to this size, but does not start out holding this much
# memory
-m 64
# Default port is 11211
-p 11211
# Run the daemon as a background process
-d
# Use syslog logging
-s
# Enable verbose logging
-vv
# Set the maximum number of simultaneous connections
-c 1024
Dostosuj adres IP nasłuchiwania
Domyślnie Memcached nasłuchuje adresu IP 127.0.0.1. Sprawdź parametr -l w pliku konfiguracyjnym i upewnij się, że jest ustawiony na prawidłowy adres IP. Jeśli chcesz zmodyfikować adres IP, wymień go 127.0.0.1
z nowym adresem IP:
-l 127.0.0.1
Wyłącz UDP (opcjonalnie)
Jeśli nie potrzebujesz obsługi UDP, zaleca się jej wyłączenie. Aby wyłączyć UDP, dodaj następujący wiersz do pliku konfiguracyjnego:
-U 0
Skonfiguruj alokację pamięci
Domyślna alokacja pamięci dla Memcached to 64 MB, co może nie być wystarczające w przypadku większych witryn. Rozważ zmianę alokacji pamięci na wyższą wartość, aby zmaksymalizować Memcached.
Aby ustawić alokację pamięci, znajdź -m
parametr w pliku konfiguracyjnym i zastąp wartość domyślną żądaną ilością (w MB). Na przykład, aby przydzielić 2 GB pamięci, ustaw wartość na 2000
:
-m 2000
Dostosuj to ustawienie w oparciu o dostępną pamięć i wymagania serwera.
Zapisz i uruchom ponownie Memcached
Po dokonaniu niezbędnych zmian zapisz plik konfiguracyjny naciskając CTRL+O
, śledzony przez Y
, i wtedy CTRL+X
aby wyjść z edytora tekstu. Na koniec uruchom ponownie usługę Memcached, aby zmiany zaczęły obowiązywać:
sudo systemctl restart memcached
Dodatkowe przykłady konfiguracji Memcached
Oprócz opcji konfiguracji omówionych wcześniej, istnieje kilka innych ustawień, które możesz dostosować, aby dostosować Memcached do swoich wymagań. Oto kilka przykładów wraz z krótkimi demonstracjami:
Określ użytkownika i grupę
Memcached działa pod określonym użytkownikiem i grupą określoną za pomocą -u
parametr. Na przykład, aby uruchomić Memcached jako plik memcache
użytkownik, dodaj następujący wiersz do pliku konfiguracyjnego:
-u memcache
Włącz strony o dużej pamięci
Włączenie tej funkcji może poprawić wydajność, jeśli system obsługuje strony o dużej pamięci. Aby włączyć strony o dużej pamięci, znajdź plik -L
parametr i odkomentuj go (usuń plik #
na początku linii):
-L
Skonfiguruj maksymalny rozmiar elementu
Memcached ma domyślny maksymalny rozmiar elementu wynoszący 1 MB. Aby zwiększyć maksymalny rozmiar elementu, użyj opcji -I
parametr, po którym następuje żądany rozmiar. Na przykład, aby ustawić maksymalny rozmiar elementu na 5 MB, dodaj następujący wiersz do pliku konfiguracyjnego:
-I 5m
Ustaw maksymalną liczbę wątków
Memcached domyślnie używa czterech wątków. Możesz użyć tego parametru, aby zwiększyć lub zmniejszyć liczbę wątków w zależności od możliwości i obciążenia serwera. Na przykład, aby ustawić liczbę wątków na 8, dodaj następujący wiersz:
-t 8
Skonfiguruj limit czasu bezczynności
Memcached automatycznie zamyka bezczynne połączenia po pewnym okresie bezczynności. Aby zmodyfikować limit czasu bezczynności, użyj opcji -o
parametr, po którym następuje idle_timeout
i żądaną liczbę sekund. Na przykład, aby ustawić limit czasu bezczynności na 600 sekund (10 minut), dodaj następujący wiersz:
-o idle_timeout=600
Włącz uwierzytelnianie SASL
Możesz włączyć obsługę SASL (proste uwierzytelnianie i warstwa zabezpieczeń), jeśli potrzebujesz uwierzytelnienia, aby uzyskać dostęp do serwera Memcached. Aby włączyć SASL, znajdź plik -S
parametr i odkomentuj go (usuń plik #
na początku linii):
-S
Pamiętaj, aby zawsze po dokonaniu zmian w pliku konfiguracyjnym uruchomić ponownie usługę Memcached:
sudo systemctl restart memcached
Zainstaluj zaporę UFW dla Memcached
Aby zapewnić bezpieczeństwo instancji Memcached, istotne jest prawidłowe skonfigurowanie reguł zapory sieciowej. W tej sekcji opisano, jak zainstalować i skonfigurować nieskomplikowaną zaporę sieciową (UFW), aby zabezpieczyć serwer Memcached.
Sprawdź, czy jest zainstalowany UFW
Najpierw sprawdźmy, czy UFW jest już zainstalowany w twoim systemie Debian:
sudo ufw --version
Jeśli zainstalowano UFW, na wyjściu zobaczysz numer jego wersji. Jeśli nie, musisz go zainstalować.
Zainstaluj UFW na Debianie dla Memcached
Aby zainstalować UFW w systemie Debian, uruchom następującą komendę:
sudo apt install ufw
Po zakończeniu instalacji włącz UFW za pomocą następującego polecenia:
sudo ufw enable
Skonfiguruj reguły UFW dla Memcached
Teraz, gdy UFW jest zainstalowany i włączony, musisz utworzyć reguły zezwalające na porcie TCP 11211. Utworzone reguły będą zależeć od instalacji i wymagań, niezależnie od tego, czy używasz pojedynczego połączenia sieciowego IP, czy pracujesz z wieloma instancjami w sieci klastrowej.
Przykład połączenia sieciowego z pojedynczym IP
Zezwól na dostęp do Memcached z określonego adresu IP:
sudo ufw allow proto tcp from <ip_address> to any port 11211
Przykładowe połączenie sieciowe klastra IP z wieloma instancjami
Zezwól na dostęp do Memcached z podsieci adresów IP:
sudo ufw allow proto tcp from <ip_address>/24 to any port 11211
Należy pamiętać, że druga reguła UFW jest regułą podsieci. Przed zezwoleniem na dostęp upewnij się, że sieć wewnętrzna jest bezpieczna i godna zaufania.
Krok 4: Sprawdź zasady UFW
Po skonfigurowaniu odpowiednich reguł sprawdź, czy są one poprawnie skonfigurowane, wypisując aktualne reguły UFW:
sudo ufw status
Dane wyjściowe powinny wyświetlić skonfigurowane reguły, zapewniając, że instancja Memcached jest zabezpieczona za pomocą UFW.
Zainstaluj biblioteki Memcached
Memcached oferuje rozszerzenia dla różnych języków programowania, ale najczęściej jest używany w PHP. Ta sekcja poprowadzi Cię przez instalację bibliotek Memcached dla PHP, Python i Perl oraz konfigurację Memcached dla serwerów WWW Apache i Nginx.
Zainstaluj biblioteki PHP dla Memcached
Aby zainstalować bibliotekę PHP dla Memcached, uruchom następującą komendę:
sudo apt install php-memcached libapache2-mod-php php php-cli
Skonfiguruj Memcached dla serwera Apache HTTP
Jeśli używasz serwera Apache HTTP, włącz moduł Memcached, wykonując następujące polecenie:
sudo phpenmod memcached && sudo systemctl restart apache2
Skonfiguruj Memcached dla serwera HTTP Nginx
Obsługa Memcached zostanie domyślnie włączona w bloku konfiguracyjnym PHP po zainstalowaniu biblioteki PHP dla użytkowników Nginx.
Poniżej znajduje się prosty przykład bloku serwera nginx:
server {
listen 80;
server_name example.com;
root /var/www/example.com;
index index.php index.html index.htm;
location / {
try_files $uri $uri/ /index.php?$args;
}
location ~ \.php$ {
include snippets/fastcgi-php.conf;
fastcgi_pass unix:/var/run/php/php7.4-fpm.sock;
}
location ~ /\.ht {
deny all;
}
}
Zainstaluj bibliotekę Pythona dla Memcached
Aby zainstalować obsługę Pythona dla Memcached, uruchom następującą komendę:
sudo apt install python3-pymemcache
Zainstaluj bibliotekę Perla dla Memcached
Aby zainstalować obsługę Perla dla Memcached, wykonaj następujące polecenie:
sudo apt install libcache-memcached-libmemcached-perl
Uzyskaj dostęp do Memcached z wiersza poleceń
Memcached można monitorować i zarządzać nim za pomocą różnych programów i internetowych interfejsów użytkownika. Jednak bezpośrednia interakcja z Memcachedem za pomocą wiersza poleceń jest często najprostszą metodą sprawdzania jego wydajności i zarządzania jego zawartością.
Najpierw połącz się z usługą Memcached za pomocą telnetu:
telnet localhost 11211
Przykładowe wyjście:
Próbuję 127.0.0.1... Połączono z localhost. Znak ucieczki to „^]”.
Następnie możesz uzyskać przegląd swojej usługi Memcached za pomocą następującego polecenia:
stats
To polecenie zwróci różne statystyki dotyczące Twojej instancji Memcached, takie jak czas pracy, liczba elementów w pamięci podręcznej i liczba połączeń klientów.
Możesz udoskonalić swoją analizę, sprawdzając płyty Memcached (partycje pamięci). Na przykład, możesz wyświetlić listę płyt w połączonym wystąpieniu za pomocą:
stats slabs
Uzyskaj listę płyt, w tym liczbę elementów przechowywanych w każdej płycie, używając:
stats items
Aby uzyskać dostęp do danych przechowywanych w Memcached i manipulować nimi, możesz użyć cachedump
polecenie, aby wyświetlić listę kluczy. Aby wyświetlić listę wszystkich pozycji w określonej płycie, wykonaj następujące polecenie:
stats cachedump [slab ID] [number of items, 0 for all items]
Na przykład:
stats cachedump 1 0
Przykładowe wyjście:
Klucz testowy ELEMENTU [9 b; 1296857316 s] KONIEC
W tym przykładzie płyta 1 zawiera jeden element z kluczem „testkey”. Aby pobrać wartość tego elementu, użyj metody get
Komenda:
get testkey
Przykładowe wyjście:
WARTOŚĆ klucz testowy 0 9 dane testowe KONIEC
Na koniec, aby usunąć element z pamięci podręcznej, taki jak „klucz testowy”, użyj następującego polecenia:
delete testkey
Przykładowe wyjście:
USUNIĘTE
Wniosek
Podsumowując, instalacja i konfiguracja Memcached w systemie Debian Linux może znacznie poprawić wydajność aplikacji internetowych, zapewniając szybki, wydajny i łatwy w użyciu system buforowania. Postępując zgodnie z instrukcjami opisanymi w tym przewodniku, możesz pomyślnie skonfigurować Memcached, skonfigurować go z preferowanym serwerem internetowym i zabezpieczyć za pomocą UFW. Przy odpowiedniej konfiguracji i zarządzaniu Memcached może stać się niezbędny w optymalizacji aplikacji i zapewnianiu lepszego doświadczenia użytkownika.