在Ubuntu上如何部署NodeJS应用
导读:在Ubuntu上部署Node.js应用的完整流程 1. 准备工作:更新系统与安装基础依赖 在开始部署前,需确保系统软件包为最新版本,并安装构建Node.js模块所需的工具: sudo apt update && sudo a...
在Ubuntu上部署Node.js应用的完整流程
1. 准备工作:更新系统与安装基础依赖
在开始部署前,需确保系统软件包为最新版本,并安装构建Node.js模块所需的工具:
sudo apt update &
&
sudo apt upgrade -y
sudo apt install -y build-essential libssl-dev
2. 安装Node.js与npm
方法一:通过NodeSource仓库安装(推荐,支持指定版本)
# 导入NodeSource仓库密钥并设置源(以Node.js 20.x为例)
curl -fsSL https://deb.nodesource.com/setup_20.x | sudo -E bash -
# 安装Node.js及npm
sudo apt install -y nodejs
方法二:使用nvm(Node Version Manager,适合多版本管理)
# 安装nvm
curl -o- https://raw.githubusercontent.com/nvm-sh/nvm/v0.39.7/install.sh | bash
# 加载nvm环境
source ~/.bashrc
# 安装最新LTS版本Node.js
nvm install --lts
验证安装:
node -v # 查看Node.js版本(如v20.x.x)
npm -v # 查看npm版本(如10.x.x)
3. 创建并配置Node.js项目
初始化项目
mkdir my-node-app &
&
cd my-node-app
npm init -y # 生成package.json文件
安装依赖(以Express框架为例)
npm install express --save
编写服务器代码(server.js
)
const express = require('express');
const app = express();
const port = process.env.PORT || 3000;
// 支持环境变量指定端口
app.get('/', (req, res) =>
{
res.send('Hello World from Ubuntu Node.js Server!');
}
);
app.listen(port, () =>
{
console.log(`Server running at http://localhost:${
port}
/`);
}
);
4. 启动应用与进程管理(使用PM2)
PM2是Node.js进程管理工具,可实现后台运行、自动重启、日志管理及开机自启。
安装PM2
sudo npm install -g pm2
启动应用
pm2 start server.js --name "my-node-app" # 以“my-node-app”名称启动
常用PM2命令
pm2 list # 查看所有管理的进程
pm2 logs # 查看应用日志
pm2 restart my-node-app # 重启应用
pm2 stop my-node-app # 停止应用
设置开机自启
pm2 startup # 生成开机自启脚本(根据提示执行后续命令,如sudo su -c "env PATH=$PATH:/usr/bin pm2 startup ubuntu -u ubuntu --hp /home/ubuntu")
pm2 save # 保存当前进程列表到开机启动配置
5. 配置Nginx反向代理(生产环境必备)
Nginx可作为反向代理,处理HTTP请求转发、SSL卸载及静态文件服务,提升应用性能与安全性。
安装Nginx
sudo apt install -y nginx
配置Nginx
编辑默认站点配置文件(或新建自定义配置):
sudo nano /etc/nginx/sites-available/default
替换server
块内容为以下配置(假设应用运行在3000
端口,域名替换为你的实际域名或IP):
server {
listen 80;
server_name your-domain.com www.your-domain.com;
# 替换为你的域名或IP
location / {
proxy_pass http://127.0.0.1:3000;
# 转发到Node.js应用端口
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 # 测试配置语法(无错误则显示“syntax is ok”)
sudo systemctl restart nginx # 重启Nginx生效配置
6. 生产环境优化补充
配置环境变量
将敏感信息(如数据库密码、API密钥)存储在环境变量中,避免硬编码:
# 编辑~/.bashrc或项目根目录的.env文件(推荐)
echo "PORT=3000\nNODE_ENV=production" >
>
~/.bashrc
source ~/.bashrc
在代码中通过process.env.PORT
访问变量。
防火墙设置
允许HTTP(80)及HTTPS(443)流量通过:
sudo ufw allow 'Nginx Full' # 允许Nginx全部流量
sudo ufw enable # 启用防火墙
sudo ufw status # 查看防火墙状态
自动化部署(可选)
通过Git钩子或CI/CD工具(如GitHub Actions、GitLab CI)实现代码自动拉取与重启:
# 示例:简单的自动化部署脚本(save为deploy.sh)
#!/bin/bash
cd /path/to/my-node-app
git pull origin main
npm install
pm2 restart my-node-app
sudo systemctl reload nginx
chmod +x deploy.sh # 赋予执行权限
./deploy.sh # 执行部署
通过以上步骤,你可在Ubuntu上完成Node.js应用的生产级部署,确保应用稳定运行并具备良好的扩展性。
声明:本文内容由网友自发贡献,本站不承担相应法律责任。对本内容有异议或投诉,请联系2913721942#qq.com核实处理,我们将尽快回复您,谢谢合作!
若转载请注明出处: 在Ubuntu上如何部署NodeJS应用
本文地址: https://pptw.com/jishu/728453.html