linux的部署脚本笔记

大城市里の小女人 提交于 2019-12-01 17:36:04

stop.sh结束进程的脚本

kill -9 $(netstat -nlp | grep :80 | awk '{print $7}' | awk -F"/" '{ print $1 }')

$(netstat -nlp | grep :80 | awk ‘{print $7}’ | awk -F"/" ‘{ print $1 }’)

kill-9 杀死进程
$()拼接符号
netstat -nlp | grep :80 列出端口为80的进程
awk ‘{print $7}’ | awk -F"/" '{ print $1 }从第七列到第一列

pullCode.sh从git拉取代码的脚本

git pull origin
echo "更新成功!"

start.sh从git拉取代码的脚本

if [ "$1" = "" ]; then
    echo "请输入环境值:dev,test,prod..."
  else
    # mvn clean package
    # exec nohup mvn spring-boot:run -Drun.profiles="$1" &
    mvn clean package;
    exec nohup  java -jar -Dspring.profiles.active="$1"  -Duser.timezone="Asia/Shanghai" -server ./target/hh-cloud-aa.jar  &
    tail -f ./nohup.out
    echo "启动成功"
fi

每个if语句都要用fi结束,而且是每一个if都要对应一个fi。
整个if语句用fi闭合起来才算完整,
书写时if和fi要垂直对齐以方便查看

if [ "$1" = "" ]; then 
		执行语句1
else
		执行语句2
fi

[ “$1” = “” ];是判断条件,如果 [ “$1” = “” ];成立(返回“真”),那么 then 后边的语句执行语句1将会被执行;如果 [ “$1” = “” ];不成立(返回“假”),那么会 执行else语句执行语句2。最后必须以fi来闭合,fi 就是 if 倒过来拼写,即使有多条语句也不需要用{ }包围起来

mvn clean package(打包)
tail -f ./nohup.out打印日志信息
echo “启动成功”输出启动成功提示
exec nohup java -jar -Dspring.profiles.active="$1" -Duser.timezone=“Asia/Shanghai” -server ./target/hh-cloud-aa.jar &在这里插入代码片
java -jar启动
-Dspring.profiles.active="$1"指定配置文件 其中 $1是动态参数
-Duser.timezone=“Asia/Shanghai”设置默认时区
hh-cloud-aa.jar项目jar名称
-server服务


执行命令:

  • ps -elf|grep java
  • ./stop.sh
  • ./pullCode.sh
  • ./start.sh prod

可能会遇到的问题:

1.-bash: ./stop.sh: Permission denied
解决办法:chmod u+x *.sh


2.no main manifest attribute, in ./target/hh-cloud-aa.jar
解决办法:
排除法思路:

  1. cd target/ 查看target的jar 名称是否和启动文件配置的一致如果一致排查第二个
  2. java -jar hwqh-cloud-user.jar跳过脚本-直接启动测试 如果启动可以成功 则检查启动脚本

项目的pom文件添加
hh-cloud-aa你項目的名字

  <finalName>hh-cloud-aa</finalName>
   <plugin>
                <!--部署脚本start-->
                <groupId>org.springframework.boot</groupId>
                <artifactId>spring-boot-maven-plugin</artifactId>
                <configuration>
                    <mainClass>cn.com.hh.user.UserApplication</mainClass>
                </configuration>
                <executions>
                    <execution>
                        <goals>
                            <goal>repackage</goal>
                        </goals>
                    </execution>
                </executions>
                <!--部署脚本end-->
            </plugin>

完整代碼:

 <!--编译配置-->
    <build>
        <finalName>hh-cloud-aa</finalName>
        <plugins>
            <!--自动生成代码-->
            <plugin>
                <!--Generator插件依赖-->
                <groupId>org.mybatis.generator</groupId>
                <artifactId>mybatis-generator-maven-plugin</artifactId>
                <version>1.3.2</version>
                <configuration>
                    <!--MyBaits-generator的配置文件generatorConfig.xml的位置-->
                    <configurationFile>src/test/resources/config/generatorConfig.xml</configurationFile>
                    <!--是否覆盖同名文件(只是针对XML文件,java文件生成类似*.java.1、*.java.2形式的文件)-->
                    <overwrite>true</overwrite>
                    <!--是否将生成过程输出至控制台-->
                    <verbose>true</verbose>
                </configuration>
            </plugin>
            <plugin>
                 <!--部署脚本start-->
                <groupId>org.springframework.boot</groupId>
                <artifactId>spring-boot-maven-plugin</artifactId>
                <configuration>
                    <mainClass>cn.com.hh.user.UserApplication</mainClass>
                </configuration>
                <executions>
                    <execution>
                        <goals>
                            <goal>repackage</goal>
                        </goals>
                    </execution>
                </executions>
                <!--部署脚本end-->
            </plugin>
        </plugins>
    </build>

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!