在CentOS上部署Node.js应用可以分为几个步骤。以下是一个基本的指南:
首先,你需要在CentOS上安装Node.js。你可以使用NodeSource的安装脚本来安装特定版本的Node.js。
添加NodeSource仓库:
curl -sL https://rpm.nodesource.com/setup_14.x | sudo bash -
安装Node.js:
sudo yum install -y nodejs
验证安装:
node -v
npm -v
假设你已经有一个Node.js应用,如果没有,你可以创建一个简单的示例应用。
创建项目目录:
mkdir myapp
cd myapp
初始化npm项目:
npm init -y
安装依赖:
npm install express
创建应用文件:
创建一个app.js文件,并添加以下内容:
const express = require('express');
const app = express();
const port = 3000;
app.get('/', (req, res) => {
  res.send('Hello World!');
});
app.listen(port, () => {
  console.log(`App listening at http://localhost:${port}`);
});
为了使你的Node.js应用可以通过HTTP/HTTPS访问,你需要配置Nginx作为反向代理。
安装Nginx:
sudo yum install -y nginx
启动Nginx:
sudo systemctl start nginx
sudo systemctl enable 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_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;
    }
}
重启Nginx:
sudo systemctl restart nginx
确保你的防火墙允许HTTP和HTTPS流量。
sudo firewall-cmd --permanent --zone=public --add-service=http
sudo firewall-cmd --permanent --zone=public --add-service=https
sudo firewall-cmd --reload
你可以使用pm2来管理你的Node.js应用,使其在后台运行并自动重启。
安装pm2:
sudo npm install -g pm2
启动应用:
pm2 start app.js --name myapp
设置pm2开机自启动:
pm2 startup
pm2 save
为了提高安全性,你可以配置SSL证书。
安装Certbot:
sudo yum install -y certbot python2-certbot-nginx
获取并安装SSL证书:
sudo certbot --nginx -d your_domain.com
按照提示完成SSL证书的安装和配置。
通过以上步骤,你可以在CentOS上成功部署一个Node.js应用,并使用Nginx作为反向代理,配置防火墙和SSL证书以提高安全性和可靠性。