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洛杉矶DC03机房性能和速度综合评测
- RackNerd洛杉矶DC-02机房速度和性能测评
- 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 -l3、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 startup5、1GB内存是否够用
用于学习和小型连接测试通常可以,但同时运行PostgreSQL、Node.js、Nginx及其他服务后,内存可能较为紧张。可以通过以下命令检查资源使用情况:
free -h
如果频繁出现内存不足或进程被终止,应升级VPS配置或优化应用和数据库参数。
相关推荐:
《RackNerd国外VPS安装和配置GitLab完整教程》
《RackNerd cPanel主机AI网站生成器快速搭建教程》
《RackNerd国外Ubuntu VPS通过WordOps安装WordPress教程》
(本文由美国主机侦探原创,转载请注明出处“美国主机侦探”和原文地址!)
微信扫码加好友进群
主机优惠码及时掌握
QQ群号:164393063
主机优惠发布与交流





