1. 安装Node.js和npm
在Debian上部署JS应用前,需先安装Node.js(运行环境)和npm(包管理器)。推荐通过NodeSource仓库安装特定版本(如16.x/18.x,适配项目需求),或使用**NVM(Node版本管理器)**管理多版本:
curl -fsSL https://deb.nodesource.com/setup_16.x | sudo -E bash - # 添加NodeSource仓库
sudo apt-get install -y nodejs # 安装Node.js及附带npm
curl -o- https://raw.githubusercontent.com/nvm-sh/nvm/v0.39.1/install.sh | bash # 安装NVM
source ~/.bashrc # 加载NVM环境
nvm install 16 # 安装指定版本(如16.x)
nvm use 16 # 切换至该版本
2. 上传应用代码
将本地JS应用代码上传至Debian服务器,常用工具包括scp(命令行)、rsync(增量同步)或FTP/SFTP客户端(如FileZilla):
scp -r /local/path/to/your-app username@server-ip:/remote/path/to/deploy # 示例:scp递归上传
3. 安装项目依赖
进入应用目录,根据package.json文件安装所有依赖(包括生产依赖和开发依赖,生产环境建议用--production优化性能):
cd /remote/path/to/deploy/your-app
npm install # 安装所有依赖
# 生产环境优化(仅安装dependencies,忽略devDependencies)
npm install --production
4. 配置环境变量
若应用需要敏感信息(如数据库密码、API密钥),需通过环境变量传递。推荐使用.env文件(需配合dotenv包)或系统环境变量:
.gitignore避免泄露):.env文件,内容示例:NODE_ENV=production
DATABASE_URL=mongodb://user:pass@localhost:27017/yourdb
API_KEY=your_api_key_here
应用代码中通过require('dotenv').config()加载(需安装dotenv包)。/etc/environment(全局)或~/.bashrc(当前用户),添加变量后执行source生效:echo "NODE_ENV=production" | sudo tee -a /etc/environment
echo "DATABASE_URL=mongodb://user:pass@localhost:27017/yourdb" | sudo tee -a /etc/environment
source /etc/environment
5. 启动应用(进程管理)
为确保应用持续运行(避免终端关闭后退出),推荐使用PM2(Node.js进程管理器):
npm install pm2 -g # 全局安装PM2
pm2 start app.js --name "your-app-name" # 启动应用(app.js为入口文件,可自定义名称)
pm2 save # 保存当前进程列表(防止重启丢失)
pm2 startup # 设置开机自启(根据提示执行命令)
PM2还支持查看日志(pm2 logs)、重启应用(pm2 restart your-app-name)、监控资源(pm2 monit)等功能。
6. 配置反向代理(可选但推荐)
使用Nginx作为反向代理,可将HTTP/HTTPS请求转发至Node.js应用,提升安全性(隐藏端口)、负载均衡及静态文件处理性能:
sudo apt-get update
sudo apt-get install -y nginx
/etc/nginx/sites-available/your-app(如不存在则新建),添加以下内容(替换yourdomain.com为域名/IP,3000为Node.js应用端口):server {
listen 80;
server_name yourdomain.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 ln -s /etc/nginx/sites-available/your-app /etc/nginx/sites-enabled/ # 创建符号链接
sudo nginx -t # 测试配置语法(无错误则继续)
sudo systemctl restart nginx # 重启Nginx生效
7. 可选:配置HTTPS(生产环境必备)
使用Let’s Encrypt免费获取SSL证书,启用HTTPS加密:
sudo apt-get install -y certbot python3-certbot-nginx
sudo certbot --nginx -d yourdomain.com -d www.yourdomain.com # 替换为你的域名
Certbot会自动修改Nginx配置,添加HTTPS监听(443端口)及证书路径,重启Nginx后生效。8. 可选:容器化部署(Docker)
若需环境一致性或快速迁移,可使用Docker容器化应用:
Dockerfile(项目根目录):FROM node:16 # 基于Node.js 16镜像
WORKDIR /usr/src/app # 设置工作目录
COPY package*.json ./ # 复制package.json和package-lock.json
RUN npm install # 安装依赖
COPY . . # 复制应用代码
EXPOSE 3000 # 暴露应用端口
CMD ["node", "app.js"] # 启动命令(替换为你的入口文件)
docker build -t your-js-app . # 构建镜像(标签为your-js-app)
docker run -d -p 3000:3000 --name your-app-container your-js-app # 运行容器(映射端口3000)
若需结合Nginx反向代理,可将容器端口映射至宿主机80/443端口,并调整Nginx配置中的proxy_pass为http://localhost:容器端口。