Memcached: установка и настройка
3 мин. 3905 10.10.2015
Данная статья носит характер «Скорой помощи». Развернутое описание конкретных действий, которые позволять установить и настроить memcached на сервере.
Начнем с определения.
Memcached — программное обеспечение, реализующее сервис кэширования данных в оперативной памяти на основе хеш-таблицы.
- VPS, работающий на операционной системе Debian;
- действующий сайт, к которому можно обратиться по FTP, SSH.
Начнем с последнего пункта. За счет запущенного интернет-ресурса (или его подобия) мы можем просто и быстро выяснить что у нас установлено (быть может, что среди прочего мы найдем и memcached). Создадим файл с названием info.php , в котором напишем:
Выполним код, обратившись в по адресу http://example.com/info.php :
Если среди всего прочего вы отыскали похожую запись — значит все в порядке и дело уже сделано. В противном случае — этот результат мы получим по итогам действий, описанных в данной публикации.
Установка сервера Memcached
Запустим установку командой
Ожидаем завершения установки. После проверим результаты командой netstat
В результате получаем:
Как мы видим, по умолчанию memcached по-умолчанию «слушает» порт 11211. Следовательно, через данный порт любой желающий сможет подключится и использовать наш memcached-сервер. Обезопасим себя, дадим такое право только своему серверу (localhost). Откроем файл /etc/memcached.conf через панель управления, либо через консоль:
Данный файл содержит подробные комментарии. Обязательно ознакомьтесь с ними.
Добавьте строку -l 127.0.0.1 .
Перезагружаем memcached-сервер командой:
И проверим еще раз:
В результате мы должны получить что-то вроде
Теперь memcached работает только на локальный сервер.
Установка memcache
Перечень команд (версия memcache может отличаться!):
Проверим скрипт, размещенный нами ранее по адресу http://example.com/info.php . Теперь мы должны найти там пункт Memcache.
Проверим работу Memcached
Создадим файл result.php и запустим его.
Результат работы скрипта:
Все так или почти так? Тогда все в порядке. Если нет — попробуйте повторить процедуры.
Опубликовано: 10 октября 2015 года, в рубрике «Серверная».
Поделитесь публикацией в социальных сетях
Установка Memcached PHP под Windows
Понадобилось установить memcached на локалку специально для некого громоздкого скрипта, который без вышеупомянутого модуля работать не умеет.
Процедура не обошлась без половых актов — спешу поделиться впечатлениями. = )
P.S Гугл выдает достаточно заметок на эту тему, но обнаруживается ряд ньансов, о которых расскажу подобнее.
И так,
1. Скачиваем сам exe-шник memcached и распаковываем его в любое, удобное для Вас, место.
2. Скачиваем модуль memcached для PHP и распаковываем php_memcache.dll в каталог расширений PHP (обычно «ext/» в директории PHP), а также в php.ini дописываем следующую строку:
(это последняя на данный момент версия модуля, более ранние работать отказались)
3. Устанавливаем memcached.
Подробности: дело в том, что данная версия (1.4.5) не устанавливается как служба Windows самостоятельно, отображается ошибка:
Failed to ignore SIGHUP: Result too large
Поэтому нам понадобится некий «NSSM — the Non-Sucking Service Manager» для решения этой проблемы.
Переходим в каталог с распакованным NSSM и из командной строки запускаем:
nssm.exe install memcached «путь_к_ранее_распакованному_файлу_memcached.exe»
4. Идем в Панель Управления — Администрирование — Службы и запускаем службу «memcached«, а также учим её запускаться автоматически с Windows.
5. Перезапускаем PHP (Apache)
Update: Исправил опечатку. Расширение memcached для PHP называется php_memcache.dll, а не php_memcached.dll. P.S: Спасибо хаму Николаю за его комментарий.
Установка Memcached PHP под Windows: 19 комментариев
Сервис поднял, но на этом все остановилось
OC WIN 2008 SERVER ; PHP Version 5.3.27.
Не удается подключить php_memcached.dll.
В чем может быть проблема ?
vadimkrd, какую ошибку получаете?
vadimkrd, в посте опечатка: расширение memcached для PHP называется php_memcache.dll, а не php_memcached.dll.
P.S: Спасибо хаму Николаю за его комментарий (комментарий удален).
Спасибо большое за статью!
Art, рад, что статья оказалась полезной. = )
Помогите настроить.
Пробовал на Денвере и на XAMPP
служба устанавливается, запускается с Windows, но не отображается в PHPInfo
что это может быть?
System Windows NT SHARP 6.1 build 7601 (Windows 7 Professional Edition Service Pack 1) i586
Build Date Nov 9 2016 06:33:44
Compiler MSVC11 (Visual C++ 2012)
Architecture x86
Configure Command cscript /nologo configure.js «—enable-snapshot-build» «—disable-isapi» «—enable-debug-pack» «—without-mssql» «—without-pdo-mssql» «—without-pi3web» «—with-pdo-oci=c:\php-sdk\oracle\x86\instantclient_12_1\sdk,shared» «—with-oci8-12c=c:\php-sdk\oracle\x86\instantclient_12_1\sdk,shared» «—enable-object-out-dir=../obj/» «—enable-com-dotnet=shared» «—with-mcrypt=static» «—without-analyzer» «—with-pgo»
Виталий, php_memcache.dll подключили в php.ini?
Скачиваем файл php_memcache-3.0.8-5.4-ts-vc9-x86.zip. Извлекаем из архива одну библиотечку php_memcache.dll и кладём её в каталог расширений PHP. В нашем случае это \xampp\php\ext, а в общем случае смотрим значение параметра «extension_dir» в php.ini. Затем в конец раздела «Dynamic Extensions» файла php.ini дописываем:
;extension=php_soap.dll
;extension=php_sockets.dll
;extension=php_sqlite3.dll
;extension=php_sybase_ct.dll
;extension=php_tidy.dll
;extension=php_xmlrpc.dll
;extension=php_xsl.dll
extension=php_memcache.dll
В строке «Configuration File (php.ini) Path» PHPInfo отображается путь до ini-файла, который вы правите?
Configuration File (php.ini) Path C:\Windows
Loaded Configuration File T:\xampp\php\php.ini
правлю T:\xampp\php\php.ini
в директории Windows нет php.ini
Пробовал копировать директорию Windows, не помогло.
Установка и настройка Memcached
В результате применения информации, данной в этой статье, вы сможете установить и настроить сервер Memcached и нужное расширение php для взаимодействия с ним, а также сервис анализа и статистики phpMemcachedAdmin
Установка будет происходить под Debian с сервером бекенда Apache. Если у вас рабочая связка NGINX + php5-fpm, просто заменяйте в командах apache2 на php5-fpm
Рабочий инструментарий: файловый менеджер для подключения по ssh со встроенным редактором Far Manager или putty.
Теперь допустим, у нас на этом хостинге уже есть сайт http://example.com
Для начала, нужно определить, как сконфигурирован PHP (вдруг Memcached уже установлен?)). Для этого в корне сайта временно создадим файл info.php с кодом
Теперь заглянем в него http://example.com/info.php 
Если видим, что есть похожая запись, значит, всё в порядке, нужное расширение php установлено.
Если нет, значит, придётся поработать.
Как установить сервер Memcached
Перед установкой нужно обновить репозиторий
Теперь установим memcached и модуль php под него
Идёт установка. После её завершения проверяем, что получилось
В результате мы увидим что-то навроде
Теперь нужно перезагрузить Apache или php-fpm
Настройка Memcached
Теперь, когда сервер установлен, его надо поднастроить. Это не сложно и не займёт много времени
Закрываем Memcached от доступа извне
Как вы видите, memcached висит на 11211 порту по умолчанию. Так как в memcached нет встроенных механизмов аутентификации, то выходит, что любой может подсоединиться извне и использовать его в своих целях. Чтобы избежать этого, вы можете либо закрыть порт 11211 с помощью фаервола, либо сконфигурировать memcached-сервер, чтобы он мог использоваться только с локального хоста. Ниже описан последний способ.
- Открываем конфигурационный файл
В итоге мы должны увидеть подобное
Также, после всех изменений не забудьте перезапустить Apache
Увеличиваем объём рабочей памяти Memcached
По умолчанию, в Memcached отведено на использование 64 мегабайта оперативной памяти. Я увеличу до 1024, вы исходите из параметров вашего сервера
- Открываем конфигурационный файл
- Находим значение
- Меняем его на
- Перезапускаем memcached
Хранение сессий PHP в Memcached
Если одним сервером или кластером Memcached пользуются несколько разных сайтов, то они могут перехватывать сессии друг друга и получать доступ к аккаунтам их пользователей, что представляет собой потенциальную опасность
Можно ускорить php, перенеся хранилище сессий из hdd в оперативную память с помощью memcached
Вы должны знать, какое расширение php вы используете, memcache или memcached . Между ними есть разница, а уточнить, что стоит у вас, можно с помощью phpinfo(), тут есть тонкость в настройках, будьте внимательны
Способ для расширения memcache
- Открыть /etc/php5/mods-available/memcache.ini
- Добавить
- Перезагрузить apache
Способ для расширения memcacheD
- Открыть /etc/php5/mods-available/memcached.ini
- Добавить
- Перезагрузить apache
Проверка 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 в корне вашего сайта
Готовый рабочий конфигурационный файл Memcached
Вы также можете настроить всё под свои потребности, конфигурационный файл содержит подробные комментарии:
Установка расширения memcache
Ниже пошагово указаны команды, с помощью которых вы сможете установить php-расширение memcache из консоли вручную
Перезагрузим Apache, чтобы изменения вступили в силу
Как проверить работу Memcached
Создадим в корне сайта файлик memcachetest.php и запишем туда следующий код
Теперь осталось проверить результаты: http://example.com/memcachetest.php
Если всё сделали правильно, увидите что-то навроде
phpMemcachedAdmin — мониторинг, статистика и управление Memcached
phpMemcachedAdmin — это программное обеспечение, предоставляющее веб-интерфейс для мониторинга и управления сервисом Memcached на Linux. Позволяет видеть в реальном времени статистику для всех поддерживаемых сервером операций: get, set, delete, increment, decrement, reclaimed, evictions, cas, а также серверную статистику: сеть, позиции, рабочую версию вкупе с чартами и внутренней серверной конфигурацией.
Установка и настройка phpMemcachedAdmin
Тут можно пойти несколькими путями: выделить отдельный домен или поддомен под работу этого сервиса. А можно сделать поддиректорию в рабочем сайте и поставить пароль на неё или настроить ограничение по IP. Я опишу последний способ с установкой пароля на папку как более простой.
Итак, допустим, у нас есть сайт https://sheensay.ru
Создаём директорию и переходим в неё
Скачиваем последнюю версию дистрибутива
Распаковываем и удаляем архив с дистрибутивом
Рекурсивно выставляем нужные права доступа в текущей директории
Создаём .htaccess для авторизации по паролю (в строку 4 вносите свой логин)
Вводите свой пароль.
На этом всё. Логин на каталог memcachedmanager , если вы не меняли его. Открываете https://sheensay.ru/phpMemcachedAdmin (домен меняете на свой), вводите логин/пароль и пользуетесь
В заключение
Рекомендую ознакомиться со статьёй про memcached. В ней раскрыта общая информация о нём и некоторые тонкости работы.
На этом всё. Если что непонятно, задавайте вопросы в комментариях


