VPS上部署 Nodejs 应用并和现有应用共存

VPS上部署 Nodejs 应用并和现有应用共存

拜读了~

8 回复

当然可以。以下是一个详细的指南,帮助你在VPS上部署一个Node.js应用,并让它与现有的Web服务(例如Apache或Nginx)共存。

标题:VPS上部署 Nodejs 应用并和现有应用共存

内容:

1. 环境准备

首先,确保你的VPS已经安装了必要的软件包。以Ubuntu为例,你可以通过以下命令来安装Node.js、npm(Node.js的包管理器)以及Nginx:

sudo apt update
sudo apt install nodejs npm nginx

2. 部署Node.js应用

假设你已经有了一个Node.js应用。我们可以使用pm2作为进程管理器来确保应用始终运行。

首先,全局安装pm2

sudo npm install -g pm2

然后,将你的Node.js应用上传到服务器上的某个目录,例如/var/www/myapp

进入该目录并安装依赖:

cd /var/www/myapp
npm install

启动应用:

pm2 start app.js --name myapp

为了确保应用在服务器重启后仍然运行,你可以保存当前的PM2进程列表:

pm2 save

3. 配置Nginx

为了让Node.js应用与现有应用共存,我们需要配置Nginx来代理请求。这里假设你的现有应用已经在80端口运行。

编辑Nginx配置文件:

sudo nano /etc/nginx/sites-available/default

添加一个新的server块来处理Node.js应用的请求:

server {
    listen 80;
    server_name yourdomain.com;

    location / {
        proxy_pass http://localhost:3000; # 假设Node.js应用监听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 nginx -t

如果一切正常,重新加载Nginx以应用更改:

sudo systemctl reload nginx

4. 测试

现在,访问yourdomain.com应该会看到你的Node.js应用。同时,原有的Web服务仍然可以通过其他路径或子域名访问。

结论

通过上述步骤,你可以在VPS上部署Node.js应用,并让它与现有的Web服务共存。这种方法利用了Nginx强大的反向代理功能,使得不同应用能够共享同一台服务器资源。


node有模块叫forever。可以代替楼主的upstart 和monit 那部分操作,并能给你提供日志支持。。

over~

THX , 我去看看,不过 upstart 也有日志的。

非常的好

nginx反向代理路过。

同上,使用nginx反向代理

使用 apache 是有历史原因的。这个 VPS 是和几个同事一起合租的,大家都是放放 wordpress 。最开始用过 nginx ,但是在 nginx 下,url rewirete 规则需要自己去写,没有 .htaccess 来用, wordpress 是支持自动设置 .htaccess 的。大家又懒得去折腾这些,就改用 apache 了,和 wordpress 配合的比较好。

VPS上部署 Node.js 应用并和现有应用共存

要在VPS(虚拟专用服务器)上部署一个Node.js应用,并使其与现有的Web应用共存,可以通过配置Nginx来实现。假设你的现有Web应用是基于Apache或Nginx的静态文件服务,而你想在同一个域名下提供不同的路径给Node.js应用。

步骤1:安装必要的软件

首先确保你的VPS上已经安装了Node.js和Nginx:

sudo apt update
sudo apt install nodejs npm nginx

步骤2:创建Node.js应用

假设你已经有一个简单的Node.js应用。这里是一个基本的Express应用示例:

// app.js
const express = require('express');
const app = express();

app.get('/', (req, res) => {
    res.send('Hello from Node.js App!');
});

const PORT = process.env.PORT || 3000;
app.listen(PORT, () => {
    console.log(`Server running on port ${PORT}`);
});

使用以下命令启动应用:

node app.js

默认情况下,Node.js应用会在本地的3000端口运行。

步骤3:配置Nginx

编辑Nginx配置文件以反向代理到Node.js应用。打开Nginx配置文件(通常位于/etc/nginx/sites-available/default):

sudo nano /etc/nginx/sites-available/default

添加以下配置以使Nginx监听特定路径并将请求转发到Node.js应用:

server {
    listen 80;
    server_name yourdomain.com;

    # 静态文件处理
    location /static/ {
        alias /var/www/html/static/;
    }

    # 反向代理到Node.js应用
    location /api/ {
        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;
    }
}

在这个配置中,所有访问yourdomain.com/api/路径的请求会被代理到运行在本地3000端口的Node.js应用。

步骤4:重启Nginx

保存并退出编辑器,然后重启Nginx以应用更改:

sudo systemctl restart nginx

现在,当用户访问yourdomain.com/api/时,他们将看到Node.js应用的响应,而其他静态文件将继续通过原有的Web服务器处理。

这样就完成了在同一VPS上部署Node.js应用并与现有Web应用共存的过程。

回到顶部