Разделы
Veselov CV | vvShop © 2008 – 2022
Контакты
email:
skype:
Вернуться
» » » 9 - Готовим CentOS 7. Установка и настройка Redis

9 - Готовим CentOS 7. Установка и настройка Redis



yum install redis -y

(для успешного выполнения этой команды, нужен epel-release мы его установили вместе с php ранее)

Старт
systemctl start redis

Смотрим статус
systemctl status redis

Подключаемся к redis
redis-cli -h 127.0.0.1 -p 6379 

ping
INFO
exit

Ставим в автозагрузку
systemctl enable redis.service


Настройки
/etc/redis.conf
/etc/redis-sentinel.conf

nano -w /etc/redis.conf

tcp-keepalive 60
bind 127.0.0.1
appendonly yes
appendfilename "appendonly.aof"

В случае с AOF, Redis ведёт лог операций, которые выполняют клиенты и записывает их в файл (по умолчанию каждую секунду). AOF это аббревиатура от Append Only File, а это означает то, что Redis не изменяет уже записанные данные, а лишь добавляет новые в конец. Благодаря тому, что при использовании AOF, Redis по умолчанию пишет данные на диск каждую секунду, максимум, что вы теряете в случае сбоя при использовании этого режима — это 1 секунда.

Перезагружаем
systemctl restart redis

Если заглянуть в /var/log/redis/redis.log
То можно увидеть два предупреждения
WARNING overcommit_memory is set to 0
WARNING: The TCP backlog setting of 511 cannot be enforced because /proc/sys/net/core/somaxconn is set to the lower value of 128
Исправим первое
nano /etc/sysctl.conf

вставляем строчку
vm.overcommit_memory = 1

выполняем команду
sysctl vm.overcommit_memory=1

Исправим второе
nano /etc/rc.local

Добавляем строчку
sysctl -w net.core.somaxconn=65535

и заодно выполним ее в консоли
sysctl -w net.core.somaxconn=65535


Перезагружаем и смотрим в /var/log/redis/redis.log что все теперь впорядке
systemctl restart redis

Осталось установить модуль redis для php
Так как для php70 его в портах нет, придеться компилировать самому

cd /tmp
wget https://github.com/phpredis/phpredis/archive/php7.zip
yum install unzip -y
unzip php7.zip
cd phpredis-php7
yum install php70-php-devel m4 autoconf -y
/opt/remi/php70/root/usr/bin/phpize
./configure CFLAGS="-O3" --with-php-config=/opt/remi/php70/root/usr/bin/php-config
make clean all
make test
cp /tmp/phpredis-php7/modules/redis.so /opt/remi/php70/root/lib64/php/modules/
echo extension=redis.so > /etc/opt/remi/php70/php.d/redis.ini
rm -rf /tmp/php7.zip && rm -rf /tmp/phpredis-php7

Рестарт
systemctl restart php70-php-fpm

Проверим
php70 -m | grep -i redis

В ответ
redis
Значит модуль стал.
Создаем тестовый файл
nano -w /var/www/test.dev/2.php

<?php
$redis = new Redis();
$redis->connect('localhost:6379');

Проверяем,если ошибка, что класс Redis не существует, не вылетела, то все отлично.
Можно так же запустить бенчмарк, посмотреть как быстро работатет ваш redis
nano -w /var/www/test.dev/2.php

try {
    $redis = new Redis();
    $redis->connect('localhost:6379');
} catch(RedisException $e) {
    exit('Connect error');
}
$benchmark = microtime(true);
for($i=0;$i < 80000; $i++)
    $redis->set('key','value');

echo microtime(true) - $benchmark;


Ошибка
Uncaught RedisException: Redis server went away
Опять этот SELinux......

setsebool -P httpd_can_network_connect=1
semodule -r redis

Не плохо так же перенести стандартные php сессии на redis, для этого
В php.ini прописываем ( наши сессии теперь будут храниться в redis)
nano -w /etc/opt/remi/php70/php-fpm.d/www.conf

php_value[session.save_handler] = redis
php_value[session.save_path]    = tcp://127.0.0.1:6379
# если с паролем то
# session.save_path = "tcp://127.0.0.1:6379?auth=yourverycomplexpasswordhere"

или прямо в файле php
ini_set('session.save_handler', 'redis');
ini_set('session.save_path',    'tcp://127.0.0.1:6379');

Настройки /etc/redis/redis.conf
Перезапускаем
systemctl restart redis
systemctl restart php70-php-fpm

Дописываем в наш файлик
nano -w /var/www/test.dev/2.php

session_start();

Запускаем в браузере. И проверяем создалась ли сессия у нас в redis.

И не забываем посматривать в /var/log/redis
Оставить комментарий
Вверх