Vue、React项目使用shell脚本部署

本文介绍了一个用于自动化部署项目的bash脚本,支持测试和正式两种环境,并详细解释了如何使用该脚本来打包并部署项目到远程服务器的过程。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

编写好deploy.sh文件

执行代码npm run deploy testnpm run deploy publish为正式和测试两个环境

#!/usr/bin/env bash

# 任意命令出错时终止运行
set -e

RED="\033[0;31m"
YELLOW="\033[1;33m"
GREEN="\033[0;32m"
RESET="\033[0m"

now=$(date +%s)
//获取当前路径(因为放在build文件夹下所以加上/../)
base=$( cd "$(dirname "$0" /../)" ; pwd -P )

echo "开始远程部署"
ENV_TYPE=$1
if [ "$ENV_TYPE" = "publish" ]; then
  echo "环境为: publish"
elif [ "$ENV_TYPE" = "test" ]; then
  echo "环境为: test"
else
  echo "未指定环境或不支持的环境 $ENV_TYPE, 目前支持的环境有:\n\tpublish\n\ttest\n"
  exit 1
fi

echo "打包dist"

rm -rf $base/deploy/$ENV_TYPE
mkdir -p $base/deploy/$ENV_TYPE

tar -zcvf $base/deploy/$ENV_TYPE/$now.tar.gz -C $base/dist .
echo "打包完成: $base/deploy/$ENV_TYPE/$now.tar.gz"

echo "需要进行远程部署吗? (Y/n)"
read answer
if [ "$answer" != "" ] && [ "$answer" != "Y" ] && [ "$answer" != "y" ] ;then
  echo "本地打包完成!"
  exit 0
fi

echo "进行远程部署"
server_host="root@服务器ip"
server_port=端口默认22
server_dist="服务器部署路径"
project_name="smart-sanitation" #文件夹名
if [ "$ENV_TYPE" = "test" ]; then
  project_name="smart-sanitation-test"
fi

# 指定当前目录 请保证处于此项目根目录
ssh -p $server_port $server_host "mkdir -p $server_dist/$project_name/"

echo "[$ENV_TYPE] 上传资源"
scp -P $server_port $base/deploy/$ENV_TYPE/$now.tar.gz $server_host:$server_dist/$project_name/

echo "[$ENV_TYPE] 上传资源成功, 开始部署"
ssh -p $server_port $server_host "tar -xzf $server_dist/$project_name/$now.tar.gz -C $server_dist/$project_name"

rm -rf $base/deploy/$ENV_TYPE
echo "部署成功!"

如果要手动输入密码可忽略小面

免密登录注意事项

1.本机生成公钥放在服务器的/root/.ssh/authorized_keys里面
2.如果还不能免密登录需要设置文件夹权限

  • 文件夹root 设置为 700 chmod 600 /root
  • 文件夹.ssh 设置为 700 chmod 600 /root/.ssh
  • 文件authorized_keys 设置为 600 chmod 600 /root/.ssh/authorized_keys

3.查看文件夹所属用户 如果所属用户不是root在这里插入图片描述

  1. 更改文件拥有者 (chown )
    在这里插入图片描述
  2. 改变文件的用户组用命令 ( chgrp )
    在这里插入图片描述
  3. 同时修改用户和组 (chown )
    在这里插入图片描述
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值