态势感知平台-自动化服务器部署配置

This commit is contained in:
fmk1023
2026-01-29 17:58:36 +08:00
parent f640eca25c
commit a832c64d41
3 changed files with 79 additions and 1 deletions

2
.gitignore vendored
View File

@@ -39,3 +39,5 @@ components.d.ts
# 组件汇总文件,仅限开发本地浏览
component.md
deploy.js

75
deploy.js Normal file
View File

@@ -0,0 +1,75 @@
import { Client } from 'ssh2';
import fs from 'fs';
import path from 'path';
import { fileURLToPath } from 'url';
const __dirname = path.dirname(fileURLToPath(import.meta.url));
const serverConfig = {
host: '222.20.126.217',
port: 22,
username: 'admini',
password: 'zlzxb@1888',
remotePath: '/home/admini/ossrpp/base/nginx/dist/SAP/'
};
async function uploadDirectory(sftp, localDir, remoteDir) {
const items = fs.readdirSync(localDir);
// 确保远程目录存在
try {
await new Promise((res) => sftp.mkdir(remoteDir, { mode: '0755' }, () => res()));
} catch (e) {}
for (const item of items) {
const localPath = path.join(localDir, item);
const remotePath = path.join(remoteDir, item).replace(/\\/g, '/'); // 转换为Linux路径
if (fs.statSync(localPath).isDirectory()) {
await uploadDirectory(sftp, localPath, remotePath);
} else {
await new Promise((resolve, reject) => {
console.log(`🚀 上传中: ${item}`);
sftp.fastPut(localPath, remotePath, (err) => {
if (err) reject(err);
else resolve();
});
});
}
}
}
async function startDeploy() {
const conn = new Client();
console.log('✨ 开始部署流程...');
conn.on('ready', () => {
console.log('✅ SSH 连接成功!');
conn.sftp(async (err, sftp) => {
if (err) throw err;
try {
const localDist = path.join(__dirname, 'dist');
await uploadDirectory(sftp, localDist, serverConfig.remotePath);
console.log('🎉 所有文件上传成功!');
conn.end();
} catch (uploadErr) {
console.error('❌ 上传失败:', uploadErr);
conn.end();
}
});
}).on('error', (err) => {
console.error('❌ 连接出错 (检查IP或密码):', err.message);
}).on('close', () => {
console.log('🔌 连接已关闭');
process.exit(0);
}).connect({
host: serverConfig.host,
port: serverConfig.port,
username: serverConfig.username,
password: serverConfig.password,
readyTimeout: 10000 // 10秒超时
});
}
startDeploy();

View File

@@ -16,7 +16,8 @@
"preview": "vite preview",
"type-check": "vue-tsc --noEmit -p tsconfig.app.json --composite false",
"lint": "eslint . --ext .vue,.js,.jsx,.cjs,.mjs,.ts,.tsx,.cts,.mts --fix --ignore-path .gitignore",
"format": "prettier --write src/"
"format": "prettier --write src/",
"deploy": "node deploy.js"
},
"dependencies": {
"@devui-design/icons": "^1.4.0",