温馨提示×

Linux环境下Node.js项目部署配置要点

小樊
42
2025-11-08 20:44:59
栏目: 编程语言

1. 基础环境准备
在Linux服务器上部署Node.js项目前,需完成基础环境配置。首先,更新系统包以确保安全性:sudo apt update && sudo apt upgrade -y(Ubuntu/Debian)或对应CentOS命令。接着,安装必要工具(如git用于代码管理、vim用于编辑):sudo apt install -y git vim wget。最后,不要直接使用系统包管理器安装Node.js(版本陈旧),推荐通过**NVM(Node Version Manager)**安装最新LTS版本(生产环境首选):

curl -o- https://raw.githubusercontent.com/nvm-sh/nvm/v0.39.7/install.sh | bash
source ~/.bashrc
nvm install --lts

验证安装:node -v(应显示v20.x.x及以上)、npm -v

2. 项目代码部署
将本地项目上传至服务器,推荐使用Git版本控制(确保代码可追溯):

  • 服务器端安装git:sudo apt install -y git
  • 克隆项目仓库:git clone https://github.com/your-username/your-node-app.git
  • 进入项目目录:cd your-node-app
    若使用FTP/SCP,可通过scp -r local-project-path username@server-ip:/remote/path上传。

3. 依赖与配置管理
进入项目目录后,仅安装生产环境依赖(避免不必要的devDependencies占用空间):npm install --production
若项目需要环境变量(如数据库连接字符串、API密钥),推荐使用dotenv包

  • 安装:npm install dotenv
  • 在项目根目录创建.env文件,添加变量(如PORT=3000DATABASE_URL=mongodb://localhost:27017/mydb);
  • 在应用入口文件(如app.js)顶部加载:require('dotenv').config()

4. 进程管理与守护
直接使用node app.js启动应用不可靠(SSH断开后进程终止、崩溃无法自启),必须使用PM2进程管理器(Node.js生态最流行的解决方案):

  • 全局安装:npm install pm2 -g
  • 启动应用:pm2 start app.js --name "my-app"--name指定应用名称,便于管理);
  • 常用命令:
    • 查看状态:pm2 status
    • 查看日志:pm2 logs(实时日志)或pm2 logs my-app --lines 100(查看最近100行);
    • 重启应用:pm2 restart my-app
    • 停止应用:pm2 stop my-app
    • 删除应用:pm2 delete my-app
  • 开机自启:运行pm2 startup(根据提示执行生成的命令),然后保存当前进程列表:pm2 save,确保服务器重启后应用自动恢复。

5. 反向代理配置(可选但推荐)
直接通过Node.js监听端口(如3000)存在端口冲突、无法使用HTTPS等问题,推荐使用Nginx作为反向代理(转发请求至Node.js应用,提供静态文件服务、负载均衡、SSL加密等功能):

  • 安装Nginx:sudo apt install -y nginx
  • 配置代理:编辑/etc/nginx/sites-available/default(或新建.conf文件放入sites-available,再通过ln -s链接到sites-enabled),添加以下内容:
    server {
        listen 80;
        server_name your-domain.com;  # 替换为你的域名或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;
        }
    }
    
  • 测试配置有效性:sudo nginx -t(无错误则继续);
  • 重启Nginx:sudo systemctl restart nginx

6. 安全加固措施

  • 防火墙配置:使用ufw(Uncomplicated Firewall)开放必要端口(HTTP:80、HTTPS:443、SSH:22),关闭其他端口:
    sudo ufw allow OpenSSH
    sudo ufw allow http
    sudo ufw allow https
    sudo ufw enable  # 启用防火墙
    
  • HTTPS加密:通过Let’s Encrypt免费获取SSL证书,配置Nginx支持HTTPS(避免数据传输被窃取):
    sudo apt install -y certbot python3-certbot-nginx
    sudo certbot --nginx -d your-domain.com  # 替换为你的域名
    
    按提示完成配置,certbot会自动修改Nginx配置文件,启用HTTPS并重定向HTTP至HTTPS。

7. 性能优化技巧

  • 集群模式:利用PM2的集群模块启动多个Node.js进程,充分利用服务器多核CPU(如4核CPU可启动4个进程):
    pm2 start app.js -i max --name "my-app-cluster"  # -i max表示根据CPU核心数自动分配进程数
    
  • 静态资源服务:将静态文件(如图片、CSS、JS)交由Nginx直接处理(减少Node.js负担),修改Nginx配置:
    location /static/ {
        alias /path/to/your-project/static/;  # 指向项目中的静态文件目录
        expires 30d;  # 设置缓存时间(可选)
    }
    
  • 数据库连接池:若项目使用数据库(如MongoDB、MySQL),使用连接池技术(如mongoose.createConnectionpoolSize选项)减少连接建立/销毁的开销,提升数据库访问性能。

8. 日志与监控管理

  • PM2日志管理:PM2会自动保存应用日志(默认路径~/.pm2/logs/),可通过pm2 logs查看实时日志,或使用pm2 log rotate设置日志轮转(避免日志文件过大占用磁盘空间)。
  • 系统监控:使用htop(实时查看CPU、内存占用)或 glances(更全面的系统监控)工具监控服务器状态;使用df -h查看磁盘空间使用情况,避免日志或依赖占用过多空间。
  • 应用性能监控(APM):集成Sentry、New Relic等APM工具,监控应用性能瓶颈(如慢请求、内存泄漏),及时优化代码。

0