三亩地 三亩地SAN MU DI · CODE DIARY
ARTICLE DETAIL

日记详情

真实记录编程学习的某一天,欢迎挑你感兴趣的翻一翻。

Windows开发到Linux部署:Node.js网页项目全流程指南

Windows开发到Linux部署:Node.js网页项目全流程指南

1. 项目概述:跨平台网页部署方案

在混合开发环境中,经常需要在Windows系统进行前端开发,最终部署到Linux服务器运行。这种跨平台协作模式已经成为现代Web开发的常态。本文将详细讲解如何从Windows环境准备Node.js开发工具链,使用pnpm管理依赖,最终将网页项目部署到Linux服务器的完整流程。

这个方案特别适合以下场景:

  • 开发团队使用Windows工作站但生产环境为Linux
  • 个人开发者需要本地测试后部署到云服务器
  • 需要快速搭建演示环境进行项目展示

2. 环境准备与工具安装

2.1 Windows下Node.js安装

首先在Windows开发机上安装Node.js环境:

  1. 访问Node.js官网下载LTS版本安装包(当前推荐v18.x)
  2. 运行安装向导时勾选"Automatically install the necessary tools"选项
  3. 安装完成后验证版本:
node -v npm -v

注意:避免使用管理员权限运行安装程序,这可能导致后续权限问题。如果已有旧版本,建议先完全卸载再安装新版本。

2.2 pnpm安装与配置

pnpm相比npm/yarn具有更快的安装速度和更节省磁盘空间的优势:

  1. 通过npm全局安装pnpm:
npm install -g pnpm
  1. 验证安装:
pnpm -v
  1. 配置镜像源加速下载(国内用户建议):
pnpm config set registry https://registry.npmmirror.com

常见问题解决:

  • 如果出现"pnpm不是可执行命令",需要将pnpm全局路径添加到系统PATH
  • 安装失败可尝试清理缓存:npm cache clean --force

3. 项目开发与构建

3.1 初始化前端项目

使用pnpm创建项目:

pnpm create vite my-project --template vue cd my-project pnpm install pnpm run dev

项目结构说明:

  • node_modules/:pnpm使用硬链接存储依赖,节省空间
  • package.json:定义项目依赖和脚本
  • vite.config.js:构建配置文件

3.2 生产环境构建

开发完成后执行构建:

pnpm run build

构建产物默认输出到dist目录,包含:

  • 静态HTML文件
  • 压缩后的JS/CSS资源
  • 资源哈希命名用于缓存控制

技巧:构建前检查.env.production文件配置生产环境API地址

4. Linux服务器部署

4.1 传输构建产物到Linux

将Windows下生成的dist目录传输到Linux服务器:

# 使用scp命令传输 scp -r dist/ user@server:/path/to/deploy # 或者使用rsync增量同步 rsync -avz dist/ user@server:/path/to/deploy

4.2 Linux环境配置

在Linux服务器上安装Node.js(以Ubuntu为例):

curl -fsSL https://deb.nodesource.com/setup_18.x | sudo -E bash - sudo apt-get install -y nodejs

安装轻量级HTTP服务器:

sudo npm install -g serve

4.3 启动Web服务

运行生产环境服务:

serve -s /path/to/deploy -l 3000

常用参数:

  • -s:处理单页应用路由
  • -l:指定监听端口
  • -n:不显示服务器信息

5. 高级部署方案

5.1 使用PM2进程管理

安装PM2实现持久化运行:

npm install -g pm2 pm2 start serve --name "my-web" -- -s -l 3000 /path/to/deploy pm2 save pm2 startup

5.2 Nginx反向代理配置

创建Nginx配置文件/etc/nginx/conf.d/web.conf

server { listen 80; server_name example.com; location / { proxy_pass http://localhost:3000; proxy_set_header Host $host; } }

重载Nginx配置:

sudo nginx -t && sudo nginx -s reload

6. 常见问题排查

6.1 跨平台路径问题

Windows和Linux路径格式差异可能导致问题:

  • 在代码中使用path.join()代替硬编码路径
  • 构建脚本中统一使用正斜杠(/)
  • 检查文件权限:chmod -R 755 /path/to/deploy

6.2 端口冲突处理

查看端口占用:

sudo netstat -tulnp | grep :3000

释放端口或修改服务监听端口

6.3 资源加载404

检查:

  • 文件路径大小写(Linux区分大小写)
  • Nginx配置中的root目录是否正确
  • 静态资源是否被打包到正确位置

7. 自动化部署脚本

创建部署脚本deploy.sh

#!/bin/bash # 构建项目 pnpm run build # 同步到服务器 rsync -avz dist/ user@server:/path/to/deploy # 重启服务 ssh user@server "pm2 restart my-web"

添加执行权限:

chmod +x deploy.sh

8. 安全加固建议

  1. 服务器防火墙配置:
sudo ufw allow 80/tcp sudo ufw enable
  1. 限制访问IP(如需):
location / { allow 192.168.1.0/24; deny all; proxy_pass http://localhost:3000; }
  1. 定期更新依赖:
pnpm update npm update -g

9. 性能优化技巧

  1. 开启Gzip压缩(Nginx配置):
gzip on; gzip_types text/plain text/css application/json application/javascript;
  1. 配置缓存策略:
location ~* \.(js|css|png|jpg|jpeg|gif|ico)$ { expires 1y; add_header Cache-Control "public"; }
  1. 使用CDN加速静态资源

10. 监控与维护

  1. 日志查看:
pm2 logs my-web
  1. 资源监控:
pm2 monit
  1. 设置日志轮转:
pm2 install pm2-logrotate pm2 set pm2-logrotate:max_size 10M

这套方案在实际项目中已经稳定运行多年,特别适合中小型项目的快速部署。根据项目规模,后续可以考虑引入Docker容器化部署或CI/CD自动化流程。

← 返回列表