在Debian上实现Node.js项目的自动化部署,可以通过多种方式实现,以下是其中两种常见的方法:
node-ssh
库实现自动化部署node-ssh
是一个用于通过 SSH 协议远程执行命令、传输文件的 Node.js 库。以下是一个基本的示例,展示如何使用 node-ssh
连接到远程服务器并上传本地目录到服务器。
node-ssh
首先,你需要安装 node-ssh
库。如果你使用的是 TypeScript,还需要安装相应的类型文件。
pnpm add node-ssh @types/node-ssh
import { NodeSSH } from "node-ssh";
import { deployConfig } from "./config.js";
import path from "path";
async function deploy() {
const ssh = new NodeSSH();
await ssh.connect(deployConfig);
const result = await ssh.putDirectory(path.resolve("./dist"), "dist");
console.log(result);
ssh.dispose();
}
deploy();
在 config.js
文件中,配置你的服务器信息:
export const deployConfig = {
host: '服务器IP地址',
username: '用户名',
password: '服务器密码'
};
pm2
和 ecosystem.config.js
实现自动化部署pm2
是一个流行的 Node.js 进程管理器,可以用于自动化部署和管理 Node.js 应用。以下是一个示例,展示如何使用 pm2
和 ecosystem.config.js
文件实现自动化部署。
pm2
和 nvm
首先,安装 nvm
(Node Version Manager)来管理 Node.js 版本,然后使用 nvm
安装 Node.js。
curl -o- https://raw.githubusercontent.com/nvm-sh/nvm/v0.39.1/install.sh | bash
source ~/.bashrc
nvm install v14
nvm use v14
安装 pm2
:
sudo npm install -g pm2
ecosystem.config.js
创建一个 ecosystem.config.js
文件来配置你的应用:
module.exports = {
apps: [
{
name: 'my-node-app',
script: 'server.js',
env: {
NODE_ENV: 'production'
}
}
],
deploy: {
production: {
user: 'ubuntu', // 注意:user 必须是你Ubuntu的用户名
host: '服务器IP地址', // 注意:ip 必须正确
ref: 'origin/master',
repo: 'git@bitbucket.org:your-repo/your-app.git', // 注意:必须用 git@.. 开头,不要使用 https:// 开头的
path: '/home/ubuntu/your-app' // 注意:部署路径
}
}
};
你可以使用 pm2
的 deploy
命令来实现自动化部署。例如,在本地开发环境中,你可以编写一个脚本来自动化这个过程:
#!/bin/bash
# 拉取最新代码
git pull origin master
# 安装依赖
npm install
# 使用 pm2 部署到服务器
pm2 deploy production setup
pm2 deploy production update
将这个脚本添加到你的 package.json
中,并设置相应的权限:
"scripts": {
"deploy": "node deploy-script.js"
}
然后运行:
npm run deploy
这样,每次你运行 npm run deploy
时,pm2
就会自动拉取最新代码,安装依赖,并部署到服务器上。
通过以上两种方法,你可以在 Debian 上实现 Node.js 项目的自动化部署。选择哪种方法取决于你的具体需求和项目复杂度。
辰迅云「云服务器」,即开即用、新一代英特尔至强铂金CPU、三副本存储NVMe SSD云盘,价格低至29元/月。点击查看>>