一文带你快速了解如何在Linux上部署项目

news2024/12/27 13:48:08

文章目录

  • 前言
  • 一、手工部署项目
    • 1.在IDEA中开发SpringBoot项目并打成jar包
    • 2. 将jar包上传到Linux服务器
    • 3. 输入指令启动SpringBoot程序
    • 4. 检查防火墙,确保80端口(项目端口)对外开放,访问SpringBoot项目
    • 5. 在windows访问项目
    • 6. 改为后台运行SpringBoot程序,并将日志输出到日志文件
    • 7. 停止SpringBoot程序(杀进程)
  • 二、通过Shell脚本自动部署项目
    • 1. 在Linux中安装Git
    • 2. 在Linux中安装maven
    • 3. 编写Shell脚本 (拉取代码、编译、打包、启动
    • 4. 为用户授予执行shell脚本的权限
    • 5. 执行Shell脚本
  • 总结


前言

为了巩固所学的知识,作者尝试着开始发布一些学习笔记类的博客,方便日后回顾。当然,如果能帮到一些萌新进行新技术的学习那也是极好的。作者菜菜一枚,文章中如果有记录错误,欢迎读者朋友们批评指正。
(博客的参考源码可以在我主页的资源里找到,如果在学习的过程中有什么疑问欢迎大家在评论区向我提出)

后端环境要搭好,如jdk、mysql、tomcat、maven、git等

一、手工部署项目

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

在这里插入图片描述

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

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

在这里插入图片描述

3. 输入指令启动SpringBoot程序

在这里插入图片描述

4. 检查防火墙,确保80端口(项目端口)对外开放,访问SpringBoot项目

在这里插入图片描述

5. 在windows访问项目

在这里插入图片描述

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

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

在这里插入图片描述

7. 停止SpringBoot程序(杀进程)

在这里插入图片描述

在这里插入图片描述

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

在这里插入图片描述

1. 在Linux中安装Git

  • Git安装指令
  1. yum list git ---- 列出git安装包
  2. yum install git ---- 在线安装git

在这里插入图片描述

  • 使用Git克隆远程仓库代码
  1. cd /usr/local/
  2. git clone https://gitee.com/Dongli_01/re_boot.git

在这里插入图片描述

2. 在Linux中安装maven

1. 将maven安装包上传到Linux

在这里插入图片描述

2. 解压安装包

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

在这里插入图片描述

3. 在Linux中安装maven

  • vim /etc/profile ---- 修改配置文件,加入如下内容
  1. export MAVEN_HOME=/usr/local/apache-maven-3.5.4
  2. export PATH=$ JAVA_HOME/bin:$ MAVEN_HOME/bin:$PATH

$ JAVA 和 $ MAVEN 中的 $ 和 J、M之间没有空格,此处是由于MD语法显示问题空一格

在这里插入图片描述

  • 加载资源,查看maven版本
  1. source /etc/profile
  2. mvn -version

在这里插入图片描述

  • vim /usr/local/apache-maven-3.5.4/conf/settings.xml ---- 设置一下 setting 文件,指定 maven 本地仓库的目录(repo目录需要自己创建),修改配置文件内容如下

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

注:< localRepository> 中的 < 和 l 以及 </ localRepository> 中的 / 和 l 之间没有空格,此处是由于MD语法问题空一格

在这里插入图片描述

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

  • Shell 脚本简介

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

  • 编写Shell 脚本
#!/bin/sh
echo =================================
echo  自动化部署脚本启动
echo =================================

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

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/re_boot

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

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

cd target

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


在这里插入图片描述

4. 为用户授予执行shell脚本的权限

1. 权限说明

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

在这里插入图片描述
2. chmod命令简介

  • chmod命令可以使用八进制数来指定权限
#权限rwx
7读 + 写 + 执行rwx
6读 + 写rw -
5读 + 执行r - w
4只读r - -
3写 + 执行- wx
2只写- w -
1只执行- -x
0- - -
  • 举例:
  1. chmod 777 bootStart.sh ---- 为所有用户授予读、写、执行权限
  2. chmod 755 bootstart.sh ---- 为文件拥有者授予读、写、执行权限,同组用户和其他用户授予读、执行权限
  3. chmod 210 boot5tat.h ---- 为文件拥有者授予写权限,同组用户授予执行权限,其他用户没有任何权限
  • 注意 :三位数字分别代表不同用户的权限
  1. 第1位表示文件拥有者的权限
  2. 第2位表示同组用户的权限
  3. 第3位表示其他用户的权限

5. 执行Shell脚本

在这里插入图片描述
在这里插入图片描述

总结

欢迎各位留言交流以及批评指正,如果文章对您有帮助或者觉得作者写的还不错可以点一下关注,点赞,收藏支持一下。
(博客的参考源码可以在我主页的资源里找到,如果在学习的过程中有什么疑问欢迎大家在评论区向我提出)

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/745714.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

Layui选项卡Tab:完美实现网页内容分类与导航

目录 什么是Layui选项卡&#xff1f; Layui选项卡的作用 实现步骤 1、编写公共jsp&#xff08;header.jsp&#xff09; 2、jsp界面&#xff08;main.jsp&#xff09; 3、JS代码&#xff08;main.js&#xff09; 4、PermissionDao类的修改 5、最终运行结果 什么是Layui选…

数据备份与还原,(mysqldump,source)索引(index),创建视图(view)

一、备份与还原 /***************************样例表***************************/ CREATE DATABASE booksDB; use booksDB;CREATE TABLE books (bk_id INT NOT NULL PRIMARY KEY,bk_title VARCHAR(50) NOT NULL,copyright YEAR NOT NULL ); INSERT INTO books VALUES (11078…

【i阿极送书——第五期】《Python机器学习:基于PyTorch和Scikit-Learn》

系列文章目录 作者&#xff1a;i阿极 作者简介&#xff1a;数据分析领域优质创作者、多项比赛获奖者&#xff1a;博主个人首页 &#x1f60a;&#x1f60a;&#x1f60a;如果觉得文章不错或能帮助到你学习&#xff0c;可以点赞&#x1f44d;收藏&#x1f4c1;评论&#x1f4d2;…

【CANN训练营】Atlas 200I DK A2开发板运行ChatYuan-large对话机器人应用

环境介绍 PC 操作系统&#xff1a;Ubuntu 22 内存&#xff1a;32GB Python&#xff1a;3.8 开发板 华为Atlas 200I DK A2 内存&#xff1a;4G NPU&#xff1a;昇腾310B 环境准备 只需要一台Linux 系统的PC机即可 Python版本需要3.7、3.8、3.9 准备CANN ToolKit 下载CANN T…

Centos6.5 用户权限例题

例题一&#xff1a;为网站管理员创建一个FTP帐户webmaster&#xff0c;将其加入到ftp组中&#xff0c;其登录的主目录为WEB站点的主目录/var/www/jnds.net&#xff0c;设置其为系统帐户&#xff0c;但却没有登录系统的权限&#xff0c;备注该用户为“FTP User” 解&#xff1a…

【RocketMQ】005-Docker 部署 RocketMQ

【RocketMQ】005-Docker 部署 RocketMQ 文章目录 【RocketMQ】005-Docker 部署 RocketMQ一、部署1、拉取镜像MQ 镜像可视化平台镜像 2、创建挂载目录创建 nameserver 挂载目录创建 broker 目录创建 broker 配置文件目录 3、编辑配置文件4、启动服务启动 nameserver启动 broker启…

pytorch保存、加载和解析模型权重

1、模型保存和加载 主要有两种情况&#xff1a;一是仅保存参数&#xff0c;二是保存参数及模型结构。 保存参数&#xff1a; torch.save(net.state_dict()) 加载参数&#xff08;加载参数前需要先实例化模型&#xff09;&#xff1a; param torch.load(param.pth) net.load_…

AWS 中文入门开发教学 47- S3 - 基本的使用

知识点 S3 - 基本的使用方法实战演习 创建存储桶 阻止所有公网访问: 打开版本控制、添加标签: KMS是收费的: 创建成功: 上传文件 选择存储类:

这是中国人工智能AI激情澎湃的一周

融资 贝联珠贯完成 5000 万元天使轮融资&#xff0c;业务涵盖 AI 型算力市场据投中网报道&#xff0c;近日&#xff0c;云资源管理服务提供商浙江贝联珠贯宣布完成 5000 万元天使轮融资&#xff0c;由元璟资本、红杉中国种子基金和舟轩股权投资。 盛大网络 CEO 陈天桥再投 1…

springboot就业信息管理系统

本次设计任务是要设计一个就业信息管理系统&#xff0c;通过这个系统能够满足就业信息管理功能。系统的主要功能包括&#xff1a;首页&#xff0c;个人中心&#xff0c;学生管理&#xff0c;导师管理&#xff0c;企业管理&#xff0c;招聘信息管理&#xff0c;应聘信息管理&…

DMA是一个超级简化版的cpu吗?

来自群友的讨论 我的理解是DMA某种程度相当于一个CPU是因为DMA拥有访问其他地址空间的权利。 从系统角度考虑&#xff0c;对整个系统的观测者一般CPU DSP GPU DMA是一个级别&#xff0c;其他都是slave。cache一致性POC是要保证所有观测者&#xff0c;包括DMA观测到相同数据。 …

【学习bubbliiiing代码-2】从txt中获取类别名称以及类别数量

本系列主要用于自我学习&#xff0c;参考的为bubbliiiing的代码 写一个优雅的&#xff1a;从txt文件中获得类别名与类别数的函数&#xff0c;如下&#xff1a; #---------------------------------------------------# # 获得类别名与类别数 #-----------------------------…

Python爬虫:利用JS逆向抓取携程网景点评论区图片的下载链接

Python爬虫:利用JS逆向抓取携程网景点评论区图片的下载链接 1. 前言2. 实现过程3. 运行结果 1. 前言 文章内容可能存在版权问题&#xff0c;为此&#xff0c;小编不提供相关实现代码&#xff0c;只是从js逆向说一说到底怎样实现这个的过程&#xff0c;希望能够帮助到那些正在做…

主动配电网故障恢复的重构与孤岛划分统一模型(Matlab代码实现)

&#x1f4a5;&#x1f4a5;&#x1f49e;&#x1f49e;欢迎来到本博客❤️❤️&#x1f4a5;&#x1f4a5; &#x1f3c6;博主优势&#xff1a;&#x1f31e;&#x1f31e;&#x1f31e;博客内容尽量做到思维缜密&#xff0c;逻辑清晰&#xff0c;为了方便读者。 ⛳️座右铭&a…

SIP协议学习(2)

文章目录 注册&#xff08;REGISTER&#xff09;1、AOR和Contact区别2、注册概述3、注册与定位服务4、注册超时处理5、注册消息6、多Contact地址处理7、下期预告 注册&#xff08;REGISTER&#xff09; 1、AOR和Contact区别 在学习注册之前&#xff0c;首先区分一下AOR和Cont…

Threads上线5天用户增至1亿,Threads软件常见问题百问百答

7月10日&#xff0c;脸书&#xff08;Facebook&#xff09;母公司Meta旗下新应用程序Threads上线的第5天&#xff0c;其用户数量已经超过1亿。这一增长速度打破聊天机器人ChatGPT的纪录——推出两个月内活跃用户量才破亿。 Threads或成为史上用户数增长速度最快的消费者应用。 …

Mysql数据库基础和增删改查操作

目录 一、数据库基本概念 二、数据库类型和常用数据库 1.关系型数据库 2.非关系型数据库 三、数据库的数据类型 四、SQL语句 1.简介 2.分类 五、SQL语句的使用 1.数据库操作 &#xff08;1&#xff09;创建数据库 ​编辑 &#xff08;2&#xff09;查看数据库 &am…

mac MySQL修改密码

简介&#xff1a; MySQL是一种常用的关系型数据库管理系统。在某些情况下&#xff0c;您可能需要关闭MySQL服务或修改root密码。本文将向您展示如何执行这些操作的步骤。 步骤1&#xff1a;关闭MySQL服务 打开MySQL软件并关闭它。 或者使用以下命令关闭MySQL服务&#xff1a…

conda的使用

一、conda 1、为什么使用conda 在安装Python包的过程中&#xff0c;可能遇到依赖包的问题。例如&#xff0c;要安装numpy&#xff0c;需要先安装BLAS和LAPACK等库。在使用pip等包管理工具时&#xff0c;这些依赖包需要手动安装&#xff0c;操作起来可能比较繁琐。而conda是一个…

pdf怎么添加水印图片?分享3个超实用解决方法

在使用PDF文件时&#xff0c;我们经常会看到一些设置的水印&#xff0c;这提醒观看者文件的所有权。给PDF文件添加水印是一种常见且实用的功能。为了解决如何给PDF添加水印的问题&#xff0c;我将介绍几种常用的方法。 方法一&#xff1a;使用WPS添加水印 WPS是我们常用的办公…