发表于: 2020-06-03 23:30:11

1 1608


今天完成的事情:理解部署脚本的内容,然后部署到服务器,了解点Nginx,然后就是返回JSON的两种方式对比,Body和param两种接受参数方式
明天计划的事情:想再部署跑下,再失败了就请教下师兄,然后就是Spring messageSource学习,Nginx学习,顺便做几个深度思考吧
遇到的问题:部署到远程服务器,运行访问失败,在本地能跑起来,远程的Tomcat欢迎页都出来了,就是访问不到项目,也没有报错信息
收获:

我的部署脚本

1.#!/bin/bash

.#!/bin/bash是指此脚本使用/bin/sh来解释执行,#!是特殊的表示符,其后面根的是此解释此脚本的shell的路径。

其实第一句的#!是对脚本的解释器程序路径,脚本的内容是由解释器解释的,我们可以用各种各样的解释器来写对应的脚本。

比如说/bin/csh脚本,/bin/perl脚本,/bin/awk脚本,/bin/sed脚本,甚至/bin/echo等等。

2.source命令

source命令也称为“点命令”,也就是一个点符号(.),是bash的内部命令。使Shell读入指定的Shell程序文件并依次执行文件中的所有语句

修改了/etc/profile文件,为了不重启就能更新生效,就用source。

source filename 与 sh filename 及./filename执行脚本的区别在那里呢?

1.)当shell脚本具有可执行权限时,用sh filename与./filename执行脚本是没有区别得。./filename是因为当前目录没有在PATH中,所有"."是用来表示当前目录的。

2.)sh filename 重新建立一个子shell,在子shell中执行脚本里面的语句,该子shell继承父shell的环境变量,但子shell新建的、改变的变量不会被带回父shell,除非使用export。

3.)source filename:这个命令其实只是简单地读取脚本里面的语句依次在当前shell里面执行,没有建立新的子shell。那么脚本里面所有新建、改变变量的语句都会保存在当前shell里面。(当这个shell关闭后就失效了)

3.echo 命令

用于字符串的输出,以及可以设定一些格式控制

#!/bin/bash

source /etc/profile

tomcatPath=/software/tomcat

backPath=/software/jnshu/old

echo ============

echo 自动化部署脚本启动

echo ============

#echo 进入/software/jnshu

cd /software/jnshu

echo 开始克隆远程仓库版本

git clone https://github.com/hyxcc/Test2App.git

echo 开始编译文件

cd Test2App

mvn clean package -Dmaven.test.skip=true

echo 编译完成

sleep 2 #休眠2S

echo 备份并删除原项目

cp $tomcatPath/webapps/SpringMVC.war $backPath/SpringMVC.war.$(data+%Y%m%d)

rm -rf $tomcatPath/webapps/SpringMVC*

echo 部署新文件

cp target/SpringMVC.war $tomcatPath/webapps/

rm $tomcatPath/webapps/SpringMVC.war -rf

sleep 5 #休眠5S

echo 启动服务器 

sh /software/tomcat/bin/startup.sh &tailf /software/tomcat/logs/catalina.out


Linux下安装git,直接yum -y install git .也可以用源码安装。

这时候运行部署文件就不行,出错了访问不到。

git pull 命令和git fetch

git pull命令执行过程:取回远程主机某个分支的更新,再与本地的指定分支合并。

$ git pull <远程主机名> <远程分支名>:<本地分支名>

比如,要取回origin主机的next分支,与本地的master分支合并,需要写成下面这样 -

$ git pull origin next:master

如果远程分支(next)要与当前分支合并,则冒号后面的部分可以省略。上面命令可以简写为:

$ git pull origin next


git fetch和git pull的区别

  1. git fetch:相当于是从远程获取最新版本到本地,不会自动合并。
  1. $ git fetch origin master
  2. $ git log -p master..origin/master
  3. $ git merge origin/master

以上命令的含义:

  • 首先从远程的origin的master主分支下载最新的版本到origin/master分支上
  • 然后比较本地的master分支和origin/master分支的差别
  • 最后进行合并

上述过程其实可以用以下更清晰的方式来进行:

  1. $ git fetch origin master:tmp
  2. $ git diff tmp
  3. $ git merge tmp

2. git pull:相当于是从远程获取最新版本并merge到本地

git pull origin master

git fetch更安全一些,因为在merge前,我们可以查看更新情况,然后再决定是否合并。



返回列表 返回列表
评论

    分享到