Наши серверы используют службу Shared Redis. Если вы желаете использовать Redis в своем веб-приложении, вам следует активировать локальныую инстанцию Redis в своей учетной записи в соответствии с рекомендациями по безопасности. Для этого:
1. В панели администратора cPanel откройте Files -> File Manager
2. Дважды щелкните на папке «etc»
3. В левом верхнем углу нажмите кнопку «+Folder» и добавьте папку с именем «redis» (без кавычек)
4. Перейдите в папку «redis» и в левом верхнем углу нажмите кнопку «+Folder» и добавьте папку с именем «data» (без кавычек)
5. В то же время в папке «redis» добавьте новый файл — слева вверху нажмите кнопку «+File» и добавьте файл с именем «redis.conf» (без кавычек)
6. Щелкните правой кнопкой мыши на файле «redis.conf» и выберите «Edit»
7. Добавьте следующие строки в файл:

port 0
unixsocket /home/YOURUSERNAME/etc/redis/redis.sock
unixsocketperm 740
daemonize yes
requirepass SECUREPASSWORD
dir /home/YOURUSERNAME/etc/redis/data/
pidfile /home/YOURUSERNAME/etc/redis/redis.pid
maxmemory 512mb
maxmemory-policy allkeys-lru
databases 16
save 900 1
save 300 10
save 60 10000
stop-writes-on-bgsave-error yes
rdbcompression yes
rdbchecksum yes
dbfilename dump.rdb

8. Проверьте, что «YOURUSERNAME» был правильно заменен во всех местах файла на ваше имя пользователя панели администрирования cPanel (np12345 или r12345)
9. Убедитесь, что «SECUREPASSWORD» был изменен на безопасный пароль по вашему выбору (в противном случае можно легко получить доступ к данным в базе данных Redis!)
10. Сохраните файл кнопкой «Save Changes» и нажмите «Close»
11. В панели администратора cPanel перейдите в раздел: Advanced -> Cron Jobs
12. Добавьте новую запись на страницу, выбрав «Once Per Minute» в первом раскрывающемся списке и добавив следующую строку в текстовое поле «Command»:

/usr/bin/flock -n /home/YOURUSERNAME/etc/redis/redis.lock /bin/redis-server /home/YOURUSERNAME/etc/redis/redis.conf > /dev/null 2>&1

13. Проверьте, что «YOURUSERNAME» в строке «Command» было правильно заменено во всех местах на имя пользователя панели администрирования cPanel (np12345 или r12345)
14. Нажмите кнопку «Add New Cron Job» <- это действие добавляет новое автоматическое задание/проверку, которая перезапустит вашу инстанцию Redis, если он по какой-либо причине не работает!
Поздравляем, ваш экземпляр Redis активируется примерно в течение 1 минуты и может быть подключен через сокет, который вы указали в файле конфигураций в строке «unixsocket», и использует пароль, который вы указали в строке «requirepass» в том же файле

 

Пример руководства по проверке корректности работы вашей инстанций Redis:
– В cPanel перейдите в раздел Advanced -> Terminal и введите в командной строке:

redis-cli -s /home/YOURUSERNAME/etc/redis/redis.sock -a SECUREPASSWORD PING

(Где «YOURUSERNAME» и «SECUREPASSWORD» должны быть заменены на имя пользователя cPanel и безопасный пароль, сохраненный в файле .conf, соответственно)
– Если все работает, то на экране Redis отобразится «PONG» — ваш экземпляр Redis работает и на него можно отправлять запросы/данные

 

Использование Redis:
– вам следует указать сокет вместо TCP-соединения в настройках вашего развернутого скрипта/дополнения
– кроме того, в настройках вставьте местоположение сокета там (в файле .conf строка без пробела в виде “/home/YOURUSERNAME/etc/redis/redis.sock”) и пароль инстанций (тот, который вы установили вместо «SECUREPASSWORD» в файле .conf!)

 

Пример скрипта для использования redis через PHP:

<?php
//Connecting to Redis server is localhost
 $redis = new Redis();
 $redis->connect('/home/YOURUSERNAME/etc/redis/redis.sock');
 $redis->auth('SECUREPASSWORD');
 echo "Connection to server successfully";
 //check whether the server is running or not
 echo "Server is running: ".$redis->ping();
?>

 

Если вы управляете несколькими учетными записями cPanel в наших Сервисах:
И вы желаете активировать больше автоматически локальных Redis для каждой учетной записи пользователя – вы должны добавить его в корневую папку учетной записи пользователя и запустить скрипт Bash с расширением файла .sh.:

#!/bin/bash
CONFIG_DIR="/home/$USER/etc/redis"
CONFIG_FILE="$CONFIG_DIR/redis.conf"
SOCK_FILE="$CONFIG_DIR/redis.sock"
PID_FILE="$CONFIG_DIR/redis.pid"
USER_REDIS_DIR="/home/$USER/etc/redis/data"
REDIS_CLI=$(which redis-cli)  # Update this path based on your redis-cli location
REDIS_SERVER=$(which redis-server)  # Update this path based on your redis-server location
RCRON_TXT="/usr/bin/flock -n $CONFIG_DIR/redis.lock $REDIS_SERVER $CONFIG_FILE"

echo "Step 1: Creating REDIS instance directories"
mkdir -pv $CONFIG_DIR
chmod 755 $CONFIG_DIR
mkdir -pv $USER_REDIS_DIR
chmod 755 $USER_REDIS_DIR

echo "#################"
echo "Step 2: Creating New Redis Config For $USER"
touch $CONFIG_FILE
chmod 644 $CONFIG_FILE
PASSWORD=$(openssl rand -base64 15)

if [ -f $config_file ]; then
    {
        echo "port 0"
        echo "unixsocket $SOCK_FILE"
        echo "unixsocketperm 740"
        echo "daemonize yes"
        echo "requirepass $PASSWORD"
        echo "dir $USER_REDIS_DIR"
        echo "pidfile $PID_FILE"
        echo "maxmemory 512mb"
        echo "maxmemory-policy allkeys-lru"
        echo "databases 16"
        echo "save 900 1"
        echo "save 300 10"
        echo "save 60 10000"
        echo "stop-writes-on-bgsave-error yes"
        echo "rdbcompression yes"
        echo "rdbchecksum yes"
        echo "dbfilename dump.rdb"
    } > $CONFIG_FILE
else
    echo "Failed to create the config file $CONFIG_FILE" >&2
    exit 1
fi
echo "#################"
echo "Step 3: Generating CRONTAB entry for $USER"

(crontab -l 2>/dev/null; echo "* * * * * $RCRON_TXT >/dev/null 2>&1") | crontab -

echo "#################"
echo "Step 4: Everything is done, starting instance by command for $USER"
echo  $RCRON_TXT
# Start Redis server and capture the output
output=$($RCRON_TXT)
echo "#################"

if [ -f $CONFIG_DIR/redis.lock  ]; then
    echo "#################"
    echo "Config for $USER is:"
    echo "#################"
    echo "Socket: $SOCK_FILE"
    echo "Password: $PASSWORD"
    echo "#################"
else
    echo "FAILED to start Redis for $USER"
    exit 1
fi

 

Radicenter 2024