同步发布于个人博客
问题复现
完成 redis.windows-service.conf 的配置后,尝试安装和启动 redis 服务,遇到错误
注:此时配置文件中的 logfile 为 Redis 安装目录外的文件路径
>redis-server --service-install redis.windows-service.conf
>redis-server --service-start
[34496] 17 Jan 22:59:55.442 # Redis service failed to start.
查看日志,没有帮助性的信息
[26292] 17 Jan 22:59:41.266 # Granting read/write access to 'NT AUTHORITY\NetworkService' on: "*****" "******"
[26292] 17 Jan 22:59:41.267 # Redis successfully installed as a service.
多次尝试后发现,当注释掉配置文件中 logfile 的一行时,服务正常启动
>redis-server --service-start
[11916] 17 Jan 22:59:05.428 # Redis service successfully started.
当把 logfile 的参数设置为 Redis 的安装路径时,服务也正常启动
解决方法
多次排查后,确定问题在日志文件的权限上。那么添加权限即可
右键日志文件 > 选择 属性 > 选择 安全 > 点击 编辑 > 点击 添加 > 输入NETWORK SERVICE > 检查名称 > 确定 > 完全控制 打勾✓ > 确定 > 确定
注:NETWORK SERVICE是隐性的用户。另外,查找 NT AUTHORITY\NetworkService 是不行的。
附上 redis 服务启动和停止的 bat 脚本
@echo off
if "%1" == "start" ( redis-server --service-start ) else ( if "%1" == "stop" ( redis-server --service-stop ) else ( echo wrong argument "%1"! ) )