Я создал виртуальную машину Ubuntu в Azure.Во входящие сетевые фильтры я добавил порты 22 * 1002 * (для SSH ing) и 6379 (для Redis).После этого я SSH зашел в экземпляр из моей оболочки bash, скачал, собрал и установил Redis из исходного кода.Результирующий файл redis.conf
находится в /tmp/redis-stable
, поэтому я отредактировал его, чтобы закомментировать правило bind 127.0.0.1
.
Затем я запустил redis-server redis.conf
из каталога /tmp/redis-stable
, и он запустился нормально, после чего я SSH врезался в другой экземпляр ВМ, запустил redis-cli
и установил несколько ключей,Получил их, работает правильно.
Теперь в Python я запускаю эту команду:
r = redis.Redis(host='same_which_I_use_for_SSHing', port=6379, password='pwd')
Он подключается сразу (выглядит странно).Но затем, когда я пытаюсь выполнить простую команду, такую как r.get("foo")
, я получаю эту ошибку:
>>> r.get("foo")
Traceback (most recent call last):
File "/lib/python3.5/site-packages/redis/connection.py", line 484, in connect
sock = self._connect()
File "/lib/python3.5/site-packages/redis/connection.py", line 511, in _connect
socket.SOCK_STREAM):
File "/usr/local/Cellar/python3/3.5.1/Frameworks/Python.framework/Versions/3.5/lib/python3.5/socket.py", line 732, in getaddrinfo
for res in _socket.getaddrinfo(host, port, family, type, proto, flags):
socket.gaierror: [Errno 8] nodename nor servname provided, or not known
During handling of the above exception, another exception occurred:
Traceback (most recent call last):
File "/lib/python3.5/site-packages/redis/client.py", line 667, in execute_command
connection.send_command(*args)
File "/lib/python3.5/site-packages/redis/connection.py", line 610, in send_command
self.send_packed_command(self.pack_command(*args))
File "/lib/python3.5/site-packages/redis/connection.py", line 585, in send_packed_command
self.connect()
File "/lib/python3.5/site-packages/redis/connection.py", line 489, in connect
raise ConnectionError(self._error_message(e))
redis.exceptions.ConnectionError: Error 8 connecting to username@ip_address. nodename nor servname provided, or not known.
During handling of the above exception, another exception occurred:
Traceback (most recent call last):
File "/lib/python3.5/site-packages/redis/connection.py", line 484, in connect
sock = self._connect()
File "/lib/python3.5/site-packages/redis/connection.py", line 511, in _connect
socket.SOCK_STREAM):
File "/usr/local/Cellar/python3/3.5.1/Frameworks/Python.framework/Versions/3.5/lib/python3.5/socket.py", line 732, in getaddrinfo
for res in _socket.getaddrinfo(host, port, family, type, proto, flags):
socket.gaierror: [Errno 8] nodename nor servname provided, or not known
During handling of the above exception, another exception occurred:
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
File "/lib/python3.5/site-packages/redis/client.py", line 976, in get
return self.execute_command('GET', name)
File "/lib/python3.5/site-packages/redis/client.py", line 673, in execute_command
connection.send_command(*args)
File "/lib/python3.5/site-packages/redis/connection.py", line 610, in send_command
self.send_packed_command(self.pack_command(*args))
File "/lib/python3.5/site-packages/redis/connection.py", line 585, in send_packed_command
self.connect()
File "/lib/python3.5/site-packages/redis/connection.py", line 489, in connect
raise ConnectionError(self._error_message(e))
redis.exceptions.ConnectionError: Error 8 connecting to username@ip_address. nodename nor servname provided, or not known.
Есть идеи, как это исправить?К вашему сведению, username@ip_address
в сообщении об ошибке то же самое, что я использую для SSH от bash и подключения к Redis из Python соответственно:
ssh username@ip_address
r = redis.Redis(host='username@ip_address', port=6379, password='pwd')
Я также попытался добавить bind 0.0.0.0
вфайл redis.conf
после комментирования строки bind 127.0.0.1
.Тот же результат.
Обновление: я попытался установить защищенный режим на no в файле конфигурации, после чего запустил sudo ufw allow 6379
на виртуальной машине.Все тот же результат.Но теперь я получаю странную ошибку при запуске redis-server redis.conf
.Я не получаю типичный куб Redis, который отображается в виде цифры. Вместо этого я получаю:
После этого, если я введу redis-cli
и выполнить простую команду, такую как set foo boo
, я получаю это сообщение об ошибке:
127.0.0.1:6379> set foo 1
(error) MISCONF Redis is configured to save RDB snapshots, but it is currently not able to persist on disk. Commands that may modify the data set are disabled, because this instance is configured to report errors during writes if RDB snapshotting fails (stop-writes-on-bgsave-error option). Please check the Redis logs for details about the RDB error.
Даже завершение работы завершается неудачно после этого.Мне нужно запустить grep
, чтобы найти процесс редис-сервера и убить его вручную, после чего необходимо запустить команду redis-server
, чтобы запустить его нормально.Но, конечно, я все еще не могу подключиться с удаленного Mac.