你提到的“Debian Node.js 日志权限问题”比较宽泛,我先从常见场景 + 原因 + 解决办法给你梳理一下,基本能覆盖 90% 的情况。
EACCES典型错误:
Error: EACCES: permission denied, open '/var/log/app/app.log'
原因
/var/log/app)属主不是运行 Node 的用户解决
# 假设 Node 用 www-data 运行
sudo mkdir -p /var/log/app
sudo chown -R www-data:www-data /var/log/app
或开发环境直接放用户目录:
./logs/app.log
PM2 默认日志位置:
~/.pm2/logs/
问题
sudo pm2 start 启动解决 统一用户运行 PM2:
sudo chown -R $USER:$USER ~/.pm2
pm2 kill
pm2 start app.js
如果你用:
[Service]
User=node
但日志路径:
/var/log/node-app.log
解决
sudo touch /var/log/node-app.log
sudo chown node:node /var/log/node-app.log
或让 systemd 用 StandardOutput:
StandardOutput=append:/var/log/node-app.log
StandardError=append:/var/log/node-app.err
容器内:
/app/logs/app.log
原因
解决
RUN mkdir -p /app/logs \
&& chown -R node:node /app
USER node
或 docker run:
-v $(pwd)/logs:/app/logs
宿主机:
sudo chown -R 1000:1000 logs
✅ 不要直接用 root 跑 Node
✅ 日志目录单独建,权限明确
✅ 生产环境用 systemd 或 PM2 管理
✅ 日志用 winston / pino 控制路径
示例目录权限:
/var/log/myapp
├── app.log
├── error.log
sudo chown -R appuser:appuser /var/log/myapp
如果你愿意,可以告诉我:
我可以直接帮你写对应配置文件 + 权限命令。