Brad Fitzpatrick desenvolveu o Memcached em 2003 para o site LiveJournal como um poderoso sistema de cache de código aberto para melhorar o desempenho de aplicativos web dinâmicos, reduzindo a carga do banco de dados. Desde então, tornou-se vital para muitos sites e aplicativos de alto tráfego. Antes de instalarmos o Memcached no Debian 12 Bookworm, Debian 11 Bullseye ou Debian 10 Buster, vamos examinar alguns pontos-chave sobre o Memcached abaixo.
Principais recursos e benefícios:
- Escalabilidade: O Memcached, que lida com milhões de operações por segundo, é ideal para aplicações e serviços web em grande escala.
- Cache Distribuído: Com uma arquitetura de cache distribuída, o Memcached permite escalonamento horizontal em vários servidores, expandindo a capacidade geral do cache.
- Armazenamento na memória: Como um armazenamento de valores-chave na memória, o Memcached garante acesso rápido aos dados armazenados em cache, diminuindo significativamente a latência em sistemas de armazenamento baseados em disco.
- API simples: Memcached fornece uma API simples que oferece suporte a várias linguagens de programação, incluindo PHP, Python, Ruby e outras.
- Expiração do cache: O sistema permite que os desenvolvedores definam prazos de expiração para dados armazenados em cache, facilitando a remoção automática de dados desatualizados ou obsoletos do cache.
- Leve: Com sobrecarga mínima de CPU e memória, o Memcached é executado com eficiência em várias configurações de servidor, sem esgotar significativamente os recursos do sistema.
- Tipos de dados flexíveis: O Memcached acomoda vários tipos de dados, como strings, números inteiros e objetos complexos, tornando-o versátil para diversos casos de uso.
O guia a seguir irá orientá-lo no processo de instalação do Memcached no Debian usando dois métodos: o repositório Debian padrão para a versão mais estável ou baixando e compilando o binário mais recente para aqueles que preferem trabalhar com a versão mais recente.
Método 1: instalar o Memcached por meio do repositório APT padrão
Nesta seção, instalaremos o Memcached em seu sistema Debian Linux usando o gerenciador de pacotes APT. Isso envolve atualizar os pacotes do sistema e instalar o Memcached com algumas ferramentas úteis.
Atualize seu sistema Debian antes da instalação do Memcached
Para garantir que você tenha as versões de pacotes e atualizações de segurança mais recentes, comece atualizando seu sistema Debian. Execute o seguinte comando:
sudo apt update && sudo apt upgrade
Este comando atualizará sua lista de pacotes e atualizará os pacotes desatualizados para suas versões mais recentes.
Instale as ferramentas Memcached e Libmemcached
O Debian inclui Memcached em seus repositórios padrão, simplificando a instalação. Para instalar o Memcached, execute o seguinte comando:
sudo apt install memcached libmemcached-tools
Este comando instala o Memcached e o libmemcached-tools
pacote. O libmemcached-tools
O pacote fornece utilitários de linha de comando adicionais que permitem mais recursos de interação e gerenciamento com o Memcached.
Método 2: Instale o Memcached via fonte
Esta seção cobre a instalação do Memcached em seu sistema Debian compilando-o a partir do código-fonte. A instalação a partir da fonte pode ser benéfica se você quiser usar a versão mais recente do Memcached ou personalizar a compilação para requisitos específicos.
Baixe a fonte do Memcached
Primeiro, visite o Memcached última página de lançamento para encontrar a versão atual. Use o seguinte wget
comando para baixá-lo diretamente:
wget https://memcached.org/latest
Extraia o arquivo de origem do Memcached
Em seguida, extraia o código-fonte baixado executando o seguinte comando:
tar -xvf latest
Antes de continuar, navegue até o diretório extraído. O nome do diretório depende da versão baixada:
cd memcached-{place version number here}
Substituir {version_number}
com o número da versão real.
Instale os pacotes iniciais necessários para compilar o Memcached
Antes de compilar o Memcached, você precisa instalar as dependências de compilação necessárias. Execute o seguinte comando para instalá-los:
sudo apt install build-essential libevent-dev gcc make libc6-dev
Os pacotes instalados servem aos seguintes propósitos:
gcc
: um compilador C conhecido para os arquivos de origem do Memcached.make
: Direciona a compilação.libc6-dev
: fornece uma referência à biblioteca GNU C e aos arquivos de cabeçalho.libevent-dev
: contém arquivos de desenvolvimento para notificação de eventos assíncronos.
Configurar a instalação
Use o --prefix=
parâmetro para definir o diretório onde os binários e bibliotecas do Memcached serão instalados:
./configure --prefix=/usr/local
Compilar código-fonte do Memcached
Compile o código-fonte do Memcached com o make
comando:
make
Teste o Memcached confirmando a versão atual:
./memcached --version
Instale o Memcached através do comando 'make install'
Assim que o processo de compilação for concluído, instale o Memcached executando o seguinte comando:
sudo make install
Este comando instala o Memcached em seu sistema, tornando-o acessível na linha de comando. Para garantir que o sistema reconheça as novas bibliotecas, execute o seguinte:
sudo ldconfig
Verifique a instalação do Memcached
Para verificar se o Memcached foi instalado com sucesso, execute o seguinte comando:
memcached -V
Este comando exibirá a versão instalada do Memcached, confirmando a instalação bem-sucedida do código-fonte.
Crie um serviço Systemd para Memcached
Quando você instala o Memcached a partir da fonte, ele não cria automaticamente um arquivo de serviço systemd. Para executar o Memcached como um serviço e gerenciá-lo usando systemctl
, você precisa criar um arquivo de serviço systemd personalizado para Memcached. Siga estas etapas para criar e ativar o serviço:
Crie um novo arquivo chamado memcached.service
no /etc/systemd/system
diretório usando um editor de texto de sua escolha. Neste exemplo, usaremos nano
:
sudo nano /etc/systemd/system/memcached.service
Adicione o seguinte conteúdo ao memcached.service
arquivo:
[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
Salve o arquivo e saia do editor de texto.
Criar uma memcache
usuário e grupo para executar o serviço com segurança:
sudo useradd -r -s /sbin/nologin -U -M memcache
Recarregue a configuração do systemd para reconhecer o novo arquivo de serviço:
sudo systemctl daemon-reload
Por último, inicie o serviço:
sudo systemctl enable memcached --now
Gerenciando o status do serviço Memcached
Esta seção cobrirá o gerenciamento do serviço Memcached em seu sistema Debian. Isso inclui verificar o status do serviço, iniciar e interromper o serviço e configurá-lo para ser executado na inicialização do sistema.
Verifique o status do serviço Memcached
Por padrão, o Memcached deve estar em execução após a instalação. Para verificar seu status, use o systemctl
comando da seguinte forma:
systemctl status memcached
Este comando exibirá o status atual do serviço Memcached.
Inicie o serviço Memcached
Se o Memcached não estiver em execução, você poderá iniciar o serviço com o seguinte comando:
sudo systemctl start memcached
Habilite o Memcached na inicialização do sistema
Para garantir que o serviço Memcached seja iniciado automaticamente quando o sistema for inicializado, use o seguinte comando:
sudo systemctl enable memcached
Pare o serviço Memcached
Se precisar interromper o serviço Memcached, use este comando:
sudo systemctl stop memcached
Desative o Memcached na inicialização do sistema
Para evitar que o serviço Memcached seja iniciado automaticamente na inicialização do sistema, execute o seguinte comando:
sudo systemctl disable memcached
Reinicie o serviço Memcached
Se precisar reiniciar o serviço Memcached, por exemplo, após fazer alterações na configuração, use este comando:
sudo systemctl restart memcached
Verifique se o Memcached está escutando na porta padrão
Por último, verifique se o Memcached está escutando ativamente no host local usando a porta padrão 11211
. Para confirmar isso, execute o seguinte comando:
ps -ef | grep memcached
A saída deve exibir uma linha indicando que o Memcached está em execução e escutando na porta especificada, semelhante a esta:
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
Configurar dicas do Memcached
Esta seção abordará a definição das configurações do Memcached editando o arquivo memcached.conf
arquivo. Discutiremos o ajuste do endereço IP de escuta, a desativação do UDP e a alteração da alocação de memória padrão.
Abra o arquivo de configuração do Memcached
Abra o arquivo de configuração do Memcached localizado em /etc/memcached.conf
usando um editor de texto, como nano
:
sudo nano /etc/memcached.conf
Os usuários que compilaram o Memcached a partir do código-fonte precisarão criá-lo quando você abri-lo pela primeira vez; o arquivo ficará em branco comparado ao método APT; você pode copiar isto para começar a ajustar:
# 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
Ajuste o endereço IP de escuta
Por padrão, o Memcached escuta o endereço IP 127.0.0.1. Verifique o parâmetro -l no arquivo de configuração e certifique-se de que esteja definido com o endereço IP correto. Se você precisar modificar o endereço IP, substitua 127.0.0.1
com o novo endereço IP:
-l 127.0.0.1
Desabilitar UDP (opcional)
Se você não precisar de suporte UDP, é recomendável desativá-lo. Para desabilitar o UDP, adicione a seguinte linha ao arquivo de configuração:
-U 0
Configurar a alocação de memória
A alocação de memória padrão para Memcached é 64 MB, o que pode não ser suficiente para sites maiores. Considere ajustar a alocação de memória para um valor mais alto para maximizar o Memcached.
Para definir a alocação de memória, encontre o -m
parâmetro no arquivo de configuração e substitua o valor padrão pela quantidade desejada (em MB). Por exemplo, para alocar 2 GB de memória, defina o valor como 2000
:
-m 2000
Ajuste essa configuração com base na memória disponível e nos requisitos do seu servidor.
Salvar e reiniciar o Memcached
Após fazer as alterações necessárias, salve o arquivo de configuração pressionando CTRL+O
, seguido pela Y
, e então CTRL+X
para sair do editor de texto. Por fim, reinicie o serviço Memcached para que as alterações tenham efeito:
sudo systemctl restart memcached
Exemplos adicionais de configuração do Memcached
Além das opções de configuração abordadas anteriormente, existem várias outras configurações que você pode ajustar para ajustar o Memcached de acordo com seus requisitos. Aqui estão alguns exemplos, juntamente com breves demonstrações:
Especifique o usuário e o grupo
Memcached é executado sob um usuário e grupo específicos especificados usando o -u
parâmetro. Por exemplo, para executar o Memcached como o memcache
usuário, adicione a seguinte linha ao arquivo de configuração:
-u memcache
Habilitar páginas de memória grande
A ativação deste recurso pode melhorar o desempenho se o seu sistema suportar páginas de memória grandes. Para ativar páginas de memória grandes, encontre o -L
parâmetro e descomente-o (remova o #
no início da linha):
-L
Configure o tamanho máximo do item
O Memcached tem um tamanho máximo de item padrão de 1 MB. Para aumentar o tamanho máximo do item, use o -I
parâmetro seguido do tamanho desejado. Por exemplo, para definir o tamanho máximo do item como 5 MB, adicione a seguinte linha ao arquivo de configuração:
-I 5m
Defina o número máximo de threads
Memcached usa quatro threads por padrão. Você pode usar o parâmetro para aumentar ou diminuir o número de threads de acordo com as capacidades e carga de trabalho do seu servidor. Por exemplo, para definir o número de threads como 8, adicione a seguinte linha:
-t 8
Configurar o tempo limite de inatividade
O Memcached fecha automaticamente conexões ociosas após um certo período de inatividade. Para modificar o tempo limite de inatividade, use o -o
parâmetro seguido por idle_timeout
e o número desejado de segundos. Por exemplo, para definir o tempo limite de inatividade para 600 segundos (10 minutos), adicione a seguinte linha:
-o idle_timeout=600
Habilitar autenticação SASL
Você pode ativar o suporte SASL (Simple Authentication and Security Layer) se precisar de autenticação para acessar seu servidor Memcached. Para habilitar SASL, encontre o -S
parâmetro e descomente-o (remova o #
no início da linha):
-S
Lembre-se de sempre reiniciar o serviço Memcached após fazer alterações no arquivo de configuração:
sudo systemctl restart memcached
Instale o Firewall UFW para Memcached
Para garantir a segurança da sua instância do Memcached, é crucial configurar corretamente as regras do seu firewall. Esta seção abordará como instalar e configurar o Uncomplicated Firewall (UFW) para proteger seu servidor Memcached.
Verifique se o UFW está instalado
Primeiro, vamos verificar se o UFW já está instalado no seu sistema Debian:
sudo ufw --version
Se o UFW estiver instalado, você verá o número da versão na saída. Caso contrário, você precisará instalá-lo.
Instale o UFW no Debian para Memcached
Para instalar o UFW em seu sistema Debian, execute o seguinte comando:
sudo apt install ufw
Após a conclusão da instalação, habilite o UFW com o seguinte comando:
sudo ufw enable
Configurar regras UFW para Memcached
Agora que o UFW está instalado e habilitado, você deve criar regras de permissão na porta TCP 11211. As regras criadas dependerão de sua instalação e requisitos, seja usando uma única conexão de rede IP ou trabalhando com múltiplas instâncias em uma rede de cluster.
Exemplo de conexão de rede IP única
Permita acesso ao Memcached a partir de um endereço IP específico:
sudo ufw allow proto tcp from <ip_address> to any port 11211
Exemplo de conexão de rede IP de cluster com múltiplas instâncias
Permita acesso ao Memcached de uma sub-rede de endereços IP:
sudo ufw allow proto tcp from <ip_address>/24 to any port 11211
Observe que a segunda regra UFW é uma regra de sub-rede. Certifique-se de que a rede interna seja segura e confiável antes de permitir o acesso.
Etapa 4: verifique as regras do UFW
Depois de configurar as regras apropriadas, verifique se elas estão configuradas corretamente listando as regras atuais do UFW:
sudo ufw status
A saída deve exibir as regras configuradas, garantindo que sua instância do Memcached esteja protegida com UFW.
Instale bibliotecas Memcached
Memcached oferece extensões para diversas linguagens de programação, mas é mais comumente usado com PHP. Esta seção irá guiá-lo na instalação de bibliotecas Memcached para PHP, Python e Perl e na configuração do Memcached para servidores web Apache e Nginx.
Instale bibliotecas PHP para Memcached
Para instalar a biblioteca PHP para Memcached, execute o seguinte comando:
sudo apt install php-memcached libapache2-mod-php php php-cli
Configurar Memcached para servidor HTTP Apache
Se você estiver usando o servidor Apache HTTP, habilite o módulo Memcached executando o seguinte comando:
sudo phpenmod memcached && sudo systemctl restart apache2
Configurar Memcached para servidor HTTP Nginx
O suporte Memcached será habilitado por padrão em seu bloco de configuração PHP assim que a biblioteca PHP for instalada para usuários Nginx.
Abaixo está um exemplo simples de bloco de servidor 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;
}
}
Instale a biblioteca Python para Memcached
Para instalar o suporte Python para Memcached, execute o seguinte comando:
sudo apt install python3-pymemcache
Instale a biblioteca Perl para Memcached
Para instalar o suporte Perl para Memcached, execute o seguinte comando:
sudo apt install libcache-memcached-libmemcached-perl
Acesse o Memcached pela linha de comando
O Memcached pode ser monitorado e gerenciado por meio de vários softwares e interfaces de usuário da web. No entanto, interagir diretamente com o Memcached usando a linha de comando costuma ser o método mais direto para verificar seu desempenho e gerenciar seu conteúdo.
Primeiro, conecte-se ao seu serviço Memcached usando telnet:
telnet localhost 11211
Exemplo de saída:
Tentando 127.0.0.1... Conectado ao host local. O caractere de escape é '^]'.
A seguir, você pode obter uma visão geral do seu serviço Memcached com o seguinte comando:
stats
Este comando retornará várias estatísticas sobre sua instância do Memcached, como tempo de atividade, número de itens no cache e número de conexões de cliente.
Você pode refinar sua análise examinando placas Memcached (partições de memória). Por exemplo, você pode listar as lajes na instância conectada com:
stats slabs
E obtenha uma lista de lajes, incluindo uma contagem dos itens armazenados em cada laje, usando:
stats items
Para acessar e manipular dados armazenados no Memcached, você pode usar o cachedump
comando para listar as chaves. Para listar todos os itens de uma laje específica, execute o seguinte comando:
stats cachedump [slab ID] [number of items, 0 for all items]
Por exemplo:
stats cachedump 1 0
Exemplo de saída:
Chave de teste do ITEM [9 b; 1296857316s] FIM
Neste exemplo, a placa 1 contém um item com a chave “testkey”. Para recuperar o valor deste item, use o get
comando:
get testkey
Exemplo de saída:
VALUE testkey 0 9 dados de teste END
Finalmente, para excluir um item em cache, como “testkey”, use o seguinte comando:
delete testkey
Exemplo de saída:
EXCLUÍDO
Conclusão
Concluindo, instalar e configurar o Memcached no Debian Linux pode melhorar significativamente o desempenho de suas aplicações web, fornecendo um sistema de cache rápido, eficiente e fácil de usar. Seguindo as etapas descritas neste guia, você pode configurar o Memcached com êxito, configurá-lo com seu servidor web preferido e protegê-lo usando UFW. Com configuração e gerenciamento adequados, o Memcached pode se tornar essencial para otimizar suas aplicações e proporcionar uma melhor experiência ao usuário.