• 将项目部署到Linux系统上


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

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

    手工部署

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

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

    这个简单小项目如下:

    1. @RestController
    2. @RequestMapping("/hello")
    3. public class HelloController
    4. {
    5. @GetMapping("")
    6. public String hello()
    7. {
    8. System.out.println("Hello world");
    9. return "ok";
    10. }
    11. }

     

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

    1. cd /usr/local
    2. mkdir app
    3. cd app

    将jar包上传到这个文件夹

    3.启动springboot项目

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

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

    1. [root@localhost ~]# cd /usr/local/app
    2. [root@localhost app]# ls
    3. linux_test-0.0.1-SNAPSHOT.jar
    4. [root@localhost app]# java -jar linux_test-0.0.1-SNAPSHOT.jar
    5. . ____ _ __ _ _
    6. /\\ / ___'_ __ _ _(_)_ __ __ _ \ \ \ \
    7. ( ( )\___ | '_ | '_| | '_ \/ _` | \ \ \ \
    8. \\/ ___)| |_)| | | | | || (_| | ) ) ) )
    9. ' |____| .__|_| |_|_| |_\__, | / / / /
    10. =========|_|==============|___/=/_/_/_/
    11. :: Spring Boot :: (v2.7.5)
    12. 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)
    13. 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"
    14. 2022-11-23 11:36:41.499 INFO 78186 --- [ main] o.s.b.w.embedded.tomcat.TomcatWebServer : Tomcat initialized with port(s): 8080 (http)
    15. 2022-11-23 11:36:41.631 INFO 78186 --- [ main] o.apache.catalina.core.StandardService : Starting service [Tomcat]
    16. 2022-11-23 11:36:41.631 INFO 78186 --- [ main] org.apache.catalina.core.StandardEngine : Starting Servlet engine: [Apache Tomcat/9.0.68]
    17. 2022-11-23 11:36:43.748 INFO 78186 --- [ main] o.a.c.c.C.[Tomcat].[localhost].[/] : Initializing Spring embedded WebApplicationContext
    18. 2022-11-23 11:36:43.748 INFO 78186 --- [ main] w.s.c.ServletWebServerApplicationContext : Root WebApplicationContext: initialization completed in 9297 ms
    19. 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 ''
    20. 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命令

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

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

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

    1. [root@localhost app]# ps -ef | grep java
    2. root 80265 64801 2 13:51 pts/0 00:00:16 java -jar linux_test-0.0.1-SNAPSHOT.jar
    3. 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

    1. yum list git
    2. yum install git

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

    1. [root@localhost /]# cd usr
    2. [root@localhost usr]# cd local
    3. [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进入编辑模式

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

    最后esc,冒号,wq

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

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

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

    6.执行shell文件

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

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

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

  • 相关阅读:
    LeetCode 63. 不同路径 II
    SimpleAdmin手摸手教学之:项目架构设计2.0
    [pytorch笔记]02-主要组成模块&基础实战
    Win11怎么禁止软件后台运行?Win11系统禁止应用在后台运行的方法
    视频集中存储/直播点播平台EasyDSS点播文件分类功能新升级
    工作常用之Hive 调优【四】HQL 语法优化
    使用 Navicat 工具查看 SQLite 数据库中的 PNG 图片
    题目 1096:扫雷舰
    Enzo丨Enzo 链霉亲和素阻滞剂/稀释剂方案
    go语法入门1
  • 原文地址:https://blog.csdn.net/weixin_47414034/article/details/127996114