在Ubuntu上部署Node.js应用的完整步骤
1. 准备工作:更新系统
在开始部署前,确保Ubuntu系统是最新的,避免因软件包版本冲突导致问题:
sudo apt update && sudo apt upgrade -y
2. 安装Node.js与npm
Node.js和npm(Node包管理器)是部署的基础。推荐通过NodeSource PPA安装特定版本(如18.x),或使用nvm(Node版本管理器)灵活切换版本:
- 方法1:通过NodeSource PPA安装(推荐生产环境)
选择所需版本(如18.x),运行以下命令:curl -fsSL https://deb.nodesource.com/setup_18.x | sudo -E bash - sudo apt install -y nodejs - 方法2:使用nvm安装(适合多版本管理)
安装nvm后,再安装指定版本:curl -o- https://raw.githubusercontent.com/nvm-sh/nvm/v0.39.7/install.sh | bash source ~/.bashrc nvm install 18
验证安装是否成功:
node -v # 查看Node.js版本(如v18.x.x)
npm -v # 查看npm版本(如9.x.x)
3. 部署Node.js项目
3.1 上传项目到服务器
将本地项目文件上传至服务器(如使用scp命令):
scp -r /本地项目路径/用户名@服务器IP:/远程目标路径/
登录服务器,进入项目目录:
cd /远程目标路径/项目文件夹
3.2 安装项目依赖
项目根目录下的package.json文件记录了所有依赖,运行以下命令安装:
npm install
若项目需要生产环境依赖(忽略devDependencies),可添加--production参数:
npm install --production
3.3 配置环境变量(可选但推荐)
生产环境需设置敏感信息(如数据库密码、API密钥),可通过.env文件或直接导出:
- 方式1:使用
.env文件
在项目根目录创建.env文件,添加变量:安装NODE_ENV=production PORT=3000 DATABASE_URL=mongodb://localhost:27017/mydbdotenv包加载变量:
在入口文件(如npm install dotenvapp.js)顶部引入:require('dotenv').config(); - 方式2:直接导出环境变量
运行以下命令临时生效(重启后失效):export NODE_ENV=production export PORT=3000
4. 启动Node.js应用
4.1 直接启动(不推荐生产环境)
使用node命令启动应用,但进程会在终端关闭后终止:
node app.js # 替换为你的入口文件(如server.js、index.js)
4.2 使用PM2进程管理(推荐生产环境)
PM2可保持应用运行、自动重启、监控性能,安装并启动应用:
sudo npm install -g pm2 # 全局安装PM2
pm2 start app.js --name "my-node-app" # 启动应用并命名
pm2 save # 保存当前进程列表
pm2 startup # 设置PM2开机自启动(按提示执行命令)
查看应用状态:
pm2 list
查看实时日志:
pm2 logs
5. 配置Nginx反向代理(可选但推荐)
Nginx可作为反向代理,处理HTTP请求转发、静态文件服务、SSL卸载,提升应用性能与安全性:
5.1 安装Nginx
sudo apt install nginx -y
5.2 配置Nginx
编辑Nginx配置文件(如/etc/nginx/sites-available/default),替换为以下内容:
server {
listen 80;
server_name your_domain_or_ip; # 替换为域名或服务器IP
location / {
proxy_pass http://localhost: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;
}
# 可选:处理静态文件(如图片、CSS),减少Node.js负载
location /static/ {
alias /path/to/your/static/files/;
expires 30d;
}
}
测试配置语法是否正确:
sudo nginx -t
重启Nginx使配置生效:
sudo systemctl restart nginx
6. 配置防火墙
若服务器启用了ufw(Uncomplicated Firewall),需允许HTTP(80)和HTTPS(443)流量:
sudo ufw allow 'Nginx Full' # 允许HTTP和HTTPS
sudo ufw enable # 启用防火墙(若未启用)
7. 配置SSL证书(推荐)
为应用启用HTTPS,提升安全性。可使用Let’s Encrypt免费获取SSL证书,通过Certbot自动配置Nginx:
sudo apt install certbot python3-certbot-nginx -y
sudo certbot --nginx -d your_domain.com # 替换为你的域名
Certbot会自动修改Nginx配置,添加SSL证书路径及重定向HTTP到HTTPS。
8. 验证部署
打开浏览器,访问http://your_domain_or_ip(或https://your_domain.com),若看到应用页面则表示部署成功。
通过PM2查看应用状态,确认进程正常运行:
pm2 list
以上步骤覆盖了Ubuntu上部署Node.js应用的全流程,涵盖环境准备、项目部署、进程管理、反向代理及安全配置,适合生产环境使用。
以上就是关于“在Ubuntu上如何部署Node.js应用”的相关介绍,筋斗云是国内较早的云主机应用的服务商,拥有10余年行业经验,提供丰富的云服务器、租用服务器等相关产品服务。云服务器资源弹性伸缩,主机vCPU、内存性能强悍、超高I/O速度、故障秒级恢复;电子化备案,提交快速,专业团队7×24小时服务支持!
简单好用、高性价比云服务器租用链接:https://www.jindouyun.cn/product/cvm