在 CentOS 上配置 Node.js 权限,常见场景有几种,下面按最常用情况给你一套清晰、安全的做法。
不要用 root 直接跑 Node.js
使用 nvm 安装 Node.js + 普通用户运行
adduser nodeuser
passwd nodeuser
切换用户:
su - nodeuser
curl -o- https://raw.githubusercontent.com/nvm-sh/nvm/v0.39.7/install.sh | bash
重新加载环境:
source ~/.bashrc
安装 Node.js:
nvm install 18
nvm use 18
nvm alias default 18
✅ 优点:
sudosudo yum install nodejs -y
/usr/bin/node 属于 rootnpm install -g 会报权限错误mkdir ~/.npm-global
npm config set prefix '~/.npm-global'
添加到环境变量:
echo 'export PATH=~/.npm-global/bin:$PATH' >> ~/.bashrc
source ~/.bashrc
以后:
npm install -g pm2
✅ 不再需要 sudo
sudo npm install -g xxx
原因:
Node 跑在普通端口(如 3000),用 Nginx 转发
sudo yum install nginx -y
Nginx 配置示例:
server {
listen 80;
server_name example.com;
location / {
proxy_pass http://127.0.0.1:3000;
}
}
启动:
sudo systemctl start nginx
sudo systemctl enable nginx
✅ Node 不需要 root
✅ 更安全
sudo setcap cap_net_bind_service=+ep /usr/bin/node
验证:
getcap /usr/bin/node
⚠️ 风险较高,不建议生产环境
sudo chown -R nodeuser:nodeuser /var/www/nodeapp
目录权限:
chmod 755 /var/www/nodeapp
| 项目 | 推荐 |
|---|---|
| Node 安装 | nvm |
| 运行用户 | 普通用户 |
| 端口 | 3000 / 8000 |
| 对外访问 | Nginx |
| 进程管理 | pm2 |
whoami # 不要是 root
node -v
npm -v
npm root -g # 应在用户目录
如果你愿意,可以告诉我:
root 登录?我可以给你完全贴合你服务器的配置方案。