首页 > 其他分享 >项目部署

项目部署

时间:2023-04-01 17:44:56浏览次数:27  
标签:文件 git grep 项目 部署 jar echo 权限

一、手工部署项目

(1)在IDEAZ中开发SpringBoot项目并打成jar包

(2)将jar包上传到Linux服务器

  mkdir /usr/local/app      创建目录,将项目jar包放到此目录

(3)启动SpringBoot程序

  java -jar [jar包名]

 (4)改为后台运行SpringBoot程序,并将日志输出到日志文件

目前程序运行的问题:

  * 线上程序不会采用控制台霸屏的形式运行程序,而是将程序在后台运行

  * 线上程序不会将日志输出到控制台,而是输出到日志文件,方便运维查阅信息

nohup命令:no hang up(不挂起),用于不挂断地运行指定命令,退出终端不会影响程序的运行

语法格式:nohup Command [Arg ...] [&]

参数说明:

Command:要执行命令

Arg:一些参数,可以指定输出文件

&:让命令在后台运行

举例:

nohup java -jar boot工程.jar &> hello.log &    后台启动java -jar命令,并将日志输出到hello.log文件

(5)停止SpringBoot程序

查找进程号:ps -ef | grep java

kill -9 进程号

 

二、通过Shell脚本自动部署项目

(1)在Linux中安装Git

(2)在Linux中安装maven

(3)编写Shell脚本(拉取代码、编译、打包、启动)

(4)为用户授予执行Shell脚本的权限

(5)执行Shell脚本

Linux服务器<——编译打包启动pull——Git仓库<——push——本地开发环境

在本地创建git仓库后,添加远程仓库,为这两个仓库建立连接:git pull origin master --allow-unrelated-histories。将本地仓库的内容commit,push到远程仓库即可。

(1)在linux中安装Git

  yum list git     列出git安装包

  yum install git      在线安装git

(2) 使用Git克隆代码

  cd /usr/locla/

  git clone [远程仓库url]

(3)将maven安装包上传到linux,在linux中安装maven

  tar -zxvf apche-maven-3.5.4-bin.tar.gz -C /usr/local

  vim /etc/profile      修改配置文件,加入如下内容

  export MAVEN_HOME=/usr/local/apache-maven-3.5.4

  export PATH=$JAVE_HOME/bin:$MAVEN_HOME/bin:$PATH

  完成后

  source /etc/profile

  mvn -version

  vim /usr/local/apache-maven-3.5.4/conf/settings.xml  修改配置文件内容如下

  <localRepository>/usr/local/repo</localRepository>

(4)将shell脚本文件复制到Linux 

 Shell脚本(shell script),是一种linux系统中的脚本程序,使用Shell脚本编程跟JavaScript、java编程一样,只要有一个能编写代码的文本编辑器和一个能解释执行的脚本解释器就可以。

#!/bin/sh
echo =================================
echo  自动化部署脚本启动
echo =================================

echo 停止原来运行中的工程
APP_NAME=helloworld

tpid=`ps -ef|grep $APP_NAME|grep -v grep|grep -v kill|awk '{print $2}'`
if [ ${tpid} ]; then
    echo 'Stop Process...'
    kill -15 $tpid
fi
sleep 2
tpid=`ps -ef|grep $APP_NAME|grep -v grep|grep -v kill|awk '{print $2}'`
if [ ${tpid} ]; then
    echo 'Kill Process!'
    kill -9 $tpid
else
    echo 'Stop Success!'
fi

echo 准备从Git仓库拉取最新代码
cd /usr/local/helloworld

echo 开始从Git仓库拉取最新代码
git pull
echo 代码拉取完成

echo 开始打包
output=`mvn clean package -Dmaven.test.skip=true`

cd target

echo 启动项目
nohup java -jar helloworld-1.0-SNAPSHOT.jar &> helloworld.log &
echo 项目启动完成

(5)为用户授权

  chmod(change mode)命令是控制用户对文件的权限的命令

  Linux中权限分为:读r、写w、执行x三种权限 

  Linux的文件调用权限分为三级:文件所有者(Owner)、用户组(Group)、其它用户(Other Users)

  只有文件的所有者和超级用户可以修改文件或目录的权限

  要执行Shell脚本需要有对此脚本文件的执行权限,如果没有则不能执行

  ll命令可以查看

  -r--r--r--

  第一个"-"表示是文件-还是目录~,剩下9位,第一个三位是文件所有者的权限,第二个三位是用户组的权限,第三个三位是其它用户的权限

  为用户授权:chmod命令可以使用八进制数来指定权限

  7 读写执行 rwx 、6读写rw-、5读执行 r-x、4 只读 r--、3 写执行 -wx、2 只写 -w-、1 只执行 --x、0 无 ---

  如:chmod 777 bootStart.sh 为所有用户赋予读写执行权限、chmod 755 bootStart.sh为文件拥有者赋予读写执行权限,同组用户和其它用户授予读执行权限

    chmod 210 bootStart.sh 为文件拥有者授予写权限,同组用户授予执行权限,其它用户没有任何权限。

(6)使用 ./bootStart.sh启动shell脚本,查看日志是否启动成功,在浏览器上通过虚拟机ip:8080/ 访问

(7)设置静态ip

  线上系统运行使用的是静态ip

  修改文件/etc/sysconfig/network-scripts/ifcfg-ens33,要与虚拟中的的虚拟网络编辑器网段ip对应

  BOOTTPROTO="static"

  IPADDR="192.168.189.128"

  NETMASK="255.255.255.0"

  GATEWAY="192.168.189.2"

  DNS1="192.168.189.2"

  重启网络服务: systemctl restart network

注:重启网络服务后ip地址发生改变,新建Finalshell连接

 

 

  

 

标签:文件,git,grep,项目,部署,jar,echo,权限
From: https://www.cnblogs.com/fxzm/p/17268227.html

相关文章

  • Git提交本地项目到云端仓库(学习理解持续更新)
    进入项目文件夹初始化本地仓库gitinit把所有文件添加到版本库中gitadd.查看添加的文件gitstatus......
  • SpringBoot项目启动时初始化操作方式
    1.实现InitializingBean重写afterPropertiesSet()方法。@Component@Slf4jpublicclassInitOneTestimplementsInitializingBean{@OverridepublicvoidafterPropertiesSet()throwsException{log.info("InitOneTestinitsuccess");}}2......
  • Springboot 系列 (26) - Springboot+HBase 大数据存储(四)| Springboot 项目通过 HBase
    ApacheHBase是Java语言编写的一款Apache开源的NoSQL型数据库,不支持SQL,不支持事务,不支持Join操作,没有表关系。ApacheHBase构建在ApacheHadoop和ApacheZookeeper之上。ApacheHBase:https://hbase.apache.org/HBase的安装配置,请参考“Springboot系列(24)-......
  • Linux系统之部署Go语言开发运行环境
    (Linux系统之部署Go语言开发运行环境)一、Go语言介绍1.Go语言简介Go(又称Golang)是Google开发的一种静态强类型、编译型、并发型,并具有垃圾回收功能的编程语言。2.Go语言的撰写风格每行程序结束后不需要撰写分号。左大括号不能够换行放置。if判断式和for循环不需要以小括号......
  • Docker部署openGauss国产数据库
    一、openGauss介绍1.openGauss简介openGauss是一款支持SQL2003标准语法,支持主备部署的高可用关系型数据库。2.openGauss产品定位多种存储模式支持复合业务场景,新引入提供原地更新存储引擎。NUMA化数据结构支持高性能。Paxos一致性日志复制协议,主备模式,CRC校验支持高可用......
  • 使用git子模块管理项目
    使用git子模块管理项目简介开发过程中,往往需要将将项目拆分成不同的模块,Git子模块(gitsubmodule)可以协助我们高效地进行项目管理。另外,子模块的思想也能够强化模块间的独立性,显著降低模块间的耦合度。参考链接官方文档:https://git-scm.com/book/zh/v2/Git-工具-子模块<br>......
  • shell 脚本之一键部署安装 Nginx
    今天咸鱼给大家分享个源码编译安装Nginx的shell脚本 这个shell脚本可重复执行 完整源码放在最后 定义一个变量来存放nginx版本号version=1.15.4 nginx下载地址:http://nginx.org/download/ 下列函数功能则是判断当前步骤是否执行成功,并将结果输出出......
  • Terraform 系列-Terraform 项目的典型文件布局
    系列文章......
  • 项目一众筹网07_01_SpringSecurity框架简介和用法、SpringSecurity负责的是 权限验证
    项目一众筹网07_01_SpringSecurity文章目录项目一众筹网07_01_SpringSecurity01简介SpringSecurity负责的是权限验证02-SpringSecurity简介03-Spring的注解模式maven引入Spring环境04-准备测试环境05-加入SpringSecurity环境06-实验1-放行首页和静态资源(下一篇)01简介现在主流的权......
  • 项目一众筹网06_01_【权限控制】角色和权限分配、Admin分配Role、Role分配Auth、前端j
    系列文章目录众筹网文章目录系列文章目录01-角色和权限分配-引入02-Admin分配Role-目标和思路03Admin分配Role创建中间表有些表是不需要实体类的自然也就不需要做逆向工程04-Admin分配Role-前往分配页面-handler方法05-Admin分配Role-前往分配页面-Service方法和SQL06-Admin分......