在 Ubuntu 上用 Node.js 建服务,一般分 “写服务代码” 和 “让服务一直运行(开机自启)” 两部分。下面给你一套常用、实用的做法。
# 更新软件源
sudo apt update
# 安装 Node.js 和 npm
sudo apt install nodejs npm -y
# 查看版本
node -v
npm -v
推荐用 Node 18+,如果需要新版本,可以用
nvm安装。
新建目录和文件:
mkdir my-server
cd my-server
nano server.js
server.js 示例(HTTP 服务):
const http = require('http');
const server = http.createServer((req, res) => {
res.writeHead(200, { 'Content-Type': 'text/plain' });
res.end('Hello from Node.js!\n');
});
server.listen(3000, () => {
console.log('Server running at http://localhost:3000');
});
运行:
node server.js
浏览器访问:
http://服务器IP:3000
npm init -y
npm install express
server.js:
const express = require('express');
const app = express();
app.get('/', (req, res) => {
res.send('Hello Express!');
});
app.listen(3000, () => {
console.log('Server on port 3000');
});
sudo npm install -g pm2
pm2 start server.js
pm2 startup
pm2 save
常用命令:
pm2 list
pm2 logs
pm2 restart server.js
pm2 stop server.js
✅ 支持开机自启、崩溃自动重启
新建服务文件:
sudo nano /etc/systemd/system/node-server.service
内容示例:
[Unit]
Description=Node.js Server
After=network.target
[Service]
ExecStart=/usr/bin/node /home/ubuntu/my-server/server.js
WorkingDirectory=/home/ubuntu/my-server
User=ubuntu
Restart=always
[Install]
WantedBy=multi-user.target
启动:
sudo systemctl daemon-reload
sudo systemctl start node-server
sudo systemctl enable node-server
查看状态:
sudo systemctl status node-server
sudo ufw allow 3000
| 场景 | 建议 |
|---|---|
| 学习 / 测试 | node server.js |
| 生产环境 | PM2 或 systemd |
| 对外访问 | Nginx 反代 + Node |
| HTTPS | Nginx + Let’s Encrypt |
如果你愿意,可以告诉我:
我可以直接给你一套完整配置。