阿里云服务器上部署github项目,自己来玩部署,不求人

最近放弃自己搭建的svn,将项目迁移到github上,大地方还是稳,那么相应的服务器部署也做了变更,下面我就简单记录下操作过程

一、基础环境说明

服务器:阿里云ubuntu16.04
项目部署服务器:tomcat8.5.43
JDK:1.8.0_211
maven:3.6.1
git:2.7.4
其他工具 secureCRT WinSCP
简而言之,通过git获得githunb上的最新的项目内容,再通过mvn package命令打包,然后替换最新的项目数据,最后重启服务器并完成更新

二、具体操作

sh脚本如下:

#/bin/sh

#1.删除中间目录内容
#2.git拉取最新代码
#3.将代码拷贝至中间目录下(这里为了防止污染git本地库,现将其放到中间目录下)
#4.mvn打包
#5.替换关键文件(主要包含jdbc和log4j等)
#6.停止服务器
#7.备份并清空老项目内容
#8.将新代码拷贝至部署路径
#9.启动服务器
########## 脚本开始 ##########


#备份文件名称
JIRA_FILE_NAME=myPro_$(date +'%Y-%m-%d_%H%M%S');
#基础地址
PRJ_BASE=/data
#git仓库地址
GIT_BASE=${PRJ_BASE}/git/myPro
#项目发布基础地址
CODE_BASE=${PRJ_BASE}/project
#替换文件存放地址(主要包含jdbc和log4j)
REPLACE_PATH=${PRJ_BASE}/replaceFile
#项目发布地址
DEPLOY_BASE=${CODE_BASE}/myPro/
#中间项目地址
TEMP_PRO=${CODE_BASE}/temp_pro
#mvn打包后项目的配置文件地址
CONFIG_PATH=${TEMP_PRO}/myPro/target/myPro/WEB-INF/classes
#项目包备份目录
BACKUP_PRO=${CODE_BASE}/backup_pro
#tomcat bin目录地址
SHELL_PATH=/data/tomcat-8.5.43/bin

echo "------------------- 开始部署项目 ---------------------------------------"

echo "------------------- 1.删除中间目录内容 ---------------------------------"

rm -rf ${TEMP_PRO}/*

cd ${GIT_BASE}

echo "------------------- 2.从git检出项目  -----------------------------------"

git pull origin master

echo "------------------- 3.将代码拷贝至中间目录下(去掉多余文件) -----------"

cp -nrf ${GIT_BASE} ${TEMP_PRO}

rm -rf ${TEMP_PRO}/myPro/.git
rm -rf ${TEMP_PRO}/myPro/.gitignore

echo "------------------- 4.通过mvn的package命令打包 -------------------------"

cd ${TEMP_PRO}/myPro

mvn package

echo "------------------- 5.替换生产配置文件 ---------------------------------"

cp -rf ${REPLACE_PATH}/jdbc.properties ${CONFIG_PATH}
cp -rf ${REPLACE_PATH}/log4j2.xml ${CONFIG_PATH} 

echo "------------------- 6.停止tomcat服务 -----------------------------------"

${SHELL_PATH}/shutdown.sh

echo "------------------- 7.备份并清空老项目内容 -----------------------------"

tar -zcPf ${BACKUP_PRO}/${JIRA_FILE_NAME}.tar.gz ${DEPLOY_BASE}/

rm -rf ${DEPLOY_BASE}/*

echo "------------------- 8.拷贝新项目内容到部署目录 -------------------------"

cp -nrf ${TEMP_PRO}/myPro/target/myPro ${CODE_BASE}/


echo "------------------- 9.启动tomcat服务 -----------------------------------"

${SHELL_PATH}/startup.sh

echo "------------------- 部署项目结束 ---------------------------------------"
exit 0

三、说明

1.关于tomcat

tomcat并不是通过在webapps下放war包的形式,而是另起一个目录放war解压后的代码作为项目代码
在这里插入图片描述
具体配置就是修改tomcat的conf/server.xml
增加此行即可
在这里插入图片描述

2.关于git

进入你的Git pull的本地仓库目录下,执行下面命令(存储账号密码):

git config --global credential.helper store

然后再进行一次pull操作 输入账号密码,此后再pull就不再需要输入账号密码

这样才能保证你脚本执行过程中不进行控制台输入,保证脚本正常运行

3.关于脚本

如下的错误,说明你的脚本权限不够,修改权限即可:
在这里插入图片描述

chmod 744 pro.sh

在这里插入图片描述
如果你的脚本出现\r命令错误,说明你的脚本因为window和ubuntu换行符不一致导致的,这时候你需要安装tofrodos软件(Ubuntu下默认没有安装dos2unix工具,可以用tofrodos替代 )

在这里插入图片描述

sudo apt-get install tofrodos

安装后 直接执行下面命令:

/usr/bin/fromdos pro.sh

再次执行脚本
在这里插入图片描述
在这里插入图片描述

最后,此脚本的操作还是很简单的而且目前也有不少界面化自动部署,此方法并不一定最优选。
脚本其实写的比较蹩脚,毕竟不是专业的,我的侧重点还是项目开发,这个只是将一种方法介绍给大家。个人比较倾向于此方法,可以一定程度的自己控制项目部署。

到此,部署介绍完毕。

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
可以的,Github Actions可以用来自动化前端项目部署到云服务器。以下是一个简单的例子: 1. 首先,在你的Github仓库中创建一个`.github/workflows`文件夹,并在该文件夹下创建一个`deploy.yml`文件。 2. 在`deploy.yml`文件中设置触发部署的事件,例如push到master分支。然后设置一个`job`,该`job`会在触发事件后运行。 3. 在该`job`中,使用`actions/checkout` action拉取代码,并使用`actions/setup-node` action安装依赖。 4. 接下来,使用你喜欢的打包工具打包你的前端代码,例如webpack或者parcel。打包后的文件会被存储在一个`dist`文件夹中。 5. 然后,使用`appleboy/ssh-action` action将打包后的文件上传到云服务器。该action会使用SSH登录到你的服务器,并将文件复制到服务器上的指定目录。 下面是一个示例的`deploy.yml`文件: ```yml name: Deploy to Cloud Server on: push: branches: - master jobs: deploy: runs-on: ubuntu-latest steps: - name: Checkout code uses: actions/checkout@v2 - name: Setup Node uses: actions/setup-node@v1 with: node-version: '12.x' - name: Install dependencies run: npm install - name: Build run: npm run build - name: Deploy to Cloud Server uses: appleboy/ssh-action@master with: host: ${{ secrets.HOST }} username: ${{ secrets.USERNAME }} password: ${{ secrets.PASSWORD }} port: ${{ secrets.PORT }} script: | cd /path/to/your/project rm -rf * scp -r /path/to/your/project/dist/* ./ ``` 这个例子是使用密码登录到云服务器的。如果你使用的是SSH Key,你需要相应地修改`deploy.yml`文件。此外,你需要在Github仓库的`Settings`中添加`secrets`,以保存你的服务器信息和登录凭证。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值