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容器化、配置数据库等)。