首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >Redis未能创建unix套接字

Redis未能创建unix套接字
EN

Server Fault用户
提问于 2022-08-30 09:15:32
回答 2查看 2.3K关注 0票数 1

我正在尝试将redis设置为使用Unix套接字。

除了在文件末尾添加以下内容外,我使用的是股票Debian安装/etc/redis/redis.conf,这是基于这个信息的:

代码语言:javascript
运行
复制
# create a unix domain socket to listen on 
unixsocket /run/project/redis.sock 

# set permissions for the socket 
unixsocketperm 775 
 
#requirepass passwordtouse 
# bind 127.0.0.1 
 
daemonize yes 
 
# maximum memory allowed for redis 
maxmemory 128Mb 

我请求它在/run/project/redis.socket中创建unix套接字:

代码语言:javascript
运行
复制
# ll /run/project
total 4
drwxrwxrwx  2 michael  www-data 100 Aug 29 16:32 .
drwxr-xr-x 21 root     root     640 Aug 30 10:49 ..

我将用户redis添加到组www-data中,绝望地将redis添加到组michael中。

代码语言:javascript
运行
复制
$ cat /etc/group | grep redis
www-data:x:33:michael,redis
michael:x:1000:www-data,redis
redis:x:119:

对我来说,我认为这些许可是可以的:

代码语言:javascript
运行
复制
$ sudo -u redis touch /run/project/foo
$ ll /run/project/foo
-rw-r--r-- 1 redis redis 0 Aug 30 11:13 /run/project/foo

但是,当我重新启动redis服务器时,它会失败:

代码语言:javascript
运行
复制
$ systemctl restart redis-server.service
Job for redis-server.service failed because the control process exited with error code.
See "systemctl status redis-server.service" and "journalctl -xe" for details.
代码语言:javascript
运行
复制
$ systemctl status redis-server.service
redis-server.service - Advanced key-value store
     Loaded: loaded (/lib/systemd/system/redis-server.service; enabled; vendor preset: enabled)
     Active: failed (Result: exit-code) since Tue 2022-08-30 10:49:52 SAST; 3min 47s ago
       Docs: http://redis.io/documentation,
             man:redis-server(1)
    Process: 2465457 ExecStart=/usr/bin/redis-server /etc/redis/redis.conf --supervised systemd --daemonize no (code=exited, status=1/FAILURE)
   Main PID: 2465457 (code=exited, status=1/FAILURE)
     Status: "Redis is loading..."
        CPU: 23ms

Aug 30 10:49:52 vps systemd[1]: redis-server.service: Main process exited, code=exited, status=1/FAILURE
Aug 30 10:49:52 vps systemd[1]: redis-server.service: Failed with result 'exit-code'.
Aug 30 10:49:52 vps systemd[1]: Failed to start Advanced key-value store.
Aug 30 10:49:52 vps systemd[1]: redis-server.service: Scheduled restart job, restart counter is at 5.
Aug 30 10:49:52 vps systemd[1]: Stopped Advanced key-value store.
Aug 30 10:49:52 vps systemd[1]: redis-server.service: Start request repeated too quickly.
Aug 30 10:49:52 vps systemd[1]: redis-server.service: Failed with result 'exit-code'.
Aug 30 10:49:52 vps systemd[1]: Failed to start Advanced key-value store.

这是日志文件(显然,关于TimeoutStartSec / TimeoutStopSec的警告将被忽略,因此对我的研究来说是如此)。

代码语言:javascript
运行
复制
2465442:C 30 Aug 2022 10:49:51.155 # WARNING supervised by systemd - you MUST set appropriate values for TimeoutStartSec and TimeoutStopSec in your service unit. 
2465442:C 30 Aug 2022 10:49:51.158 # oO0OoO0OoO0Oo Redis is starting oO0OoO0OoO0Oo 
2465442:C 30 Aug 2022 10:49:51.158 # Redis version=6.0.16, bits=64, commit=00000000, modified=0, pid=2465442, just started 
2465442:C 30 Aug 2022 10:49:51.158 # Configuration loaded 
2465442:M 30 Aug 2022 10:49:51.158 # Opening Unix socket: bind: Read-only file system 
代码语言:javascript
运行
复制
$ journalctl -xeu redis.service
-- Journal begins at Mon 2021-08-16 08:09:33 SAST, ends at Tue 2022-08-30 10:59:15 SAST. --
-- No entries --

利用Debian。安装了带有redissudo apt install redis

我尝试了这个解决方案,但是得到了这个错误:

代码语言:javascript
运行
复制
$ sudo systemctl enable redis.service
Failed to enable unit: Refusing to operate on alias name or linked unit file: redis.service

UPDATE: log/config文件的文件权限:

代码语言:javascript
运行
复制
$ ll /var/lib/redis/dump.rdb
-rw-rw---- 1 redis redis 93 Aug 29 14:53 /var/lib/redis/dump.rdb
$ ll /etc/redis/redis.conf 
-rw-r----- 1 redis redis 86461 Aug 30 11:11 /etc/redis/redis.conf
$ ll /var/log/redis/redis-server.log
-rw-rw---- 1 redis adm 22476 Aug 30 11:22 /var/log/redis/redis-server.log

有关停止然后重新运行/usr/bin/redis-server的更新:

代码语言:javascript
运行
复制
$ systemctl stop redis-server.service
$ systemctl status redis-server.service
● redis-server.service - Advanced key-value store
     Loaded: loaded (/lib/systemd/system/redis-server.service; enabled; vendor preset: enabled)
     Active: failed (Result: exit-code) since Tue 2022-08-30 11:22:15 SAST; 1h 44min ago
       Docs: http://redis.io/documentation,
             man:redis-server(1)
    Process: 2682 ExecStart=/usr/bin/redis-server /etc/redis/redis.conf --supervised systemd --daemonize no (code=exited, status=1/FAILURE)
   Main PID: 2682 (code=exited, status=1/FAILURE)
     Status: "Redis is loading..."
        CPU: 24ms

Aug 30 11:22:15 vps systemd[1]: redis-server.service: Main process exited, code=exited, status=1/FAILURE
Aug 30 11:22:15 vps systemd[1]: redis-server.service: Failed with result 'exit-code'.
Aug 30 11:22:15 vps systemd[1]: Failed to start Advanced key-value store.
Aug 30 11:22:15 vps systemd[1]: redis-server.service: Scheduled restart job, restart counter is at 5.
Aug 30 11:22:15 vps systemd[1]: Stopped Advanced key-value store.
Aug 30 11:22:15 vps systemd[1]: redis-server.service: Start request repeated too quickly.
Aug 30 11:22:15 vps systemd[1]: redis-server.service: Failed with result 'exit-code'.
Aug 30 11:22:15 vps systemd[1]: Failed to start Advanced key-value store.
$ /usr/bin/redis-server /etc/redis/redis.conf
$

更新:尝试清洗和重装红色,但没有帮助。如果我使用默认的配置ir启动它,那么安装就可以了:

代码语言:javascript
运行
复制
# systemctl status redis-server.service
● redis-server.service - Advanced key-value store
     Loaded: loaded (/lib/systemd/system/redis-server.service; enabled; vendor preset: enabled)
     Active: active (running) since Tue 2022-08-30 20:52:29 SAST; 44s ago
       Docs: http://redis.io/documentation,
             man:redis-server(1)
   Main PID: 26102 (redis-server)
     Status: "Ready to accept connections"
      Tasks: 5 (limit: 1133)
     Memory: 7.4M
        CPU: 90ms
     CGroup: /system.slice/redis-server.service
             └─26102 /usr/bin/redis-server 127.0.0.1:6379

Aug 30 20:52:29 vps systemd[1]: Starting Advanced key-value store...
Aug 30 20:52:29 vps systemd[1]: Started Advanced key-value store.

但是,当我添加以下内容以使用unix套接字时,它就停止工作了:

代码语言:javascript
运行
复制
unixsocket /run/project/redis.sock

# set permissions for the socket
unixsocketperm 775

requirepass passwordtouse
# bind 127.0.0.1

daemonize yes

# maximum memory allowed for redis
maxmemory 128Mb
EN

回答 2

Server Fault用户

发布于 2022-08-30 09:35:31

我猜你搞砸了必要的redis文件权限。请检查下面的内容,并确保redis可以访问文件/托拉斯。

代码语言:javascript
运行
复制
redis-server.log(and associated logs files)
dump.rdb
Any config file which is read by redis process

更新:如果有什么东西阻止redis启动,在命令下面尝试(根据您的设置更改路径),它将在大多数情况下向您显示确切的问题。

代码语言:javascript
运行
复制
/usr/bin/redis-server /etc/redis/redis.conf
票数 0
EN

Server Fault用户

发布于 2022-09-03 22:03:49

unixsocketperm 777

然后重启redis。

很多关于这个的信息,用谷歌搜索

对我和其他人都有用。

我想我是在这里发现的..。https://github.com/redis/node-redis/issues/204

票数 0
EN
页面原文内容由Server Fault提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://serverfault.com/questions/1109457

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档