温馨提示×

Debian JS如何部署应用

小樊
46
2025-09-19 16:46:24
栏目: 编程语言

1. 安装Node.js和npm
在Debian上部署JS应用前,需先安装Node.js(运行环境)和npm(包管理器)。推荐通过NodeSource仓库安装特定版本(如16.x/18.x,适配项目需求),或使用**NVM(Node版本管理器)**管理多版本:

  • NodeSource方式(适合生产环境,版本可控):
    curl -fsSL https://deb.nodesource.com/setup_16.x | sudo -E bash -  # 添加NodeSource仓库
    sudo apt-get install -y nodejs  # 安装Node.js及附带npm
    
  • NVM方式(适合开发或需要切换版本):
    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包)或系统环境变量:

  • .env文件方式(本地开发常用,需添加至.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应用,提升安全性(隐藏端口)、负载均衡及静态文件处理性能:

  • 安装Nginx:
    sudo apt-get update
    sudo apt-get install -y nginx
    
  • 创建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;
        }
    }
    
  • 启用配置并重启Nginx:
    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加密:

  • 安装Certbot及Nginx插件:
    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容器:
    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_passhttp://localhost:容器端口

0