Установка 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 для удалённого доступа
  • Как управлять кэшем через командную строку (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.39+)
Вручную
(пересборка)
Максимальная
свежесть
Требует
установки
инструментов
сборки, ручное
обновление,
нужно
создавать
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)

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

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

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

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

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

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

wget https://memcached.org/latest -O memcached-latest.tar.gz
tar -xzf memcached-latest.tar.gz
cd memcached-*/

Что делает: Скачивает последний стабильный релиз с официального сайта, распаковывает и переходит в директорию с исходниками.

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

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

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

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

4.4 Установка

sudo make install
sudo ldconfig

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

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

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

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

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

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

sudo tee /etc/systemd/system/memcached.service > /dev/null << 'EOF'
[Unit]
Description=Memcached Service (Source Compiled)
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=always

[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.7 Запуск сервиса

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

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

/usr/local/bin/memcached -V

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

memcached 1.6.39

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

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 libapache2-mod-php -y
sudo systemctl restart apache2

Для Nginx с PHP-FPM:

sudo apt install php-memcached php-fpm -y
sudo systemctl restart php*-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 Подключение к Memcached

telnet localhost 11211

Что делает: Открывает интерактивную сессию для команд.

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

КомандаЧто делает
statsОбщая статистика (время работы, количество
операций, занятая память)
stats itemsСтатистика по элементам (по slab-классам)
stats slabsСтатистика по slab (распределение памяти)
stats cachedumpПросмотр ключей в конкретном 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-сборки (скрипт)

Если вы собрали Memcached из исходников, вот скрипт для автоматического обновления.

Создание скрипта:

sudo tee /opt/memcached-update.sh > /dev/null << 'EOF'
#!/bin/bash
set -e

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

if ! dpkg -l | grep -q libevent-dev; then
    echo "Ошибка: libevent-dev не установлен."
    exit 1
fi

CURRENT=$(memcached -V 2>/dev/null | grep -oP '[0-9]+\.[0-9]+\.[0-9]+' || echo "none")
BUILD_DIR="/opt/memcached-build"
sudo mkdir -p "$BUILD_DIR"
cd "$BUILD_DIR"

sudo wget -q https://memcached.org/latest -O latest.tar.gz
sudo tar -xzf latest.tar.gz

LATEST=$(ls -d memcached-*/ | head -1 | grep -oP '[0-9]+\.[0-9]+\.[0-9]+')

echo "Текущая версия: $CURRENT"
echo "Последняя версия: $LATEST"

if [ "$CURRENT" = "$LATEST" ]; then
    echo "Memcached уже последней версии."
    sudo rm -rf "$BUILD_DIR"/*
    exit 0
fi

echo "Обновление до $LATEST..."
cd memcached-*/
./configure --prefix=/usr/local
make -j$(nproc)
sudo make install
sudo ldconfig
sudo systemctl restart memcached

echo "Обновлено до $(memcached -V)"
sudo rm -rf "$BUILD_DIR"/*
EOF

sudo chmod +x /opt/memcached-update.sh

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

sudo /opt/memcached-update.sh

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

10.1 Ошибка: Connection refused

Симптом: При попытке подключиться к Memcached (например, через telnet) получаете 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.5–4.7 для создания пользователя и сервиса.

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   # или php*-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

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

memcached -V

Ожидаемый вывод: bash: memcached: command not found

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

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

Заключение

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

Что дальше:

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