发表于: 2020-06-03 23:30:11
1 1609
今天完成的事情:理解部署脚本的内容,然后部署到服务器,了解点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的区别
- git fetch:相当于是从远程获取最新版本到本地,不会自动合并。
$ git fetch origin master $ git log -p master..origin/master $ git merge origin/master
以上命令的含义:
- 首先从远程的origin的master主分支下载最新的版本到origin/master分支上
- 然后比较本地的master分支和origin/master分支的差别
- 最后进行合并
上述过程其实可以用以下更清晰的方式来进行:
$ git fetch origin master:tmp $ git diff tmp $ git merge tmp
2. git pull:相当于是从远程获取最新版本并merge到本地
git pull origin master
git fetch
更安全一些,因为在merge
前,我们可以查看更新情况,然后再决定是否合并。
评论