当前位置: 首页 > 后端技术 > Node.js

Vue自动将项目部署到服务器

时间:2023-04-03 21:15:45 Node.js

想要的功能。前端打包后,文件夹自动上传到服务器。以上功能也可以在不提交代码的情况下完成。各种百度和谷歌后,终于有两个方案可以先选。第一种是写shell,通过lftp上传文件夹,但是会出现权限问题,需要改一下,解决nginx配置。二是使用node来实现。我个人推荐使用这个。第三个是jenkins,但是我不想提交代码,如果你不满意,放弃使用shell自动传输文件夹到服务器的想法1.安装lftp2。写一个shell脚本自动传输文件夹到服务器3.lftp传输文件成功后,会访问目录,报ngxin403权限错误,(如果测试老大不同意改ngxin配置,那就放弃)ftp安装及常用命令介绍linux安装vftprpm-qa|grepinitscripts查看ftp安装是否成功whichvsftpd查看ftp服务器状态servicevsftpdstatus启动ftp服务器服务vsftpdstart重启ftp服务器服务vsftpdrestart查看服务是否启动netstat-an|grep21//默认端口为21tcp000.0.0.0:210.0.0.0:*LISTEN如果看到以上信息,证明ftp服务已经启动。如果需要开启root用户的ftp权限,需要修改以下两个文件,在vi/etc/vsftpd/ftpusers中注释掉root,在vi/etc/vsftpd/user_list中注释掉root,然后重启ftp服务服务vsftpdrestartftpusers和user_list文件详解https://blog.csdn.net/bluishglc/article/details/42273197为什么安装lftp为什么安装lftpftp不能传输文件夹,lftp可以,lftp可以使用账号密码登录安装步骤windowchocoinstallchocoinstalllftp不安装choco请点下面链接,自己吃https://chocolatey.org/installlinuxlinux下安装FTP的过程和使用的整体过程https://blog.csdn.net/lizexing1/article/details/79308961第一步,第二步,第三步【Linux】缺少服务命令的解决方法https://blog.csdn.net/imliuqun123/article/details/83340763lftp常用命令介绍https://man.linuxde.net/lftpShell教程https://www.runoob.com/为什么linux/linux-shell.html需要这样执行./qq.sh,好像有些shell是用ftp来的传输文件,请确保启用了ftp服务,然后进行如下操作新建一个qq.sh文件,大致使用ftp链接到远程服务器并传输一个zip文件shell源代码:#!/bin/sh#有异常不报错set-e#packagetar-czvfsocial.zipsocial#remoteserveripip="192.168.1.99"#deployto远程服务器的目录可以自己替换remote="/usr/abcd/"#账号可自行更改userName="admin"#密码可自行更改password="123456"#传输方式ftpFransferType="binary"#传输文件名ftpPutFileName="social.zip"#lcd应该使用相对路径#格式:lcd[directory]#说明:directory指定本地计算机上要更改的目录如果不指定目录,则显示本地电脑当前工作目录#从本地批量上传文件到FTPecho"--------------------------------开始上传${ftpPutFileName}文件--------------------------------------"ftp-v-n<{log(chalk.green(`压缩${distZipPath}success`))}).catch(()=>{log(chalk.red(`compression${distZipPath}failed`))})breakdefault:log(chalk.keyword('orange')('deploygo没办法处理'))break}/***上传文件到服务器*Node7.6以上都支持async语法*/asyncfunctionupload(){constfailed=[]constsuccessful=[]try{//连接服务器awaitssh.connect({host:remoteConfig.host,username:remoteConfig.username,password:remoteConfig.password,})//删除目录并上传awaitssh.execCommand('rm-rf../'+buildDirName,{cwd:remoteConfig.remotePath})//开始上传文件到指定远程目录awaitssh.putDirectory(distDir,remoteConfig.remotePath,{recursive:true,concurrency:10,validate:function(itemPath){constbaseName=path.basename(itemPath)console.log(baseName)return(baseName.substr(0,1)!=='.'&&baseName!=='node_modules'//不允许点文件)//不允许node_modules},tick:function(localPath,remotePath,error){if(error){failed.push(localPath)}else{successful.push(localPath)}},})}catch(error){log(chalk.red('upload上传失败,错误信息如下==>',error))returnfalse}log(chalk.green('Transfercomplete'))log(chalk.green('Numberofsuccessfultransferredfiles==>',successful.length))log(chalk.green('Numberoftransferfailedfiles==>',failed.length))//exitprocess.exit()}节点自动打包多个存在遗留问题的项目,每个项目都需要导入deploy.js文件,感觉有点难受,但暂时没想到好办法,各位大神,好方案,带我一起去吧~结语本文如有错误,望指正,万分感谢觉得有用的老铁,点双击,小红心来一波。害哈哈o(∩_∩)o哈哈参考资料ftp安装相关配置等ftp命令详解ftp命令详解ftpusers和user_list文件详解lftp常用命令vueautoreleasevueautorelease