Установка Memcached на Debian 13, 12, 11: подробное руководство

Memcached — это высокопроизводительная система кэширования данных в оперативной памяти. Она используется для ускорения динамических веб-сайтов (WordPress, Drupal), хранения сессий PHP, кэширования результатов запросов API и других задач, где нужен быстрый доступ к часто запрашиваемым данным. Memcached не сохраняет данные на диск — всё хранится в RAM, и после перезагрузки сервера кэш очищается. Главные сложности для новичка: нужно понимать, что Memcached — это не база данных, а кэш; важно правильно настроить файрвол, если сервер должен принимать подключения с других машин; а также нужно выбрать способ установки: через APT (проще) или сборку из исходников (свежее).

💡 В этом руководстве вы установите Memcached на Debian двумя способами: через APT (рекомендованный) и сборкой из исходников (если нужна последняя версия). Вы также узнаете, как настроить кэш, управлять сервисом, установить библиотеки для PHP/Python/Perl и решить типичные проблемы.

В этой статье вы узнаете:

  • Как установить Memcached через APT (рекомендовано)
  • Как собрать Memcached из исходников (актуальная версия)
  • Как создать systemd-сервис для source-сборки
  • Как настроить Memcached: изменить порт, количество памяти, отключить UDP
  • Как установить расширения для PHP, Python, Perl
  • Как настроить UFW для удалённого доступа
  • Как управлять кэшем через командную строку (memcstat и telnet)
  • Как решить типичные проблемы: не запускается, подключение отклонено, ошибки памяти

Для кого: администраторы веб-серверов, разработчики, а также все, кто хочет ускорить динамические сайты на Debian 11, 12 или 13.

Оглавление

1. 🔧 Предварительные требования

Перед установкой убедитесь, что:

  • У вас установлена Debian 11, 12 или 13
  • Подключение к интернету стабильно
  • У вас есть права sudo

⚠️ ВАЖНО: Проверьте права sudo перед установкой

Если вы не уверены, есть ли у вашего пользователя права администратора, выполните в терминале:

sudo whoami

Что делает: sudo выполняет команду от имени суперпользователя, whoami показывает имя текущего пользователя.

Зачем: Эта команда проверяет, есть ли у вас права sudo. Без них вы не сможете устанавливать пакеты.

✅ Если выводит root — всё в порядке, можете продолжать.

❌ Если выводит is not in the sudoers file — сначала пройдите наше руководство по настройке sudo.

1.1 Обновление системы

Перед установкой всегда обновляйте список пакетов:

sudo apt update && sudo apt upgrade -y

Что делает:

  • sudo — права суперпользователя
  • apt update — обновляет список доступных пакетов из репозиториев
  • && — выполняет следующую команду только если предыдущая успешна
  • apt upgrade -y — обновляет все установленные пакеты до последних версий

Зачем: Это стандартная практика безопасности перед установкой нового ПО.

2. 📊 Сравнение способов установки Memcached

В Debian есть два основных способа установки Memcached. Вот их сравнение:

МетодКаналВерсияОбновленияПлюсыМинусы
APT
рекомендовано
Репозитории
Debian
Debian 13: 1.6.38,
Debian 12: 1.6.18,
Debian 11: 1.6.9
Автоматически
через
apt upgrade
Простота,
безопасность,
минимум
усилий
Версии
старые,
особенно на
Debian 11
Сборка из
исходников
memcached.orgПоследняя
стабильная
(1.6.41+)
Вручную
(пересборка)
Максимальная
свежесть
Требует
установки
инструментов
сборки,
ручное
обновление,
нужно
создавать
systemd-сервис

💡 Рекомендация: Для большинства пользователей подойдёт APT. Сборку из исходников выбирайте, если вам нужна самая свежая версия Memcached или специфические опции компиляции.

3. 📦 Способ 1: Установка Memcached через APT (рекомендованный)

Этот способ подходит для большинства пользователей. Вы получаете стабильную версию, протестированную для вашего выпуска Debian.

3.1 Установка пакетов

sudo apt install memcached libmemcached-tools -y

Что делает: Устанавливает сам Memcached и набор утилит для командной строки (memcstat, memcflush, memcslap и др.).

3.2 Проверка версии

memcached -V

Ожидаемый вывод в терминале (Debian 13):

memcached 1.6.38

3.3 Проверка статуса сервиса и слушающего порта

Проверка статуса:

systemctl status memcached

Ожидаемый вывод в терминале (сокращённо):

● memcached.service - memcached daemon
     Loaded: loaded (/lib/systemd/system/memcached.service; enabled)
     Active: active (running)

Проверка, что Memcached слушает порт:

sudo ss -tlnp | grep 11211

Ожидаемый вывод в терминале (Debian 13):

tcp   LISTEN 0      1024       127.0.0.1:11211      0.0.0.0:*    users:(("memcached",pid=2023,fd=26))
tcp   LISTEN 0      1024           [::1]:11211         [::]:*    users:(("memcached",pid=2023,fd=27))

💡 Примечание про IPv6: На Debian 13 Memcached по умолчанию слушает и IPv4, и IPv6 (127.0.0.1 и ::1). На Debian 12 и 11 — только IPv4. Это нормально и не влияет на работу.

3.4 Проверка статистики через memcstat

memcstat --servers=127.0.0.1 | head -15

Ожидаемый вывод в терминале (сокращённо):

Server: 127.0.0.1 (11211)
        version: 1.6.38
        max_connections: 1024
        curr_connections: 2

3.5 Проверка, что UDP отключён (рекомендуется)

memcached -h | grep -E 'udp-port|U,'

Ожидаемый вывод:

-U, --udp-port=<num>      UDP port to listen on (default: 0, off)

Значение 0 означает, что UDP отключён — это безопасно и рекомендуется.

4. 🔧 Способ 2: Сборка Memcached из исходников (актуальная версия)

Этот способ подходит, если вам нужна самая свежая версия Memcached или специфические опции сборки.

4.1 Установка инструментов сборки и зависимостей

sudo apt install build-essential libevent-dev wget -y

Что делает: Устанавливает компилятор, утилиты, библиотеку libevent (нужна для асинхронного ввода-вывода) и wget для скачивания.

4.2 Скачивание и распаковка исходников

⚠️ Перед выполнением: Проверьте актуальную версию на официальном сайте Memcached. На момент написания руководства последняя стабильная версия — 1.6.41.

MEMCACHED_VERSION="1.6.41"
wget "https://memcached.org/files/memcached-${MEMCACHED_VERSION}.tar.gz"
tar -xzf "memcached-${MEMCACHED_VERSION}.tar.gz"
cd "memcached-${MEMCACHED_VERSION}"

4.3 Конфигурация и компиляция

./configure --prefix=/usr/local
make -j$(nproc)

Что делает: Настраивает сборку для установки в /usr/local и компилирует Memcached, используя все ядра процессора.

Сборка может занять несколько минут.

4.4 Проверка контрольной суммы (рекомендуется)

sha256sum "memcached-${MEMCACHED_VERSION}.tar.gz"

Что ищем: Сравните вывод с хешем, указанным на странице загрузок. Это гарантирует, что файл не был повреждён при скачивании.

4.5 Установка

sudo make install
sudo ldconfig

Что делает: Устанавливает собранный Memcached в систему (/usr/local/bin/memcached) и обновляет кэш разделяемых библиотек.

4.6 Создание пользователя для Memcached

sudo useradd -r -s /usr/sbin/nologin -U -M memcache

Что делает: Создаёт системного пользователя memcache без возможности интерактивного входа, с одноимённой группой.

4.7 Создание systemd-сервиса

Создайте файл /etc/systemd/system/memcached.service:

sudo tee /etc/systemd/system/memcached.service > /dev/null << 'EOF'
[Unit]
Description=Memcached Service (Source Built)
After=network.target

[Service]
Type=simple
User=memcache
Group=memcache
EnvironmentFile=-/etc/memcached-local.conf
ExecStart=/usr/local/bin/memcached -m ${MEMCACHED_MEMORY:-64} -p ${MEMCACHED_PORT:-11211} -u memcache -l ${MEMCACHED_LISTEN:-127.0.0.1} -U 0 $MEMCACHED_OPTIONS
Restart=on-failure
PrivateTmp=true
NoNewPrivileges=true

[Install]
WantedBy=multi-user.target
EOF

Создайте файл конфигурации окружения /etc/memcached-local.conf:

sudo tee /etc/memcached-local.conf > /dev/null << 'EOF'
MEMCACHED_MEMORY=64
MEMCACHED_PORT=11211
MEMCACHED_LISTEN=127.0.0.1
MEMCACHED_OPTIONS=""
EOF

4.8 Запуск сервиса

sudo systemctl daemon-reload
sudo systemctl enable memcached --now

4.9 Проверка установки

/usr/local/bin/memcached -V

Ожидаемый вывод в терминале:

memcached 1.6.41

5. ⚙️ Настройка Memcached

5.1 Редактирование конфигурации (для APT-установки)

Файл конфигурации APT-версии: /etc/memcached.conf

sudo nano /etc/memcached.conf

Основные параметры:

ПараметрЗначениеПо умолчаниюЗачем
-m6464Выделенная память в МБ.
Для больших сайтов
увеличьте
(256, 512, 1024)
-p1121111211Порт, который
слушает Memcached
-l127.0.0.1127.0.0.1IP-адрес для
прослушивания.
127.0.0.1 — только
локальный доступ
-U 000Отключает UDP
(рекомендуется для
безопасности)
-c10241024Максимальное
количество
одновременных
соединений
-umemcachememcacheПользователь, от
которого запускается
сервис

5.2 Увеличение памяти

Найдите строку -m 64 и измените значение:

-m 512

5.3 Разрешение удалённого доступа (осторожно!)

⚠️ По умолчанию Memcached слушает только 127.0.0.1 (только локальный доступ). Если вам нужно, чтобы другие серверы подключались, измените параметр -l:

-l 0.0.0.0

Но лучше оставить локальный доступ и использовать UFW для ограничения круга IP (см. раздел 7).

5.4 Применение изменений

После редактирования конфигурации перезапустите Memcached:

sudo systemctl restart memcached

6. 🔥 Настройка UFW для удалённого доступа (если нужно)

Если Memcached должен принимать подключения с других серверов, настройте файрвол.

6.1 Разрешить SSH (чтобы не заблокировать себя)

sudo ufw allow ssh

6.2 Разрешить доступ к Memcached с конкретного IP

(IP в коде заменяем на свой!)

sudo ufw allow proto tcp from 192.168.1.100 to any port 11211

6.3 Включить UFW

sudo ufw enable

6.4 Проверка правил

sudo ufw status numbered

Ожидаемый вывод:

Status: active

     To                         Action      From
[ 1] 22/tcp                     ALLOW IN    Anywhere
[ 2] 11211/tcp                  ALLOW IN    192.168.1.100

7. 🐘 Установка расширений для языков программирования

7.1 Для PHP (самое популярное)

Для Apache с mod_php:

sudo apt install php-memcached -y
sudo systemctl restart apache2

Для Nginx с PHP-FPM:

sudo apt install php-memcached -y
sudo systemctl restart php8.4-fpm   # или php8.2-fpm, php7.4-fpm

Проверка, что расширение загружено:

php -m | grep memcached

Ожидаемый вывод: memcached

7.2 Для Python

sudo apt install python3-pymemcache -y

Проверка:

python3 -c "import pymemcache; print('OK')"

7.3 Для Perl

sudo apt install libcache-memcached-libmemcached-perl -y

8. 🖥️ Управление кэшем через командную строку

8.1 Просмотр статистики через memcstat

memcstat --servers=127.0.0.1 | head -15

8.2 Подключение через telnet

telnet localhost 11211

Полезные команды:

КомандаЧто делает
statsОбщая статистика (время работы, количество
операций, занятая память)
stats itemsСтатистика по элементам (по slab-классам)
stats slabsСтатистика по slab (распределение памяти)
get keyПолучить значение по ключу
set key 0 3600 5Установить значение с TTL 3600 секунд
delete keyУдалить ключ
flush_allОчистить весь кэш

Пример (установка и получение значения):

set testkey 0 60 5
hello
STORED
get testkey
VALUE testkey 0 5
hello
END

8.3 Выход из telnet

Нажмите Ctrl+], затем введите quit и Enter.

9. 🔄 Обновление source-сборки (скрипт с проверкой SHA256)

Если вы собрали Memcached из исходников, вот скрипт для обновления. Перед запуском проверьте актуальную версию и хеш на официальном сайте Memcached.

sudo tee /usr/local/bin/update-memcached-source > /dev/null << 'EOF'
#!/bin/bash
set -euo pipefail

# Проверьте актуальную версию и хеш на https://memcached.org/downloads
MEMCACHED_VERSION="1.6.41"
MEMCACHED_SHA256="актуальный_хеш_с_сайта"

for cmd in wget tar make gcc sha256sum; do
    if ! command -v $cmd &> /dev/null; then
        echo "Ошибка: $cmd не установлен."
        exit 1
    fi
done

CURRENT=$(memcached -V 2>/dev/null | grep -oP '[0-9]+\.[0-9]+\.[0-9]+' || echo "none")

if [ "$CURRENT" = "$MEMCACHED_VERSION" ]; then
    echo "Memcached уже последней версии ($CURRENT)."
    exit 0
fi

echo "Текущая версия: $CURRENT"
echo "Новая версия: $MEMCACHED_VERSION"

BUILD_DIR="/opt/memcached-build"
sudo mkdir -p "$BUILD_DIR"
cd "$BUILD_DIR"

sudo wget -q "https://memcached.org/files/memcached-${MEMCACHED_VERSION}.tar.gz" -O "memcached-${MEMCACHED_VERSION}.tar.gz"

echo "Проверка контрольной суммы..."
echo "$MEMCACHED_SHA256  memcached-${MEMCACHED_VERSION}.tar.gz" | sha256sum -c -

sudo tar -xzf "memcached-${MEMCACHED_VERSION}.tar.gz"
cd "memcached-${MEMCACHED_VERSION}"

./configure --prefix=/usr/local
make -j$(nproc)
sudo make install
sudo ldconfig
sudo systemctl restart memcached

echo "Обновление завершено: $(memcached -V)"
EOF

sudo chmod +x /usr/local/bin/update-memcached-source

Запуск обновления:

sudo update-memcached-source

⚠️ Важно: Скрипт не автоматизирует определение последней версии — вы должны вручную обновлять переменные MEMCACHED_VERSION и MEMCACHED_SHA256. Это сделано для безопасности, чтобы избежать случайной установки непроверенной версии.

10. ⚠️ Решение типичных проблем

10.1 Ошибка: Connection refused

Симптом: При попытке подключиться к Memcached получаете Connection refused.

Причина: Memcached не запущен или слушает другой порт/IP.

Пошаговое решение:

Шаг 1: Проверьте статус сервиса:

systemctl status memcached

Шаг 2: Проверьте, слушает ли порт:

sudo ss -tlnp | grep 11211

Шаг 3: Если порт не слушает — проверьте конфигурацию. Убедитесь, что параметр -l в /etc/memcached.conf указан как 127.0.0.1 или 0.0.0.0, а не закомментирован.

10.2 Memcached не запускается после установки из исходников

Симптом: systemctl start memcached не работает.

Причина: Не создан пользователь memcache или не настроен systemd-сервис.

Решение: Следуйте инструкции раздела 4.6–4.8 для создания пользователя и сервиса.

10.3 Утечка памяти или высокое потребление

Симптом: Memcached использует всю выделенную память и не освобождает.

Причина: Memcached предназначен использовать всю выделенную память под кэш. Это нормально. При необходимости он удаляет старые записи (LRU).

Решение: Увеличьте память (-m), если наблюдаете много вытеснений (evictions в stats).

10.4 PHP-расширение memcached не загружается

Симптом: php -m | grep memcached ничего не показывает.

Решение: Установите расширение и перезапустите веб-сервер:

sudo apt install php-memcached -y
sudo systemctl restart apache2   # или php8.4-fpm, php8.2-fpm

11. ❌ Удаление Memcached

Удаление APT-версии

sudo apt remove --purge memcached libmemcached-tools -y
sudo apt autoremove -y

Удаление source-сборки

sudo systemctl stop memcached
sudo systemctl disable memcached
sudo rm -f /etc/systemd/system/memcached.service
sudo systemctl daemon-reload
sudo rm -f /usr/local/bin/memcached
sudo rm -f /etc/memcached-local.conf
sudo userdel memcache

Проверка удаления

command -v memcached

Ожидаемый вывод: Пустая строка (если Memcached удалён).

12. 📝 Чек-лист: всё готово к работе

  • [ ] Система обновлена (sudo apt update && sudo apt upgrade -y)
  • [ ] Выбран и выполнен один из способов установки (APT / Source)
  • [ ] memcached -V показывает версию
  • [ ] Сервис активен (systemctl status memcached) и слушает порт (ss -tlnp | grep 11211)
  • [ ] memcstat --servers=127.0.0.1 показывает статистику
  • [ ] UDP отключён (memcached -h | grep -E 'udp-port|U,' показывает 0)
  • [ ] UFW настроен (если нужен удалённый доступ)
  • [ ] Расширение для PHP установлено (php -m | grep memcached)
  • [ ] Удалось подключиться через telnet и выполнить stats

Заключение

Вы установили Memcached на Debian. Если вы выбрали APT — получили стабильную, проверенную версию, которая будет обновляться вместе с системой. Если собрали из исходников — получили последнюю версию. Memcached — это мощный инструмент для ускорения динамических веб-сайтов и кэширования данных. Главное, что нужно запомнить: по умолчанию Memcached слушает только локальный интерфейс (127.0.0.1), что безопасно, но для доступа с других серверов нужно изменить -l и настроить UFW. Убедитесь, что UDP отключён (-U 0), и используйте memcstat для мониторинга.

Что дальше:

  • Настройте WordPress для использования Memcached через плагин (W3 Total Cache, LiteSpeed Cache)
  • Настройте PHP-сессии для хранения в Memcached (редактируйте php.ini)
  • Для распределённого кэша рассмотрите кластеризацию Memcached на нескольких серверах
  • Изучите альтернативу — Redis (если нужна персистентность данных)

Связанные статьи: