在 CentOS 上配置 Node.js 相关权限,通常分几种常见场景。下面按最常见情况给你说明,你可以对号入座。
sudo 运行 Node(临时提权)如果只是偶尔需要权限:
sudo node app.js
⚠️ 不推荐长期用 root 跑 Node 服务。
常见于:
npm ERR! Error: EACCES: permission denied
mkdir ~/.npm-global
npm config set prefix '~/.npm-global'
然后加到环境变量:
echo 'export PATH=~/.npm-global/bin:$PATH' >> ~/.bashrc
source ~/.bashrc
✅ 不用 sudo,安全
sudo chown -R $USER:$USER /usr/lib/node_modules
sudo chown -R $USER:$USER /usr/local/lib/node_modules
Linux 下 1024 以下端口只有 root 能用
用 Nginx 反代:
location / {
proxy_pass http://127.0.0.1:3000;
}
Node 跑在 3000 端口,不用 root。
sudo setcap cap_net_bind_service=+ep $(which node)
chmod +x app.js
./app.js
或:
node app.js
示例 /etc/systemd/system/node.service:
[Service]
User=nodeuser
WorkingDirectory=/var/www/node
ExecStart=/usr/bin/node app.js
sudo systemctl daemon-reload
sudo systemctl start node
✅ 用普通用户跑服务最安全
sudo chown -R nodeuser:nodeuser /var/www/node
sudo chmod -R 755 /var/www/node
✅ 不用 root 跑 Node
✅ npm 用用户目录
✅ 服务用 systemd + 普通用户
✅ 端口用 Nginx 反代
如果你能具体说一下:
我可以直接给你精确命令。