在Linux上进行项目部署--手动和自动

news/2024/11/17 22:45:32/

在Linux上进行项目部署–手动和自动

文章目录

  • 在Linux上进行项目部署--手动和自动
    • 1、手动部署项目
    • 2、通过Shell脚本自动部署项目

1、手动部署项目

1、在IDEA中开发SpringBoot项目并打成jar包

在idea中的Maven中的package(基于Springboot项目)

2、将jar包上传到Linux服务器

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

3、启动SpringBoot项目

使用命令:java -jar 项目jar包名

image-20230807212408086

要确保你的项目jar包所需要的jdk等环境的配置没有问题。

4、 检查防火墙,确保8080端口对外开放,访问SpringBoot项目

image-20230807212804281

5、 改为后台运行SpringBoot程序,并将日志输出到日志文件

目前程序运行的问题:

  • 线上程序不会采用控制台霸屏的形式运行程序,而是将程序在后台运行
  • 线上程序不会将日志输出到控制台,而是输出到日志文件,方便运维查阅信息
nohup命令:英文全称no hang up(不挂起),用于不挂断地运行指定命令,退出终端不会影响程序的运行
语法格式: nohup Command [ Arg ...][&]参数说明:
Command:要执行的命令
Arg: 一些参数,可以指定输出文件
&:让命令在后台运行举例:
nohup java -jar boot工程.jar &> hello.log &      后台运行java -jar命令,并将日志输出到hello.log文件

image-20230807215452616

即使关掉终端,程序依然会执行。

6、 停止SpringBoot程序

查询进程号,使用kill终止运行项目:

image-20230807215833277

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

操作步骤:
1、在Linux中安装Git
2、在Linux中安装maven
3、编写Shell脚本(拉取代码、编译、打包、启动)
4、为用户授予执行Shell脚本的权限
5、执行Shell脚本

在这里插入图片描述

1、在Linux中安装Git

yum list git                   列出git安装包
yum install git                在线安装git

2、使用Git克隆代码

cd /usr/local/
git clone https://gitee.com/mannor/helloworld.git

3、将maven安装包上传到Linux,在Linux中安装maven

tar -zxvf apache-maven-3.5.4-bin.tar.gz -C /usr/local            解压Maven包vim /etc/profile              修改profile文件修改配置文件,加入如下内容:
export MAVEN_HOME=/usr/local/apache-maven-3.5.4
export PATH=$JAVA_HOME/bin:$MAVEN_HOME/bin:$PATHsource /etc/profile            使上述文件修改生效
mvn -version                   查看版本
vim /usr/local/apache-maven-3.5.4/conf/settings.xml           修改配置文件内容如下:
<localRepository>/usr/local/repo</localRepository>          (需要创建repo文件夹)

4、将shell脚本文件复制到Linux:

#!/bin/sh
echo =================================
echo  自动化部署脚本启动
echo =================================echo 停止原来运行中的工程
APP_NAME=reggie_take_outtpid=`ps -ef|grep $APP_NAME|grep -v grep|grep -v kill|awk '{print $2}'`
if [ ${tpid} ]; thenecho '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} ]; thenecho 'Kill Process!'kill -9 $tpid
elseecho 'Stop Success!'
fiecho 准备从Git仓库拉取最新代码
cd /usr/local/RegisTakeout/reggie_take_outecho 开始从Git仓库拉取最新代码
git pull
echo 代码拉取完成echo 开始打包
output=`mvn clean package -Dmaven.test.skip=true`cd targetecho 启动项目
nohup java -jar reggie_take_out-1.0-SNAPSHOT.jar &> reggie_take_out.log &
echo 项目启动完成
  • Shell脚本(shell script),是一种Linux系统中的脚本程序。
  • 使用Shell脚本编程跟JavaScript、Java编程一样,只要有一个能编写代码的文本编辑器和一个能解释执行的脚本解释器就可以了。

5、为用户授权

因为Linux是多用户系统,不同的用户具有不同的权限,所以就需要对用户授权才能执行脚本。

chmod(英文全拼: change mode)命令是控制用户对文件的权限的命令
Linux中的权限分为:读(r)、写(w)、执行(x)三种权限
Linux的文件调用权限分为三级︰文件所有者(Owner)、用户组(Group)、其它用户(Other Users)
只有文件的所有者和超级用户(root)可以修改文件或目录的权限
要执行Shell脚本需要有对此脚本文件的执行权限,如果没有则不能执行

image-20230807223811197

前缀的用法说明如下:

在这里插入图片描述

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

image-20230807224110108

举例:
chmod 777 bootStart.sh  为所有用户授予读、写、执行权限
chmod 755 bootStart.sh  为文件拥有者授予读、写、执行权限,同组用户和其他用户授予读、执行权限
chmod 210 bootStart.sh  为文件拥有者授予写权限,同组用户授予执行权限,其他用户没有任何权限注意:三位数字分别代表不同用户的权限第1位表示文件拥有者的权限 第2位表示同组用户的权限第3位表示其他用户的权限

image-20230807224801750

6、使用命令执行shell脚本,启动服务:./bootStart.sh—>shell脚本文件名。

image-20230807225234590

7、设置静态ip

修改文件/etc/sysconfig/network-scripts/ifcfg-ens33(最后的文件名可能有差异),内容如下:(#包括的部分)

TYPE="Ethernet"
PROXY_METHOD="none"
BROWSER_ONLY="no"
########################################################
BOOTPROTO="static"						#使用静态IP地址,默认为dhcp
IPADDR="192.168.138. 1ee"				#设置的静态IP地址
NETMASK="255.255.255.e"					#子网掩码
GATEWAY="192.168.138.2"					#网关地址
DNS1="192.168.138. 2"					#DNS服务器
#######################################################
DEFROUTE="yes"
IPV4_FAILURE_FATAL="no"IPV6INIT="yes"
IPV6_AUTOCONF= "yes"IPV6_DEFROUTE="yes"
IPV6_FAILURE_FATAL="no"
TPV6_ADDR_GEN_MODE="stable-privacy"NAME="ens33"
UUID="95b614cd-79b0-4755-b08d-99f1cca7271b"DEVICE="ens33"
ONBOOT="yes"					#是否开机启用

image-20230807230439112

8、重启网络服务

命令:systemctl restart network

注意:重启完网络服务后ip地址已经发生了改变,此时FinalShell已经连接不上Linux系统,需要创建一个新连接才能连接到Linux。


http://www.ppmy.cn/news/1022723.html

相关文章

谷粒商城第十一天-完善商品分组(主要添上关联属性)

目录 一、总述 二、前端部分 2.1 改良前端获取分组列表接口及其调用 2.2 添加关联的一整套逻辑 三、后端部分 四、总结 一、总述 前端部分和之前的商品品牌添加分类差不多。 也是修改一下前端的分页获取列表的接口&#xff0c;还有就是加上关联的那一套逻辑&#xff0c;…

分享一颗能用在TYPE-C接口取电协议芯片LDR6328Q,方便好用

芯片功能&#xff1a;诱导PD充电器输出最大功率&#xff0c;支持最大诱骗20V电压。支持协议&#xff1a;PD/QC/三星AFC/华为SCP等主流快充协议 芯片封装&#xff1a;QFN16,SOP8多封装选择 芯片应用&#xff1a; 桶形连接器替换&#xff08;BCR&#xff09;&#xff0c;USB-A和m…

NIO 非阻塞式IO

NIO Java NIO 基本介绍 Java NIO 全称 Java non-blocking IO&#xff0c;是指 JDK 提供的新 API。从 JDK1.4 开始&#xff0c;Java 提供了一系列改进的输入/输出的新特性&#xff0c;被统称为 NIO&#xff08;即 NewIO&#xff09;&#xff0c;是同步非阻塞的。NIO 相关类都被…

【LeetCode】买卖股票的最佳时机含冷冻期

买卖股票的最佳时机含冷冻期 题目描述算法分析程序设计 链接: 买卖股票的最佳时机含冷冻期 题目描述 算法分析 程序设计 class Solution { public:int maxProfit(vector<int>& prices) {int n prices.size();//天数vector<vector<int>> dp(n,vector&l…

Linux C++ 网络编程基础(2) : TCP多线程一个server对应多个client

目录 一、linux posix线程相关函数介绍二、tcp server基础版本三、tpc服务端多线程版本四、tpc客户端代码tcp编程时, 一个server可以对应多个client, server端用多线程可以实现. linux下多线程可以使用POSIX的线程函数, 下面给出服务端和客户端的代码. 一、linux posix线程相关…

Flutter 报错 Could not create task ‘xxx‘.this and base files have different roots

遇到此问题也是先去百度了&#xff0c;有的说改了Gradle版本、gradle-wrapper.properties版本和ext.kotlin_version版本之后解决的&#xff0c;我没尝试&#xff0c;我用蹩脚的英语大致读了一下就不是这样说的&#xff0c;况且我用有道翻译了也不是这个意思啊&#xff0c;我不知…

远程预付费平台助力转供电主体解决“收费难” 安科瑞 顾语欢

为了帮助物业合理收取转供电电费以及过程中的运营成本&#xff0c;安科瑞AcrelCloud-3200远程预付费平台解决方案根据分时电价政策配置合理的计费仪表和软件&#xff0c;帮助转供电主体完成电费统计、电网损耗、租户公共用电公摊&#xff0c;协助转供电主体更高效的解决电费收取…

月度资金预算情况表取的数和结算页面不一样,是为什么?

月度资金预算情况表取的数和结算页面不一样&#xff0c;如下图&#xff0c;是为什么&#xff1f; 取数公式&#xff1a; CMPRFS(‘[收支项目01030101] ‘,K(‘单位’),’’,‘’,‘0’,ZDATEQC(‘-’),ZDATE(‘-’),‘1’,‘’,‘’)CMPRFS(‘[收支项目01030102] ‘,K(‘单位…