1. 更新系统包
在开始部署前,确保Debian系统的软件包是最新的,避免因旧版本依赖导致安装冲突:
sudo apt update && sudo apt upgrade -y 2. 安装Node.js与npm
Node.js是JavaScript应用的运行环境,npm是其包管理工具。推荐通过NodeSource仓库安装特定版本(如16.x/18.x),确保兼容性:
# 添加NodeSource仓库(以16.x为例) curl -fsSL https://deb.nodesource.com/setup_16.x | sudo -E bash - # 安装Node.js及npm sudo apt install -y nodejs # 验证安装 node -v # 查看Node.js版本 npm -v # 查看npm版本 3. 上传应用代码
将本地JavaScript应用(如通过Git管理的仓库)上传至服务器。常用方法:
scp -r ./local-app user@server-ip:/path/to/deploy git clone https://github.com/yourusername/your-app.git /path/to/deploy 进入应用目录:
cd /path/to/deploy 4. 安装应用依赖
应用目录中的package.json文件记录了项目依赖,通过以下命令安装:
npm install # 若需安装生产环境依赖(忽略devDependencies),可添加--production参数 npm install --production 5. 配置环境变量
若应用需要敏感配置(如数据库密码、API密钥),建议使用.env文件管理(需安装dotenv包)。创建.env文件并添加变量:
# 示例:.env文件内容 NODE_ENV=production DB_HOST=localhost DB_USER=root DB_PASS=yourpassword 在代码中通过require('dotenv').config()加载(需在入口文件顶部添加)。
6. 使用PM2管理应用进程
PM2是Node.js进程管理工具,可实现后台运行、自动重启、日志管理等功能。安装PM2并启动应用:
# 全局安装PM2 sudo npm install -g pm2 # 启动应用(假设入口文件为app.js) pm2 start app.js --name "my-js-app" # 保存当前进程列表(确保服务器重启后自动恢复) pm2 save # 查看应用状态 pm2 status # 查看实时日志 pm2 logs my-js-app 7. 配置Nginx反向代理(可选但推荐)
Nginx可作为反向代理,处理HTTP请求转发、静态文件服务及SSL加密。安装Nginx:
sudo apt install -y nginx 创建Nginx配置文件(如/etc/nginx/sites-available/my-js-app),添加以下内容(替换your-domain.com为域名/IP):
server { listen 80; server_name your-domain.com; 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; } } # 启用配置(创建软链接至sites-enabled目录) sudo ln -s /etc/nginx/sites-available/my-js-app /etc/nginx/sites-enabled # 测试Nginx配置语法 sudo nginx -t # 重启Nginx生效 sudo systemctl restart nginx 8. 设置防火墙规则
若服务器启用了ufw防火墙,需开放HTTP(80)和HTTPS(443)端口:
sudo ufw allow 'Nginx Full' # 允许HTTP和HTTPS sudo ufw enable # 启用防火墙(若未启用) 9. 配置HTTPS(可选但强烈推荐)
使用Let’s Encrypt免费获取SSL证书,实现HTTPS加密。安装Certbot及Nginx插件:
sudo apt install -y certbot python3-certbot-nginx # 获取证书并自动配置Nginx sudo certbot --nginx -d your-domain.com # 按提示完成验证(如输入邮箱、同意条款) 证书会自动续期,无需手动操作。
10. 监控与维护
pm2 logs查看应用日志,或配置Nginx日志分析(如使用GoAccess)。npm outdated检查过时依赖,使用npm update更新。以上流程覆盖了Debian服务器上JavaScript应用部署的核心步骤,可根据实际需求调整(如使用Docker容器化、配置数据库等)。