【Linux学习】05-2Linux上部署项目

2023-10-06 22:45

本文主要是介绍【Linux学习】05-2Linux上部署项目,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

Linux(B站黑马)学习笔记

01Linux初识与安装
02Linux基础命令
03Linux用户和权限
04Linux实用操作
05-1Linux上安装部署各类软件
05-2Linux上部署项目


文章目录

  • Linux(B站黑马)学习笔记
  • 前言
  • 05-2Linux上部署项目
  • 部署Springboot项目
    • 手工部署
    • 通过Shell脚本自动部署项目
  • 注:


前言

Linux(B站黑马)学习笔记 05-2Linux上部署项目


05-2Linux上部署项目

部署Springboot项目

案例项目:瑞吉外卖

手工部署

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

执行maven中的package命令

注意:如果打包前已经有target目录执行打包前建议先执行clean命令,确保我们打包的时候是一个干净的环境

  1. 将jar包上传到Linux服务器
mkdir /usr/local/app    创建目录,可以将项目jar包放到此目录

输入rz命令,打开文件上传界面

  1. 在Linux项目中运行该项目jar包
java -jar reggie-0.0.1-SNAPSHOT.jar

注意:Linux要安装JDK才能成功运行,版本要一致。另外Springboot内嵌了Tomcat,Linux安装了Tomcat且开着的话如果与项目内使用同一端口会造成冲突。

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

CentOS系统默认开启了防火墙,阻止外部网络流量访问系统内部

所以,如果想要正常使用,需要对8080端口进行放行

放行有2种操作方式:

  1. 关闭防火墙

  2. 配置防火墙规则,放行端口

# 以下操作2选一即可
# 方式1:关闭防火墙
systemctl stop firewalld        # 关闭防火墙
systemctl disable firewalld        # 停止防火墙开机自启# 方式2:放行8080端口的外部访问
firewall-cmd --add-port=8080/tcp --permanent    # --add-port=8080/tcp表示放行8080端口的tcp访问,--permanent表示永久生效
firewall-cmd --reload                # 重新载入防火墙规则使其生效

方便起见,建议同学们选择方式1,直接关闭防火墙一劳永逸

且防火墙的配置非常复杂

  1. 测试访问

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

目前程序运行的问题:程序在终端采用霸屏形式运行,关闭终端程序也跟着关闭了

  • 线上程序不会采用控制台霸屏的形式运行程序,而是将程序在后台运行
  • 线上程序不会将日志输出到控制台,而是输出到日志文件,方便运维查阅信息

nohup java -jar boot工程.jar &>日志文件.log &   后台运行java -jar命令,并将日志输出到日志文件
nohup java -Xms32m -Xmx64m -jar boot工程.jar &>日志文件.log &
  • nohup: 表示忽略挂断信号,保持程序在后台运行。
  • java: 运行Java程序的命令。
  • -Xms32m -Xmx64m: 设置Java虚拟机的初始堆大小为32MB,最大堆大小为64MB。
  • -jar boot工程.jar: 指定要运行的Java程序的JAR文件路径。
  • &>日志文件.log: 将标准输出和标准错误重定向到日志文件.log文件中。
  • &: 将程序放入后台运行。

  1. 停止SpringBoot程序

停止springboot程序需要通过杀进程的方式,找到对应的进程杀掉就行

ps -ef | gref 'java -jar'    查看进程
kill -9 "进程号"    杀死进程     

通过Shell脚本自动部署项目

操作步骤:

  1. 在Linux中安装Git

  2. 在Linux中安装maven

  3. 编写Shell脚本(可以实现拉取代码、编译、打包、启动)

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

  5. 执行shell脚本

在Linux中安装Git、maven请看:【Linux学习】05-1Linux上安装部署各类软件

  1. 使用Git克隆代码

  1. 编写Shell脚本
#!/bin/sh
echo ======================================
echo   自动化部署脚本启动
echo ======================================echo 停止原来运行中的工程
APP_NAME=reggietpid=`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/reggieecho 开始从Git仓库拉取最新代码
git pull
echo 代码拉取完成echo 开始打包
output=`mvn clean package -Dmaven.test.skip=true`cd targetecho 启动项目
nohup java -jar reggie-0.0.1-SNAPSHOT.jar &> reggie.log &
echo 项目启动完成

此脚本其实就是自动执行杀掉运行中的进程,再进入到本地git仓库中从远程下拉代码自动打包执行。

  1. 在Linux中编辑此脚本

执行 vim bookStart.sh 后手动将脚本内容复制进去。

  1. 为用户授权

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

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

chmod 777 bookStart.sh  # 为所有用户授予读、写、执行权限

  1. 执行脚本文件
./bookStart.sh    # 执行脚本文件

跟踪查看日志文件

tail -f /usr/local/reggie/target/reggie.log   # 跟踪查看日志文件

至此,项目成功通过shell脚本实现在Linux自动部署


注:

该内容是根据B站黑马程序员学习时所记,相关资料可在B站查询:黑马程序员新版Linux零基础快速入门到精通,全涵盖linux系统知识、常用软件环境部署、Shell脚本、云平台实践、大数据集群项目实战等

这篇关于【Linux学习】05-2Linux上部署项目的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/154372

相关文章

Linux内核参数配置与验证详细指南

《Linux内核参数配置与验证详细指南》在Linux系统运维和性能优化中,内核参数(sysctl)的配置至关重要,本文主要来聊聊如何配置与验证这些Linux内核参数,希望对大家有一定的帮助... 目录1. 引言2. 内核参数的作用3. 如何设置内核参数3.1 临时设置(重启失效)3.2 永久设置(重启仍生效

Node.js 数据库 CRUD 项目示例详解(完美解决方案)

《Node.js数据库CRUD项目示例详解(完美解决方案)》:本文主要介绍Node.js数据库CRUD项目示例详解(完美解决方案),本文给大家介绍的非常详细,对大家的学习或工作具有一定的参考... 目录项目结构1. 初始化项目2. 配置数据库连接 (config/db.js)3. 创建模型 (models/

kali linux 无法登录root的问题及解决方法

《kalilinux无法登录root的问题及解决方法》:本文主要介绍kalilinux无法登录root的问题及解决方法,本文给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,... 目录kali linux 无法登录root1、问题描述1.1、本地登录root1.2、ssh远程登录root2、

springboot项目中常用的工具类和api详解

《springboot项目中常用的工具类和api详解》在SpringBoot项目中,开发者通常会依赖一些工具类和API来简化开发、提高效率,以下是一些常用的工具类及其典型应用场景,涵盖Spring原生... 目录1. Spring Framework 自带工具类(1) StringUtils(2) Coll

Linux ls命令操作详解

《Linuxls命令操作详解》通过ls命令,我们可以查看指定目录下的文件和子目录,并结合不同的选项获取详细的文件信息,如权限、大小、修改时间等,:本文主要介绍Linuxls命令详解,需要的朋友可... 目录1. 命令简介2. 命令的基本语法和用法2.1 语法格式2.2 使用示例2.2.1 列出当前目录下的文

Spring Boot项目部署命令java -jar的各种参数及作用详解

《SpringBoot项目部署命令java-jar的各种参数及作用详解》:本文主要介绍SpringBoot项目部署命令java-jar的各种参数及作用的相关资料,包括设置内存大小、垃圾回收... 目录前言一、基础命令结构二、常见的 Java 命令参数1. 设置内存大小2. 配置垃圾回收器3. 配置线程栈大小

Spring Boot项目中结合MyBatis实现MySQL的自动主从切换功能

《SpringBoot项目中结合MyBatis实现MySQL的自动主从切换功能》:本文主要介绍SpringBoot项目中结合MyBatis实现MySQL的自动主从切换功能,本文分步骤给大家介绍的... 目录原理解析1. mysql主从复制(Master-Slave Replication)2. 读写分离3.

Linux中的计划任务(crontab)使用方式

《Linux中的计划任务(crontab)使用方式》:本文主要介绍Linux中的计划任务(crontab)使用方式,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教... 目录一、前言1、linux的起源与发展2、什么是计划任务(crontab)二、crontab基础1、cro

Linux换行符的使用方法详解

《Linux换行符的使用方法详解》本文介绍了Linux中常用的换行符LF及其在文件中的表示,展示了如何使用sed命令替换换行符,并列举了与换行符处理相关的Linux命令,通过代码讲解的非常详细,需要的... 目录简介检测文件中的换行符使用 cat -A 查看换行符使用 od -c 检查字符换行符格式转换将

Linux系统配置NAT网络模式的详细步骤(附图文)

《Linux系统配置NAT网络模式的详细步骤(附图文)》本文详细指导如何在VMware环境下配置NAT网络模式,包括设置主机和虚拟机的IP地址、网关,以及针对Linux和Windows系统的具体步骤,... 目录一、配置NAT网络模式二、设置虚拟机交换机网关2.1 打开虚拟机2.2 管理员授权2.3 设置子