在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 項目的自動化部署。選擇哪種方法取決于你的具體需求和項目復雜度。