在 CentOS 下部署 Node.js 项目,通常可以按下面步骤来做(以 CentOS 7/8 为例,适用于大多数情况)。
# 安装依赖
sudo yum install -y gcc-c++ make curl
# 添加 NodeSource(以 Node 18 为例)
curl -sL https://rpm.nodesource.com/setup_18.x | sudo bash -
# 安装 Node.js
sudo yum install -y nodejs
# 验证
node -v
npm -v
curl -o- https://raw.githubusercontent.com/nvm-sh/nvm/v0.39.5/install.sh | bash
source ~/.bashrc
nvm install 18
# 方式一:scp
scp -r your_project user@server:/opt/your_project
# 方式二:git
git clone https://github.com/your/repo.git
cd /opt/your_project
npm install --production
node app.js
# 或
npm start
⚠️ 直接
node启动会占用终端,关闭终端服务就停了
sudo npm install -g pm2
pm2 start app.js --name my-node-app
pm2 list
pm2 logs
pm2 restart my-node-app
pm2 stop my-node-app
pm2 delete my-node-app
pm2 startup
pm2 save
sudo yum install -y nginx
sudo systemctl start nginx
sudo systemctl enable nginx
编辑配置文件:
sudo vi /etc/nginx/conf.d/node.conf
示例:
server {
listen 80;
server_name example.com;
location / {
proxy_pass http://127.0.0.1:3000;
proxy_http_version 1.1;
proxy_set_header Upgrade $http_upgrade;
proxy_set_header Connection 'upgrade';
proxy_set_header Host $host;
proxy_cache_bypass $http_upgrade;
}
}
sudo nginx -t
sudo systemctl reload nginx
# 开放 80 / 443
sudo firewall-cmd --permanent --add-service=http
sudo firewall-cmd --permanent --add-service=https
sudo firewall-cmd --reload
sudo yum install -y certbot python3-certbot-nginx
sudo certbot --nginx
Nginx (80/443)
↓
PM2 (Node.js)
↓
Node App (localhost:3000)
如果你愿意,我可以: