将项目部署到Linux系统上

news2024/11/18 15:47:46

目的是让我们的项目在linux上也能运行起来

有两种部署方式,手工部署或者是通过shell脚本自动部署

手工部署

准备工作:使用ifconfig指令查出服务器的ip地址:192.168.58.130 

1.在本地Idea中开发一个springboot项目,并且打包成jar包,在maven里面点击package就可以进行打包 ,打成的包在target文件夹里面

这个简单小项目如下:

@RestController
@RequestMapping("/hello")
public class HelloController
{
    @GetMapping("")
    public String hello()
    {
        System.out.println("Hello  world");

        return  "ok";
    }
}

 

2.在/usr/local文件夹下创建一个app文件夹

cd  /usr/local
mkdir  app
cd  app

将jar包上传到这个文件夹

3.启动springboot项目

注意这一步由于使用了java指令,所以需要先安装jdk

而且如果你项目pom.xml里面jdk是1.7,但是linux服务器的jdk是1.8,也是无法成功运行的

[root@localhost ~]# cd /usr/local/app
[root@localhost app]# ls
linux_test-0.0.1-SNAPSHOT.jar
[root@localhost app]# java -jar linux_test-0.0.1-SNAPSHOT.jar 

  .   ____          _            __ _ _
 /\\ / ___'_ __ _ _(_)_ __  __ _ \ \ \ \
( ( )\___ | '_ | '_| | '_ \/ _` | \ \ \ \
 \\/  ___)| |_)| | | | | || (_| |  ) ) ) )
  '  |____| .__|_| |_|_| |_\__, | / / / /
 =========|_|==============|___/=/_/_/_/
 :: Spring Boot ::                (v2.7.5)

2022-11-23 11:36:34.261  INFO 78186 --- [           main] c.e.linux_test.LinuxTestApplication      : Starting LinuxTestApplication v0.0.1-SNAPSHOT using Java 1.8.0_332 on localhost.localdomain with PID 78186 (/usr/local/app/linux_test-0.0.1-SNAPSHOT.jar started by root in /usr/local/app)
2022-11-23 11:36:34.275  INFO 78186 --- [           main] c.e.linux_test.LinuxTestApplication      : No active profile set, falling back to 1 default profile: "default"
2022-11-23 11:36:41.499  INFO 78186 --- [           main] o.s.b.w.embedded.tomcat.TomcatWebServer  : Tomcat initialized with port(s): 8080 (http)
2022-11-23 11:36:41.631  INFO 78186 --- [           main] o.apache.catalina.core.StandardService   : Starting service [Tomcat]
2022-11-23 11:36:41.631  INFO 78186 --- [           main] org.apache.catalina.core.StandardEngine  : Starting Servlet engine: [Apache Tomcat/9.0.68]
2022-11-23 11:36:43.748  INFO 78186 --- [           main] o.a.c.c.C.[Tomcat].[localhost].[/]       : Initializing Spring embedded WebApplicationContext
2022-11-23 11:36:43.748  INFO 78186 --- [           main] w.s.c.ServletWebServerApplicationContext : Root WebApplicationContext: initialization completed in 9297 ms
2022-11-23 11:36:45.758  INFO 78186 --- [           main] o.s.b.w.embedded.tomcat.TomcatWebServer  : Tomcat started on port(s): 8080 (http) with context path ''
2022-11-23 11:36:45.880  INFO 78186 --- [           main] c.e.linux_test.LinuxTestApplication      : Started LinuxTestApplication in 19.571 seconds (JVM running for 20.989)

4.检查服务器的防火墙,确保服务器的8080端口是对外开放的,这样浏览器才能成功访问到服务器上的springboot项目

Centos7 关闭防火墙,打开防火墙,开放某个端口,关闭某个端口_Pr Young的博客-CSDN博客

此时你在任意一台电脑上访问服务器的ip地址:http:192.168.58.130:8080/hello,都可以访问到我们的页面

将这个程序放在后台运行:即使退出终端也不会影响程序的运行

进入usr/local/app文件夹,输入nohup命令

[root@localhost app]# nohup java -jar linux_test-0.0.1-SNAPSHOT.jar &>hello.log &
[1] 80265

同时在这个文件夹下面会生成一个日志文件hello.log。,然后这个程序就在后台运行了,即使关掉终端窗口,也还是在继续运行

要停止这个后台程序,就只能通过杀进程的方式停止这个后台程序:

[root@localhost app]# ps -ef | grep java

root      80265  64801  2 13:51 pts/0    00:00:16 java -jar linux_test-0.0.1-SNAPSHOT.jar
root      80497  64801  0 14:01 pts/0    00:00:00 grep --color=auto java

可以看到 java -jar linux_test-0.0.1-SNAPSHOT.jar这个进程的id是80265,杀死这个进程即可

[root@localhost app]# kill -9  80265

通过shell脚本自动部署项目:

1.在linux上安装Git

yum list git
yum install git

2.上代码仓库把代码克隆下来

[root@localhost /]# cd usr
[root@localhost usr]# cd local
[root@localhost local]# git clone https://gitee.com/ouyangshuiming/linux_test

3.安装maven

解压:

root@localhost local]# tar -zxvf apache-maven-3.6.3-bin.tar.gz 

配置环境变量:

进入vim  /etc/profilevim  ,按i进入编辑模式

export MAVEN_HOME=/usr/local/apache-maven-3.6.3
export PATH=$JAVA_HOME/bin:$MAVEN_HOME/bin:$Path

最后esc,冒号,wq

4.bootStar.sh文件上传到/usr/local/sh文件夹里面

5.更改bootStar.sh文件的权限

[root@localhost sh]# ll
总用量 4
-rw-r--r--. 1 root root 1437 11月 23 16:01 bootStart.sh
[root@localhost sh]# chmod 777 bootStart.sh
[root@localhost sh]# ll
总用量 4
-rwxrwxrwx. 1 root root 1437 11月 23 16:01 bootStart.sh

6.执行shell文件

[root@localhost sh]# ./bootStart.sh
=================================
自动化部署脚本启动
=================================
停止原来运行中的工程
Stop Success!
准备从Git仓库拉取最新代码
开始从Git仓库拉取最新代码
fatal: Not a git repository (or any of the parent directories): .git
代码拉取完成
开始打包
./bootStart.sh: 第 36 行:cd: target: 没有那个文件或目录
启动项目
项目启动完成

​​​​​​​​​​​​坏的解释器: 没有那个文件或目录 - 简书

如果出现坏的解释器问题,可以参考这篇博客vim

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

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

相关文章

以太网模块的传输距离怎么看

光模块的关键标准组织主要有两个:IEEE和MSA。其中GBASE开头的标准主要是IEEE802.3提出与定义的。要弄清光模块的传输距离,首先让我们要弄清楚它的命名是怎样的。 100G光模块的命名规则: 400G光模块的命名规则: 其中100G和400G光模…

SpringBoot整合Mybatis方式1:使用XML方式整合Mybatis

SpringBoot整合Mybatis简介SpringBoot整合Mybatis方式1:使用XML方式整合Mybatis1.用idea创建一个添加mybatis需要的相关依赖的工程。2.准备数据库和表3.创建表映射类4.创建mapper文件4.1 创建UsersMapper.xml文件,并添加sql语句4.2 创建mapper对应的代理…

Docker的Cgroup资源限制

Docker通过Cgroup来控制容器使用的资源配额,包括 CPU、内存、磁盘三大方面,基本覆盖了常见的资源配颡和使用量控制。 Cgoup 是CotrolGroups 的缩写,是Linux 内核提供的一种可以限制、记录、隔高进程组所使用的物理资源(如CPU、内存…

基于jsp的学生培训管理系统

项目描述 临近学期结束,还是毕业设计,你还在做java程序网络编程,期末作业,老师的作业要求觉得大了吗?不知道毕业设计该怎么办?网页功能的数量是否太多?没有合适的类型或系统?等等。这里根据疫情当下,你想解决的问…

【教学类-18-01】20221123《蒙德里安红黄蓝格子画》(大班)

效果展示: 单页效果 多页效果 预设效果 背景需求: 2022年11月23日,作为艺术特色幼儿园,蒙德里安风格装饰在我们幼儿园的环境中。 蒙德里安是几何抽象画派的先驱,以几何图形为绘画的基本元素,与德士堡等创…

MyBatis-Plus 和swagger

MyBatis-Plus 1.1MyBatis Plus 简介 mybatisplus 官网: https://baomidou.com/ MyBatis-Plus(简称 MP)是一个 MyBatis 的增强工具,在 MyBatis 的基础上只做增强不做改变, 为简化开发、提高效率而生。 1.2主要特性&a…

【项目管理】Java使用pdfbox调用打印机打印PDF文件

【项目管理】Java使用pdfbox调用打印机打印PDF文件1.项目前言2.项目实现3.关键代码4.效果演示5.问题处理5.1 安装对应字体5.2 修改对应代码系统:Win10 Java:1.8.0_333 IDEA:2020.3.4 Gitee:https://gitee.com/lijinjiang01/Printe…

如何使用轮播图实现水平内容自动切换

通过轮播图实现一个水平内容自动切换 效果展示 前置准备 三张背景图片 具体步骤 添加一个轮播图组件 添加一个图片 添加一个标题 添加数据表 添加事件 添加触发器 绑定数据 步骤拆解 添加一个轮播图组件 1.1 拖拽 轮播图 到 编辑区 1.2 调整 轮播图 样式 添加一个图片 …

有关QT的问题大全

文章目录现在2022年,Qt发展如何?是就业的好选择吗?如何学习Qt,c到什么程度可以去学qt?现在 Qt 好找工作吗?为什么工业软件开发一般用的都是QT?初学QT怎么学?请问目前做windows桌面应用程序,MFC…

工作中Java Stream的简单应用

标题开发使用filter() and map()max()根据集合对象中的某个属性取最大值先解释一下各变量含义: temps集合是userids的子集(大前提) cache是temps集合在userids集合中的补集 简单来说就是,userids集合-temps集合cache补集,如下图所示目标:此次为工作中实际遇到的问题,需要得到c…

C++编译链接

文章目录C编译链接C编译模式分离式编译是个啥?怎么实现上述过程?定义与声明引出新的问题头文件有关头文件用来干啥?include头文件中应该写什么?#ifndef通过gcc/g命令来看完整的编译链接过程预处理(Preprocessing)编译(Compilation…

院内导航系统哪家口碑好?医疗院内导航地图公司排名

“医生,请问验血怎么走?”   “护士,请问药房在哪儿?”   “您好,做CT在什么地方?”   这些问题是医生和护士经常遇到的问题。的确,患者就诊时,由于对医院环境不熟悉&#xff…

云计算(虚拟化)面试宝典

一:服务器虚拟化 1.名词解释 (1)资源动态调整(对象是虚拟机) 管理员操作,对CPU、内存、网卡、硬盘、GPU进行调整。 FusionCompute支持虚拟机资源动态调整,用户可以根据业务负载动态调整资源的使用情况。 虚拟机资源调整包括: 离线/在线调整vCPU数目 无论虚拟机处于离线…

如何使用C++图形界面开发框架Qt创建一个应用程序?(Part 3)

Qt是目前最先进、最完整的跨平台C开发工具。它不仅完全实现了一次编写,所有平台无差别运行,更提供了几乎所有开发过程中需要用到的工具。如今,Qt已被运用于超过70个行业、数千家企业,支持数百万设备及应用。 点击获取Qt组件下载 …

Flink的状态编程

Flink 处理机制的核心,就是“有状态的流式计算”。在流处理中,数据是连续不断到来和处理的。每个任务进行计算处理时,可以基于当前数据直接转换得到输出结果;也可以依赖一些其他数据。这些由一个任务维护,并且用来计算…

【HAL库】STM32CubeMX开发----STM32F407----CAN通信实验

STM32CubeMX 下载和安装 详细教程 【HAL库】STM32CubeMX开发----STM32F407----目录 前言 本次实验以 STM32F407VET6 芯片为MCU,使用 25MHz 外部时钟源。 CAN通信波特率为 500K bps。 CAN通信引脚 与 MCU引脚 对应关系如下: CAN通信引脚MCU引脚TXPB9RXP…

虹科教您 | 虹科Automation softPLC入门操作指南(2)——子程序和用户自定义功能块 UDFB

虹科KPA Automation softPLC是为Linux、Xenomai、INtime、Windows等实时操作系统开发PLC的编程环境,适合需要使用IEC61131-3和PLCopen标准的控制技术和进行PLC编程的用户。本篇文章将帮助您创建和使用IEC语言开发的函数和功能块。 Automation softPLC Studio 命名规…

kettle 9.2源码打包和idea环境启动及常见错误

一:源码打包 这里为什么是kettle 9.2,因为kettle 9.3需要jdk11 这里直接去下载kettle的源码,tag9.2.0.4-R。这里需要自己搭建一个nexus仓库,因为有些包从kettle的仓库里面下载不下来。 nexus新建仓库代理, 记得加到public里面去 …

学术界or工业界,高校博后转行大厂工程师心得!

8本电子书免费送给大家,见文末。 导读:以下是这篇文章是一位 七月在线 学员的的学习和面试经历的分享,现将学员学习和面试心得分享给大家,祝大家都能有好的offer。 1 个人情况 我之前在高校做博后,现在转行到大厂做…

数据库的基本操作(7)

在这一篇博客中我将对数据库进行一个结尾,这将是关于数据库基本内容的结尾。 首先我们来简单总结一下前面的内容: 前面主要讲了Mysql中的索引和事务,这是面试必考的内容。 索引,怎么理解索引呢? 1.索引存在的意义&…