在Ubuntu上部署Node.js应用的完整步骤
在开始部署前,确保Ubuntu系统是最新的,避免因软件包版本冲突导致问题:
sudo apt update && sudo apt upgrade -y
Node.js和npm(Node包管理器)是部署的基础。推荐通过NodeSource PPA安装特定版本(如18.x),或使用nvm(Node版本管理器)灵活切换版本:
curl -fsSL https://deb.nodesource.com/setup_18.x | sudo -E bash -
sudo apt install -y nodejs
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)
将本地项目文件上传至服务器(如使用scp命令):
scp -r /本地项目路径/用户名@服务器IP:/远程目标路径/
登录服务器,进入项目目录:
cd /远程目标路径/项目文件夹
项目根目录下的package.json文件记录了所有依赖,运行以下命令安装:
npm install
若项目需要生产环境依赖(忽略devDependencies),可添加--production参数:
npm install --production
生产环境需设置敏感信息(如数据库密码、API密钥),可通过.env文件或直接导出:
.env文件.env文件,添加变量:NODE_ENV=production
PORT=3000
DATABASE_URL=mongodb://localhost:27017/mydb
安装dotenv包加载变量:npm install dotenv
在入口文件(如app.js)顶部引入:require('dotenv').config();
export NODE_ENV=production
export PORT=3000
使用node命令启动应用,但进程会在终端关闭后终止:
node app.js # 替换为你的入口文件(如server.js、index.js)
PM2可保持应用运行、自动重启、监控性能,安装并启动应用:
sudo npm install -g pm2 # 全局安装PM2
pm2 start app.js --name "my-node-app" # 启动应用并命名
pm2 save # 保存当前进程列表
pm2 startup # 设置PM2开机自启动(按提示执行命令)
查看应用状态:
pm2 list
查看实时日志:
pm2 logs
Nginx可作为反向代理,处理HTTP请求转发、静态文件服务、SSL卸载,提升应用性能与安全性:
sudo apt install nginx -y
编辑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
若服务器启用了ufw(Uncomplicated Firewall),需允许HTTP(80)和HTTPS(443)流量:
sudo ufw allow 'Nginx Full' # 允许HTTP和HTTPS
sudo ufw enable # 启用防火墙(若未启用)
为应用启用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。
打开浏览器,访问http://your_domain_or_ip(或https://your_domain.com),若看到应用页面则表示部署成功。
通过PM2查看应用状态,确认进程正常运行:
pm2 list
以上步骤覆盖了Ubuntu上部署Node.js应用的全流程,涵盖环境准备、项目部署、进程管理、反向代理及安全配置,适合生产环境使用。