在CentOS系统上高效配置Node.js涉及多个步骤,包括安装Node.js、配置环境变量、使用版本管理工具(如nvm)、优化系统设置以及性能调优。以下是详细的配置指南:
添加NodeSource仓库:
curl -sL https://rpm.nodesource.com/setup_14.x | sudo bash -
这里的14.x
是你想要安装的Node.js版本,可以根据需要更改版本号。
安装Node.js和npm:
sudo yum install -y nodejs
验证安装:
node -v
npm -v
安装NVM:
curl -o- https://raw.githubusercontent.com/nvm-sh/nvm/v0.39.1/install.sh | bash
安装Node.js:
nvm install 14
nvm use 14
验证安装:
node -v
npm -v
为了使Node.js和npm命令在全局范围内可用,需要将它们添加到环境变量中。
对于bash用户,编辑~/.bash_profile
文件:
echo 'export PATH=$PATH:/usr/local/bin' >> ~/.bash_profile
source ~/.bash_profile
对于zsh用户,编辑~/.zshrc
文件:
echo 'export PATH=$PATH:/usr/local/bin' >> ~/.zshrc
source ~/.zshrc
确保系统是最新的:
sudo yum update -y
调整内核参数可以提升Node.js的性能。例如:
sudo sysctl -w net.core.somaxconn=10000
sudo sysctl -w net.ipv4.tcp_fin_timeout=15
sudo sysctl -w net.ipv4.tcp_tw_reuse=1
sudo sysctl -w net.ipv4.tcp_tw_recycle=1
使更改生效:
sudo sysctl -p
避免同步I/O操作,使用异步API替代同步I/O可以避免阻塞事件循环。例如:
const fs = require('fs').promises;
fs.readFile('/path/to/file', 'utf8')
.then(data => console.log(data))
.catch(err => console.error(err));
通过Node.js的cluster模块,可以利用多核系统的处理能力。例如:
const cluster = require('cluster');
const numCPUs = require('os').cpus().length;
if (cluster.isMaster) {
for (let i = 0; i < numCPUs; i++) {
cluster.fork();
}
} else {
// 工作进程代码
}
对于频繁访问的数据,使用内存缓存可以减少数据库访问次数。例如,使用node-cache
库进行内存缓存:
const NodeCache = require('node-cache');
const myCache = new NodeCache({ stdTTL: 100, checkperiod: 120 });
const data = myCache.get('key');
if (!data) {
data = 'value';
myCache.set('key', data);
}
console.log(data);
为了提高性能和安全性,可以使用Nginx作为Node.js服务器的反向代理。
安装Nginx:
sudo yum install -y nginx
配置Nginx:
编辑Nginx配置文件(通常位于/etc/nginx/nginx.conf
或/etc/nginx/conf.d/default.conf
),添加以下内容:
server {
listen 80;
server_name your_domain.com;
location / {
proxy_pass http://localhost:3000;
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header X-Forwarded-Proto $scheme;
}
}
重启Nginx:
sudo systemctl restart nginx
sudo systemctl enable nginx
[4,5,6,7,8,9,10,11,12,13,14]