Sheensay → Серверная → Установка и настройка Memcached

Установка и настройка Memcached

28.09.2017


В результате применения информации, данной в этой статье, вы сможете установить и настроить сервер Memcached и нужное расширение php для взаимодействия с ним, а также сервис анализа и статистики phpMemcachedAdmin

  • Как установить сервер Memcached
  • Настройка Memcached
  • Закрываем Memcached от доступа извне
  • Увеличиваем объём рабочей памяти Memcached
  • Хранение сессий PHP в Memcached
  • Способ для расширения memcache
  • Способ для расширения memcacheD
  • Проверка phpinfo
  • Готовый рабочий конфигурационный файл Memcached
  • Установка расширения memcache
  • Как проверить работу Memcached
  • phpMemcachedAdmin — мониторинг, статистика и управление Memcached
  • Установка и настройка phpMemcachedAdmin
  • В заключение

Установка будет происходить под Debian с сервером бекенда Apache. Если у вас рабочая связка NGINX + php5-fpm, просто заменяйте в командах apache2 на php5-fpm
Рабочий инструментарий: файловый менеджер для подключения по ssh со встроенным редактором Far Manager или putty.

Если у вас сервер на CentOS, вод подробный мануал, как установить Memcached на CentOS

Теперь допустим, у нас на этом хостинге уже есть сайт http://example.com

Для начала, нужно определить, как сконфигурирован PHP (вдруг Memcached уже установлен?)). Для этого в корне сайта временно создадим файл info.php с кодом

<?php
phpinfo();
?>

Теперь заглянем в него http://example.com/info.php
php-memcache
Если видим, что есть похожая запись, значит, всё в порядке, нужное расширение php установлено.
Если нет, значит, придётся поработать.

Как установить сервер Memcached

Перед установкой нужно обновить репозиторий

apt-get update && apt-get upgrade

Теперь установим memcached и модуль php под него

apt-get install memcached php5-memcache

Идёт установка. После её завершения проверяем, что получилось

netstat -tap | grep memcached

В результате мы увидим что-то навроде

tcp  0 0 *:11211 *:*   LISTEN  13053/memcached

Теперь нужно перезагрузить Apache или php-fpm

service apache2 restart

или

service php5-fpm restart

Настройка Memcached

Теперь, когда сервер установлен, его надо поднастроить. Это не сложно и не займёт много времени

Закрываем Memcached от доступа извне

Как вы видите, memcached висит на 11211 порту по умолчанию. Так как в memcached нет встроенных механизмов аутентификации, то выходит, что любой может подсоединиться извне и использовать его в своих целях. Чтобы избежать этого, вы можете либо закрыть порт 11211 с помощью фаервола, либо сконфигурировать memcached-сервер, чтобы он мог использоваться только с локального хоста. Ниже описан последний способ.

  1. Открываем конфигурационный файл

    vi /etc/memcached.conf
  2. Добавляем строку

    -l 127.0.0.1
  3. Перезагружаем memcached

    service memcached restart

    или

    /etc/init.d/memcached restart

И снова проверяем

netstat -tap | grep memcached

В итоге мы должны увидеть подобное

tcp 0  0 localhost.localdo:11211 *:*  LISTEN     13092/memcached

Также, после всех изменений не забудьте перезапустить Apache

service apache2 restart

Увеличиваем объём рабочей памяти Memcached

По умолчанию, в Memcached отведено на использование 64 мегабайта оперативной памяти. Я увеличу до 1024, вы исходите из параметров вашего сервера

  1. Открываем конфигурационный файл
    vi /etc/memcached.conf
  2. Находим значение
    -m 64
  3. Меняем его на
    -m 1024
  4. Перезапускаем memcached
    service memcached restart

Хранение сессий PHP в Memcached

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

Можно ускорить php, перенеся хранилище сессий из hdd в оперативную память с помощью memcached

Вы должны знать, какое расширение php вы используете, memcache или memcached. Между ними есть разница, а уточнить, что стоит у вас, можно с помощью phpinfo(), тут есть тонкость в настройках, будьте внимательны

Способ для расширения memcache

  1. Открыть /etc/php5/mods-available/memcache.ini
  2. Добавить
    session.save_handler = memcache
    session.save_path = "tcp://127.0.0.1:11211"
  3. Перезагрузить apache
    service apache2 restart

Способ для расширения memcacheD

  1. Открыть /etc/php5/mods-available/memcached.ini
  2. Добавить
    session.save_handler = memcached
    session.save_path = "127.0.0.1:11211"
  3. Перезагрузить apache
    service apache2 restart

Проверка phpinfo

Теперь нужно проверить, что имеем на выходе. Для этого, открываем страницу с phpinfo() и ищем в коде session.save_path в столбце с локальными значениями. В значении должно быть tcp://127.0.0.1:11211 или 127.0.0.1:11211. Если значения не поменялись, смотрите конфиг домена в Апаче (например тут: /etc/apache2/vhosts/sheensay/sheensay.ru.conf), а ищем
php_admin_value session.save_path

Кстати, также вы можете воспользоваться директивой php_value, чтобы настраивать не весь сервер глобально, а только конкретные сайты. Для этого, вы можете отредактировать .htaccess в корне вашего сайта

  php_value session.save_handler "memcache"
  php_value session.save_path "tcp://127.0.0.1:11211"

Готовый рабочий конфигурационный файл Memcached

Вы также можете настроить всё под свои потребности, конфигурационный файл содержит подробные комментарии:

# memcached default config file
# 2003 - Jay Bonci <[email protected]>
# This configuration file is read by the start-memcached script provided as
# part of the Debian GNU/Linux distribution.

# Run memcached as a daemon. This command is implied, and is not needed for the
# daemon to run. See the README.Debian that comes with this package for more
# information.
-d

# Log memcached's output to /var/log/memcached
logfile /var/log/memcached.log

# Be verbose
# -v

# Be even more verbose (print client commands as well)
# -vv

# 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
# Объём памяти в мегабайтах, который отведён для кеширования. По умолчанию, 64 мегабайта.
#-m 64
-m 1024

# Порт, на котором будет висеть Memcached, по умолчанию 11211
-p 11211

# Run the daemon as root. The start-memcached will default to running as root if no
# -u command is present in this config file
-u memcache

# Specify which IP address to listen on. The default is to listen on all IP addresses
# This parameter is one of the only security measures that memcached has, so make sure
# it's listening on a firewalled interface.
-l 127.0.0.1

# Limit the number of simultaneous incoming connections. The daemon default is 1024
#
# -c 1024

# Lock down all paged memory. Consult with the README and homepage before you do this
# -k

# Return error when memory is exhausted (rather than removing items)
# -M

# Maximize core file limit
# -r

Установка расширения memcache

Ниже пошагово указаны команды, с помощью которых вы сможете установить php-расширение memcache из консоли вручную

apt-get install php5-dev libmemcache-dev
pecl download memcache
tar xzvf memcache-2.2.6.tgz
cd memcache-2.2.6/
phpize && ./configure --enable-memcache && make
cp modules/memcache.so /usr/lib/php5/20060613/
 
echo 'extension=memcache.so' >> /etc/php5/apache2/php.ini

Перезагрузим Apache, чтобы изменения вступили в силу

service apache2 restart

Как проверить работу Memcached

Создадим в корне сайта файлик memcachetest.php и запишем туда следующий код

<?php

if (!class_exists("Memcache"))  exit("Memcached не установлен");
$memcache = new Memcache;
$memcache->connect('localhost', 11211) or exit("Невозможно подключиться к серверу Memcached");

$version = $memcache->getVersion();
echo "Server's version: ".$version."<br/>\n";

$tmp_object = new stdClass;
$tmp_object->str_attr = 'test';
$tmp_object->int_attr = 123;

$memcache->set('key', $tmp_object, false, 10) or die ("Не получилось оставить запись в Memcached");
echo "Записываем данные в кеш Memcached (данные будут храниться 10 секунд)<br/>\n";

$get_result = $memcache->get('key');
echo "Данные, записанные в Memcached:<br/>\n";

var_dump($get_result);

?>

Теперь осталось проверить результаты: http://example.com/memcachetest.php
Если всё сделали правильно, увидите что-то навроде
memcachedtest

phpMemcachedAdmin — мониторинг, статистика и управление Memcached

phpMemcachedAdmin — это программное обеспечение, предоставляющее веб-интерфейс для мониторинга и управления сервисом Memcached на Linux. Позволяет видеть в реальном времени статистику для всех поддерживаемых сервером операций: get, set, delete, increment, decrement, reclaimed, evictions, cas, а также серверную статистику: сеть, позиции, рабочую версию вкупе с чартами и внутренней серверной конфигурацией.

Установка и настройка phpMemcachedAdmin

Тут можно пойти несколькими путями: выделить отдельный домен или поддомен под работу этого сервиса. А можно сделать поддиректорию в рабочем сайте и поставить пароль на неё или настроить ограничение по IP. Я опишу последний способ с установкой пароля на папку как более простой.

Итак, допустим, у нас есть сайт https://sheensay.ru

 cd /var/www/sheensay.ru

Создаём директорию и переходим в неё

mkdir phpMemcachedAdmin && cd phpMemcachedAdmin

Скачиваем последнюю версию дистрибутива

wget http://phpmemcacheadmin.googlecode.com/files/phpMemcachedAdmin-1.2.2-r262.tar.gz

Если не скачивается с гуглокода, я сделал архив phpMemcachedAdmin-1.2.2-r262.tar.gz

Распаковываем и удаляем архив с дистрибутивом

tar -xvzf phpMemcachedAdmin-1.2.2-r262.tar.gz && rm -rf phpMemcachedAdmin-1.2.2-r262.tar.gz

Рекурсивно выставляем нужные права доступа в текущей директории

find ./ -type f -exec chmod 0644 {} \;
find ./ -type d -exec chmod 0755 {} \;

Создаём .htaccess для авторизации по паролю (в строку 4 вносите свой логин)

 
AuthType Basic
AuthName "Private Area"
AuthUserFile .htpasswd
Require user memcachedmanager

Создаём .htpasswd

htpasswd -c .htpasswd memcachedmanager 

Вводите свой пароль.

На этом всё. Логин на каталог memcachedmanager, если вы не меняли его. Открываете https://sheensay.ru/phpMemcachedAdmin (домен меняете на свой), вводите логин/пароль и пользуетесь

В заключение

Рекомендую ознакомиться со статьёй про memcached. В ней раскрыта общая информация о нём и некоторые тонкости работы.
На этом всё. Если что непонятно, задавайте вопросы в комментариях



Так себеНеплохоНормальноХорошоОтлично (13 оценок, в среднем: 4,31 из 5)
Загрузка...


  • Чем отличаются memcached и memcache
  • Что такое Memcached
  • Ошибка php Maximum execution time of 30 seconds exceeded
  • WP-CLI — управление WordPress из консоли
  • Monit — как обеспечить бесперебойную работу NGINX, MySQL, PHP-FPM

Серверная caching memcached

Свежие записи

  • Squid — свой собственный HTTP Proxy сервер
  • Как исправить ошибку «Обновить WordPress — В настоящий момент выполняется другое обновление»
  • Query Monitor
  • LEMP
  • Telegram

Свежие записи

  • Squid — свой собственный HTTP Proxy сервер
  • Как исправить ошибку «Обновить WordPress — В настоящий момент выполняется другое обновление»
  • Query Monitor
  • LEMP
  • Telegram

Свежие комментарии

  • Sheens к записи Что такое SSL и TLS, как установить и настроить
  • Геомант к записи Что такое SSL и TLS, как установить и настроить
  • Sheens к записи Last-Modified в WordPress
  • Артур к записи Last-Modified в WordPress
  • Sheens к записи EWWW Image Optimizer — плагин для сжатия png, jpeg, gif анимации без потери качества
  • Telegram
  • Вконтакте
  • Facebook
  • Twitter
  • Google+
  • Одноклассники
  • Мой Мир Mail.ru
  • RSS

Copyright © 2025 · Sheensay on Genesis Framework · WordPress · Log in