【记录 centos7 systemd.service 配置日志输出不生效问题】

[原service配置]:
StandardOutput=append:/some_path/log/access.log
StandardError=append:/some_path/log/err.log
已确认了目录权限没有问题。

[查看 systemd 错误日志]:
journalctl -u some_service -b
大量的错误信息:
Failed to parse output specifier, ignoring: /some_path/access.log

[真正的原因 systemd 版本问题]:
参考: https://unix.stackexchange.com/questions/321709/redirect-systemd-service-logs-to-file
说明:
systemd v236 之后版本支持 file。 (自动创建文件)
systemd v240 之后版本支持 append。(即每次重启后不会覆盖原文件)

[验证]:
$ sudo systemctl --version
systemd 237
所以不支持 append。

[解决]:
[start_django.sh]:

#!/bin/bash
/usr/bin/python3 /opt/django/manage.py runserver 0.0.0.0:6969 >> /opt/django/log.txt 2>&1

[/etc/systemd/system/django.service]:

[Unit]
Description=Django_Service
After=network.target

[Service]
User=root
Group=root
WorkingDirectory=/opt/djangoProject111
ExecStart=/bin/bash /opt/djangoProject111/start_django.sh
Restart=always

[Install]
WantedBy=multi-user.target

========================================

【为何 systemctl stop 有效?】

进程管理
systemd 监控 ExecStart 命令启动的主进程,并确保其在服务运行期间存活。

日志记录
journalctl 中会记录启动和停止服务的行为。

Restart=always
虽然设置了 Restart=always,但手动停止服务时不会自动重启,这是 systemd 的设计行为,避免冲突。

<think>好的,我现在需要帮助用户解决如何在CentOS 7配置Redis的开机自启动。首先,我得回想一下CentOS 7的服务管理机制,知道它使用的是systemd,所以用户需要创建一个systemd服务单元文件。 接下来,我需要确定用户是否已经安装了Redis。如果用户是从源代码安装的,可能默认没有systemd服务文件,而如果是通过yum安装的,可能已经存在。不过根据常见情况,用户可能使用的是源码安装,所以需要手动创建服务文件。 然后,我需要考虑服务文件的正确配置。包括ExecStart指向正确的redis-server路径和配置文件位置,以及设置相关的运行参数。需要确保路径正确,否则服务无法启动。同时,用户可能需要修改Type为forking,如果Redis以守护进程运行的话。 权限也是一个关键点,服务文件应该放在/etc/systemd/system/目录下,并且需要执行systemctl daemon-reload来重新加载配置。此外,可能需要检查Redis的数据目录和日志文件的权限,确保redis用户有写入权限,避免启动失败。 用户可能遇到的问题包括路径错误、权限不足,或者SELinux设置导致的问题。需要提示用户检查日志,使用journalctl -u redis.service来查看错误信息,并考虑暂时禁用SELinux或调整策略。 最后,要确保用户完成所有步骤后测试服务是否正常启动,并验证开机自启动是否生效。可能还需要提醒用户如果遇到防火墙问题,需要开放相应的端口,但这个问题可能超出当前问题的范围,不过可以作为附加提示。</think>### CentOS 7 配置 Redis 开机自启动指南(Systemd 方式) --- #### **一、创建 Systemd 服务文件** 1. 新建服务配置文件: ```bash sudo vim /etc/systemd/system/redis.service ``` 2. 写入以下内容(按实际情况修改关键路径): ```ini [Unit] Description=Redis In-Memory Data Store After=network.target [Service] Type=simple User=redis Group=redis ExecStart=/usr/local/bin/redis-server /etc/redis.conf # Redis安装路径和配置文件路径 ExecStop=/usr/local/bin/redis-cli shutdown # 停止命令 Restart=always RestartSec=3 LimitNOFILE=65535 OOMScoreAdjust=-1000 [Install] WantedBy=multi-user.target ``` --- #### **二、关键配置说明** 1. **路径检查**: - 使用 `which redis-server` 确认二进制文件路径 - 默认配置文件路径通常为 `/etc/redis.conf` 2. **专用用户**(建议操作): ```bash sudo groupadd redis sudo useradd -r -g redis -s /bin/false redis ``` 3. **权限设置**: ```bash sudo chown -R redis:redis /var/lib/redis # 数据目录 sudo chown redis:redis /etc/redis.conf # 配置文件 ``` --- #### **三、启用并测试服务** 1. 重载 systemd 配置: ```bash sudo systemctl daemon-reload ``` 2. 启动 Redis 服务: ```bash sudo systemctl start redis ``` 3. 设置开机自启: ```bash sudo systemctl enable redis ``` 4. 验证服务状态: ```bash sudo systemctl status redis # 输出应显示 "active (running)" ``` --- #### **四、常见问题排查** 1. **路径错误**: ```bash # 查看日志定位问题 journalctl -u redis.service -b --no-pager ``` 2. **权限问题**: ```bash # 检查数据目录和日志文件权限 sudo chmod 755 /var/log/redis.log ``` 3. **SELinux 限制**(可选): ```bash # 临时禁用 sudo setenforce 0 # 或创建 SELinux 策略 sudo audit2allow -a -M redispolicy < /var/log/audit/audit.log sudo semodule -i redispolicy.pp ``` --- #### **五、补充说明** | 配置项 | 作用 | | --- | --- | | `Type=simple` | 标准服务类型 | | `Restart=always` | 异常退出自动重启 | | `OOMScoreAdjust` | 降低被 OOM Killer 终止的概率 | --- ### 完整操作流程示例 ```bash # 步骤 1:创建服务文件 sudo tee /etc/systemd/system/redis.service <<'EOF' [Unit] Description=Redis Server After=network.target [Service] Type=forking ExecStart=/usr/local/bin/redis-server /etc/redis.conf ExecStop=/usr/local/bin/redis-cli shutdown Restart=always User=redis Group=redis [Install] WantedBy=multi-user.target EOF # 步骤 2:创建 Redis 用户 sudo groupadd -r redis && sudo useradd -r -g redis redis # 步骤 3:设置权限 sudo mkdir -p /var/lib/redis sudo chown redis:redis /var/lib/redis # 步骤 4:启用服务 sudo systemctl daemon-reload sudo systemctl enable --now redis ``` --- ### 通过 Yum 安装的 Redis 额外说明 如果通过 EPEL 仓库安装: ```bash sudo yum install -y epel-release sudo yum install -y redis # 直接使用预置服务文件 sudo systemctl enable redis ```
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值