====== Memcached в Ubuntu ====== Джерело: [[https://losst.pro/ustanovka-memcached-v-ubuntu|https://losst.pro/ustanovka-memcached-v-ubuntu]] ==== 1. Установка сервиса ==== Сама по себе установка Memcached не вызовет проблем. Вам достаточно выполнить такую команду: ''sudo apt install memcached libmemcached-tools'' [[https://losst.pro/wp-content/uploads/2019/04/Snimok-ekrana-ot-2019-04-11-16-41-52.png|{{ https://losst.pro/wp-content/uploads/2019/04/Snimok-ekrana-ot-2019-04-11-16-41-52-1024x576.png?nolink&806x453 }}]] Вместе с самим сервисом мы устанавливаем набор дополнительных утилит для более простого управления Memcached. На этом установка завершена. ==== 2. Настройка Memcached ==== Настройка Memcached Ubuntu выполняется через файл /etc/memcahced.conf. В этом файле содержаться опции, которые будут переданы сервису при запуске: * **-d** - работать в режиме сервиса; * **-v** - режим более подробного вывода информации; * **-vv** - ещё более подробный вывод информации; * **-m** - количество оперативной памяти, которую будет использовать сервис, рекомендую увеличить этот параметр, так как значения 64 мегабайта, установленных по умолчанию, будет мало; * **-p** - порт, на котором будет работать сервис; * **-u** - пользователь, от имени которого запущен сервис; * **-l** - IP-дрес, на котором Memcached будет ожидать соединения, лучше использовать 127.0.0.1, чтобы из внешней сети ни у кого не было доступа к вашим данным; * **-с** - количество одновременных подключений; * **-P** - путь к PID-файлу сервиса в файловой системе. Таким образом, большинство опций можно оставить по умолчанию. Изменить нужно только объём оперативной памяти и IP-адрес. [[https://losst.pro/wp-content/uploads/2019/04/Snimok-ekrana-ot-2019-04-11-16-57-36.png|{{ https://losst.pro/wp-content/uploads/2019/04/Snimok-ekrana-ot-2019-04-11-16-57-36-1024x576.png?nolink&806x453 }}]] ==== 3. Запуск сервиса ==== Даже если сервис был запущен по умолчанию, после изменения настроек его нужно перезапустить: ''sudo systemctl restart memcached'' [[https://losst.pro/wp-content/uploads/2019/04/Snimok-ekrana-ot-2019-04-11-16-58-56.png|{{ https://losst.pro/wp-content/uploads/2019/04/Snimok-ekrana-ot-2019-04-11-16-58-56-1024x576.png?nolink&806x453 }}]] Можно ещё убедиться, что Memcached работает именно на том IP и порте, которые нам нужны: ''ss -tlpn'' [[https://losst.pro/wp-content/uploads/2019/04/Snimok-ekrana-ot-2019-04-11-17-36-50.png|{{ https://losst.pro/wp-content/uploads/2019/04/Snimok-ekrana-ot-2019-04-11-17-36-50-1024x576.png?nolink&806x453 }}]] Затем вы можете посмотреть статистику использования сервиса командой: ''memcstat –servers="127.0.0.1"'' [[https://losst.pro/wp-content/uploads/2019/04/Snimok-ekrana-ot-2019-04-11-17-01-04.png|{{ https://losst.pro/wp-content/uploads/2019/04/Snimok-ekrana-ot-2019-04-11-17-01-04-1024x576.png?nolink&806x453 }}]] Работать с Memcached мы можем уже сейчас. Для этого нужно использовать Telnet. Подключаемся к серверу: ''telnet localhost 11211'' Если подключение прошло успешно, вы увидите такое сообщение: [[https://losst.pro/wp-content/uploads/2019/04/Snimok-ekrana-ot-2019-04-11-17-13-00.png|{{ https://losst.pro/wp-content/uploads/2019/04/Snimok-ekrana-ot-2019-04-11-17-13-00-1024x576.png?nolink&806x453 }}]] Используйте команду stats, чтобы получить общую статистику, которую мы видели в выводе команды memcstat: ''stats'' [[https://losst.pro/wp-content/uploads/2019/04/Snimok-ekrana-ot-2019-04-11-17-13-07.png|{{ https://losst.pro/wp-content/uploads/2019/04/Snimok-ekrana-ot-2019-04-11-17-13-07-1024x576.png?nolink&806x453 }}]] Для того, чтобы сохранить данные, используется команда add. У неё такой синтаксис: ** add имя_ключа флаги время_хранения размер_данных ** \\ **данные** Флаги - это целое число, которое хранится вместе с данными, и вместе с ними возвращается пользователю, можно просто оставить 0. Время хранения - это время в секундах, сколько будут хранится эти данные, 0 означает вечно. Размер данных в байтах определяет, сколько памяти будет задействовано под эти данные. Далее нужно нажать Enter и ввести данные, которые нужно сохранить. Например, сохраним строку memcached в ключе key навсегда: ''add key 0 0 9 \\ memcached'' [[https://losst.pro/wp-content/uploads/2019/04/Snimok-ekrana-ot-2019-04-11-17-16-16.png|{{ https://losst.pro/wp-content/uploads/2019/04/Snimok-ekrana-ot-2019-04-11-17-16-16-1024x576.png?nolink&806x453 }}]] Получить значение сохранённого ключа можно командой get: ''get key'' [[https://losst.pro/wp-content/uploads/2019/04/Snimok-ekrana-ot-2019-04-11-17-29-00.png|{{ https://losst.pro/wp-content/uploads/2019/04/Snimok-ekrana-ot-2019-04-11-17-29-00-1024x576.png?nolink&806x453 }}]] А удалить этот ключ командой delete: ''delete key'' [[https://losst.pro/wp-content/uploads/2019/04/Snimok-ekrana-ot-2019-04-11-17-29-09.png|{{ https://losst.pro/wp-content/uploads/2019/04/Snimok-ekrana-ot-2019-04-11-17-29-09-1024x576.png?nolink&806x453 }}]] А вот посмотреть список всех ключей в Telnet так просто не получится. Сначала нужно посмотреть список хранилищ: ''stats items'' [[https://losst.pro/wp-content/uploads/2019/04/Snimok-ekrana-ot-2019-04-11-17-28-28.png|{{ https://losst.pro/wp-content/uploads/2019/04/Snimok-ekrana-ot-2019-04-11-17-28-28-1024x576.png?nolink&806x453 }}]] А затем командой stats cachedump можно вывести список ключей хранилища. Первый параметр - это идентификатор хранилища, а второй - лимит ключей для вывода: ''stats cachedump 1 100'' [[https://losst.pro/wp-content/uploads/2019/04/Snimok-ekrana-ot-2019-04-11-17-28-49.png|{{ https://losst.pro/wp-content/uploads/2019/04/Snimok-ekrana-ot-2019-04-11-17-28-49-1024x576.png?nolink&806x453 }}]] Для выхода наберите команду **quit**. С помощью команды memcdump вы можете вывести список всех сохраненных ключей: ''memdump –servers=127.0.0.1'' [[https://losst.pro/wp-content/uploads/2019/04/Snimok-ekrana-ot-2019-04-11-17-30-19.png|{{ https://losst.pro/wp-content/uploads/2019/04/Snimok-ekrana-ot-2019-04-11-17-30-19-1024x576.png?nolink&806x453 }}]] А с помощью memccat можно вывести значение нужного ключа: ''memccat key –servers=127.0.0.1'' [[https://losst.pro/wp-content/uploads/2019/04/Snimok-ekrana-ot-2019-04-11-17-30-47.png|{{ https://losst.pro/wp-content/uploads/2019/04/Snimok-ekrana-ot-2019-04-11-17-30-47-1024x576.png?nolink&806x453 }}]] Но все эти возможности используются только для отладки. Для реального хранения данных используются клиенты memcached для разных языков программирования. Их очень просто установить. Давайте рассмотрим это на примере Php. ==== 4. Настройка Memcached и Php ==== Давайте рассмотрим настройку библиотеки Memcached для Php. Чтобы её установить, выполните: ''sudo apt install php-memcached'' [[https://losst.pro/wp-content/uploads/2019/04/Snimok-ekrana-ot-2019-04-11-17-43-25.png|{{ https://losst.pro/wp-content/uploads/2019/04/Snimok-ekrana-ot-2019-04-11-17-43-25-1024x576.png?nolink&806x453 }}]] Затем перезапустите apache, если хотите использовать модуль на веб-сервере: ''sudo systemctl restart apache2'' Далее вы можете убедится, что модуль активирован, вызвав функцию phpinfo(): '''' [[https://losst.pro/wp-content/uploads/2019/04/Snimok-ekrana-ot-2019-04-11-17-47-15.png|{{ https://losst.pro/wp-content/uploads/2019/04/Snimok-ekrana-ot-2019-04-11-17-47-15-1024x576.png?nolink&806x453 }}]] ===== Выводы ===== В этой статье мы разобрали, как выполняется установка Memcached Ubuntu, а также как использовать этот сервис для кэширования данных из командной строки или в PHP. Не забудьте убедиться, что сервис слушает подключения только на локальном IP- адресе, поскольку здесь нет аутентификации, и к вашим данным смогут получить доступ другие пользователи. Также это может быть небезопасным из-за того, что в Memcached были найдены уязвимости, которые позволяют осуществлять атаку типа отказ в обслуживании.