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
Основные параметры:
| Параметр | Значение | По умолчанию | Зачем |
|---|---|---|---|
-m | 64 | 64 | Выделенная память в МБ. Для больших сайтов увеличьте (256, 512, 1024) |
-p | 11211 | 11211 | Порт, который слушает Memcached |
-l | 127.0.0.1 | 127.0.0.1 | IP-адрес для прослушивания. 127.0.0.1 — только локальный доступ |
-U 0 | 0 | 0 | Отключает UDP (рекомендуется для безопасности) |
-c | 1024 | 1024 | Максимальное количество одновременных соединений |
-u | memcache | memcache | Пользователь, от которого запускается сервис |
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 (если нужна персистентность данных)