恒创科技

广告

DangYun

广告

RackNerd国外VPS搭建Node.js与PostgreSQL运行环境教程

美国云服务器推荐

Node.js适合构建网站后端、API和实时应用,PostgreSQL则是一款成熟的开源关系型数据库。将两者部署在国外VPS上,可以用于搭建企业网站后台、跨境电商系统、SaaS应用以及各类数据服务。本文介绍如何在RackNerd Ubuntu 20.04服务器上安装PostgreSQL,创建数据库和用户,并通过Node.js完成连接测试。

一、购买配置RackNerd国外VPS

RackNerd官网:点击直达

方案 CPU 内存 SSD存储 月流量 端口 价格 购买链接
1GB KVM VPS 1核 1GB 20GB SSD 3TB 1Gbps $21.99/年 点击购买
2GB KVM VPS 2核 2GB 35GB SSD 5TB 1Gbps $35.99/年 点击购买
4GB KVM VPS 3核 4GB 60GB SSD 7TB 1Gbps $59.99/年 点击购买
6GB KVM VPS 6核 6GB 100GB SSD 12TB 1Gbps $89.99/年 点击购买
8GB KVM VPS 7核 8GB 150GB SSD 20TB 1Gbps $119.99/年 点击购买

评测参考:

购买指南:RackNerd KVM VPS购买图文教程

购买RackNerd VPS时,还要根据用户位置选择机房。服务器开通后,可以在管理后台查看IP地址、登录用户及初始密码,然后通过SSH连接服务器。

Windows终端或PowerShell可使用:

ssh root@服务器IP

首次连接时输入yes确认服务器指纹,再输入Root密码即可登录。

建议先更新系统软件包:

sudo apt update
sudo apt upgrade -y

二、安装PostgreSQL

使用Ubuntu软件源安装PostgreSQL及扩展组件:

sudo apt install -y postgresql postgresql-contrib

启动PostgreSQL:

sudo systemctl start postgresql

设置为开机自动启动:

sudo systemctl enable postgresql

检查服务状态:

sudo systemctl status postgresql

如果返回结果包含active (running),说明PostgreSQL已经正常运行。按Q键退出状态页面。

三、创建PostgreSQL用户和数据库

不建议让Node.js应用直接使用PostgreSQL管理员账户,可以为项目创建独立用户和数据库。

切换到postgres系统用户:

sudo -i -u postgres

进入PostgreSQL命令行:

psql

创建数据库用户:

CREATE USER nodeuser WITH PASSWORD '请替换为高强度密码';

创建数据库,并将nodeuser设置为数据库所有者:

CREATE DATABASE nodeapp OWNER nodeuser;

查看数据库列表:

\l

退出PostgreSQL:

\q

返回原来的Linux用户:

exit

示例中的密码必须替换。正式使用时,建议设置包含大小写字母、数字和特殊字符的高强度密码。

四、在RackNerd VPS上安装Node.js

如果服务器尚未安装Node.js,可以通过NodeSource软件源进行安装。下面以Node.js 22为例:

curl -fsSL https://deb.nodesource.com/setup_22.x | sudo -E bash -
sudo apt install -y nodejs

查看Node.js版本:

node -v

查看npm版本:

npm -v

两条命令均能返回版本号,说明Node.js与npm安装成功。

如果项目对Node.js版本有明确要求,应按照项目依赖选择对应版本,不要直接在生产环境中跨大版本升级。

五、创建Node.js项目

创建项目目录:

mkdir node-postgres-demo
cd node-postgres-demo

初始化项目:

npm init -y

安装Node.js PostgreSQL客户端pg:

npm install pg

安装环境变量管理模块:

npm install dotenv

使用环境变量保存数据库连接信息,可以避免将密码直接写入JavaScript源代码。

六、配置数据库连接信息

创建.env文件:

nano .env

填写以下内容:

DB_USER=nodeuser
DB_HOST=127.0.0.1
DB_NAME=nodeapp
DB_PASSWORD=请替换为创建数据库用户时设置的密码
DB_PORT=5432

按Ctrl+O保存,再按Ctrl+X退出。

限制该文件的访问权限:

chmod 600 .env

如果项目代码需要上传至Git仓库,还应将.env加入忽略列表:

echo ".env" >> .gitignore

不要将包含数据库密码的.env文件上传到公开代码仓库。

七、使用Node.js连接PostgreSQL

创建index.js:

nano index.js

写入以下代码:

require('dotenv').config();

const { Client } = require('pg');

const client = new Client({
  user: process.env.DB_USER,
  host: process.env.DB_HOST,
  database: process.env.DB_NAME,
  password: process.env.DB_PASSWORD,
  port: Number(process.env.DB_PORT),
});

async function testConnection() {
  try {
    await client.connect();
    console.log('PostgreSQL数据库连接成功');

    const result = await client.query('SELECT NOW()');
    console.log('数据库当前时间:', result.rows[0].now);
  } catch (error) {
    console.error('数据库连接失败:', error.message);
    process.exitCode = 1;
  } finally {
    await client.end();
  }
}

testConnection();

保存后运行:

node index.js

连接成功时,将看到类似结果:

PostgreSQL数据库连接成功
数据库当前时间:2026-07-22T08:30:00.000Z

具体时间取决于RackNerd VPS和PostgreSQL使用的时区设置。

八、不要向公网开放PostgreSQL端口

本教程将Node.js与PostgreSQL安装在同一台RackNerd VPS上,应用可以通过127.0.0.1:5432连接数据库,不需要对公网开放PostgreSQL端口。

可以通过以下命令检查数据库监听状态:

sudo ss -lntp | grep 5432

如果后续需要将Node.js应用和PostgreSQL部署在不同服务器上,建议通过私有网络、安全隧道或严格限制来源IP的防火墙规则连接,不要直接将5432端口开放给所有公网地址。

九、使用PM2保持Node.js运行

直接执行node index.js后,关闭SSH窗口可能会导致程序结束。正式部署Node.js网站或API时,可以使用PM2管理进程:

sudo npm install -g pm2

启动项目:

pm2 start index.js --name node-postgres-demo

保存当前进程列表:

pm2 save

生成开机启动配置:

pm2 startup

执行后,终端会返回一条带有sudo的命令。复制并运行该命令,即可完成PM2开机启动设置。

查看运行状态:

pm2 status

查看应用日志:

pm2 logs node-postgres-demo

十、配置RackNerd VPS防火墙

如果服务器仅用于SSH登录和Web服务,可以放行SSH、HTTP与HTTPS端口:

sudo ufw allow OpenSSH
sudo ufw allow 80/tcp
sudo ufw allow 443/tcp
sudo ufw enable

查看规则:

sudo ufw status

启用防火墙前,应确保SSH端口已经放行,否则可能无法再次远程登录服务器。如果修改过SSH默认端口,需要放行实际使用的端口。

十一、常见问题

1、提示数据库密码验证失败

如果出现password authentication failed,可以重新设置用户密码:

sudo -u postgres psql

执行:

ALTER USER nodeuser WITH PASSWORD '新的高强度密码';

然后同步修改.env中的DB_PASSWORD。

2、提示数据库不存在

检查.env中的数据库名称是否为nodeapp,也可以运行以下命令查看现有数据库:

sudo -u postgres psql -l

3、Node.js无法连接5432端口

先检查PostgreSQL运行状态:

sudo systemctl status postgresql

再检查端口监听情况:

sudo ss -lntp | grep 5432

由于程序和数据库位于同一台RackNerd国外VPS上,数据库主机地址应填写127.0.0.1或localhost。

4、RackNerd VPS重启后应用没有运行

检查PostgreSQL是否设置为开机启动:

sudo systemctl enable postgresql

同时确认PM2已经执行:

pm2 save
pm2 startup

5、1GB内存是否够用

用于学习和小型连接测试通常可以,但同时运行PostgreSQL、Node.js、Nginx及其他服务后,内存可能较为紧张。可以通过以下命令检查资源使用情况:

free -h

如果频繁出现内存不足或进程被终止,应升级VPS配置或优化应用和数据库参数。

相关推荐:

RackNerd国外VPS安装和配置GitLab完整教程

RackNerd cPanel主机AI网站生成器快速搭建教程

RackNerd国外Ubuntu VPS通过WordOps安装WordPress教程

(本文由美国主机侦探原创,转载请注明出处“美国主机侦探”和原文地址!)

主机侦探企业微信

微信扫码加好友进群

主机优惠码及时掌握

主机侦探QQ群

QQ群号:164393063

主机优惠发布与交流

温馨提示:

1、本站部分图片来源于互联网,如有侵权请联系删除。邮箱:2942802716#qq.com(#改为@)

2、本文评论没有专人回复,如果您有问题请到美国主机侦探论坛提问!

3、美国主机侦探免费为您提供美国主机购买咨询。

RakSmart美国服务器
下一篇
RackNerd国外VPS搭建Node.js与PostgreSQL
已经没有了
返回顶部