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版本控制(确保代码可追溯):
sudo apt install -y git;git clone https://github.com/your-username/your-node-app.git;cd your-node-app。scp -r local-project-path username@server-ip:/remote/path上传。3. 依赖与配置管理
进入项目目录后,仅安装生产环境依赖(避免不必要的devDependencies占用空间):npm install --production。
若项目需要环境变量(如数据库连接字符串、API密钥),推荐使用dotenv包:
npm install dotenv;.env文件,添加变量(如PORT=3000、DATABASE_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加密等功能):
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(无错误则继续);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 # 启用防火墙
sudo apt install -y certbot python3-certbot-nginx
sudo certbot --nginx -d your-domain.com # 替换为你的域名
按提示完成配置,certbot会自动修改Nginx配置文件,启用HTTPS并重定向HTTP至HTTPS。7. 性能优化技巧
pm2 start app.js -i max --name "my-app-cluster" # -i max表示根据CPU核心数自动分配进程数
location /static/ {
alias /path/to/your-project/static/; # 指向项目中的静态文件目录
expires 30d; # 设置缓存时间(可选)
}
mongoose.createConnection的poolSize选项)减少连接建立/销毁的开销,提升数据库访问性能。8. 日志与监控管理
~/.pm2/logs/),可通过pm2 logs查看实时日志,或使用pm2 log rotate设置日志轮转(避免日志文件过大占用磁盘空间)。htop(实时查看CPU、内存占用)或 glances(更全面的系统监控)工具监控服务器状态;使用df -h查看磁盘空间使用情况,避免日志或依赖占用过多空间。