Ubuntu部署SpringBoot项目

文章目录

  • Ubuntu部署SpringBoot项目
    • 一、JDK
      • 1.1 下载
      • 1.2 解压JDK配置环境变量
      • 1.3 是否安装成功
      • 1.4 开机自启
        • 1.4.1 修改脚本
        • 1.4.2 设置开机自启
    • 二、Redis
      • 2.1 下载
      • 2.2 解压Redis并安装
      • 2.3 开机自启
        • 2.3.1 修改脚本
        • 2.3.2 设置开机自启
    • 三、Nginx
      • 3.1 安装Nginx依赖包
        • 3.1.1 prce-devel、zlib-devel、openssl-devel
        • 3.1.2 gcc-c++
      • 3.2 解压Nginx并安装
      • 3.3 开机自启
        • 3.3.1 修改脚本
        • 3.3.2 设置开机自启

Ubuntu部署SpringBoot项目

一、JDK

1.1 下载

OpenJDK11下载地址

1.2 解压JDK配置环境变量

# 创建Java Home路径
sudo mkdir /usr/java# 复制openjdk至/usr/java目录下,并解压openjdk
cp openjdk-11.0.1_linux-x64_bin.tar.gz /usr/java
tar -zxvf openjdk-11.0.1_linux-x64_bin.tar.gz# vim打开配置文件
vim + /etc/profile# 在最后两行添加命令
export JAVA_HOME=/usr/java/jdk-11.0.1
export PATH=$JAVA_HOME/bin:$PATH# 重启配置文件使配置生效
source /etc/profile

1.3 是否安装成功

# 输入以下两个命令,如果出现JDK版本,说明安装成功
java -version
javac -version

1.4 开机自启

1.4.1 修改脚本
  • 复制启动和停止脚本
cp start_app.sh /home/rt_app/
cp stop_app.sh /home/rt_app/
  • 启动脚本
#!/bin/sh
# jdk目录
export JAVA_HOME=/usr/java/jdk-11.0.1
export PATH=$PATH:$JAVA_HOME/bin
# 启动项目
nohup java -jar /home/rt_app/target/xxx.jar &
# 导出项目启动的pid(用于关闭)
echo $! > /var/run/xxx.pid
  • 停止脚本
#!/bin/sh
PID=$(cat /var/run/xxx.pid)
kill -9 $PID
  • 服务脚本
[Unit]
Description=app-service
After=syslog.target network.target remote-fs.target nss-lookup.target
[Service]
Type=forking
ExecStart=/home/rt_app/start_app.sh
ExecStop=/home/rt_app/stop_app.sh
PrivateTmp=true
[Install]
WantedBy=multi-user.target
1.4.2 设置开机自启
# 复制app.service至/etc/systemd/system/目录下
cp app.service /etc/systemd/system/# 设置开机启动
systemctl daemon-reload
systemctl enable app
systemctl start app# 取消开机自启动
systemctl disable app# 查看服务当前状态
systemctl status app# 启动服务
systemctl start app# 停止服务
systemctl stop app# 重启服务
systemctl restart app

二、Redis

2.1 下载

Redis6.2.5下载地址

2.2 解压Redis并安装

# 复制redis至/usr/java目录下,并解压redis
cp redis-6.2.5.tar.gz /usr/java
tar -zxvf redis-6.2.5.tar.gz# 进入redis-6.2.5目录,安装
cd redis-6.2.5
make && make install# 复制redis.conf文件至/usr/local/bin/目录下
cp redis.conf /usr/local/bin/# 启动redis-server
./redis-server redis.conf# 验证是否启动成功
./redis-cli

2.3 开机自启

2.3.1 修改脚本
  • 服务脚本
[Unit]
Description=Redis In-Memory Data Store
After=network.target[Service]
User=root
Group=root
ExecStart=/usr/local/bin/redis-server /usr/local/bin/redis.conf
ExecStop=/usr/local/bin/redis-cli shutdown
Restart=always[Install]
WantedBy=multi-user.target
  • 配置文件
# 修改bind
bind 127.0.0.1 -::1 改为 bind 0.0.0.0 -::1# 修改daemonize
daemonize no 改为 daemonize yes# 修改requirepass设置密码
2.3.2 设置开机自启
# 复制redis.service至/etc/systemd/system/目录下
cp redis.service /etc/systemd/system/# 设置开机启动
systemctl daemon-reload
systemctl enable redis
systemctl start redis# 取消开机自启动
systemctl disable redis# 查看服务当前状态
systemctl status redis# 启动服务
systemctl start redis# 停止服务
systemctl stop redis# 重启服务
systemctl restart redis

三、Nginx

3.1 安装Nginx依赖包

需要先依次安装gcc-c++, pcre-devel, zlib, zlib-devel, openssl, openssl-devel这几个依赖

3.1.1 prce-devel、zlib-devel、openssl-devel
# 进入每个目录下,运行如下命令即可
rpm -Uvh --nodeps --force *.rpm
3.1.2 gcc-c++
# 进入gcc-c++目录下,运行install.sh
sh install.sh

3.2 解压Nginx并安装

# 复制nginx至/usr/java目录下,并解压nginx
cp nginx-1.16.1.tar.gz /usr/java
tar -zxvf nginx-1.16.1.tar.gz# 进入nginx-1.16.1目录,安装
cd nginx-1.16.1
./configure
make && make install# 复制nginx.conf至/usr/local/nginx/conf目录下
cp nginx.conf /usr/local/nginx/conf/nginx.conf# 给logs文件夹复制777权限, 若没有需要创建一个
mkdir /usr/local/nginx/logs/
chmod 777 /usr/local/nginx/logs/# 启动nginx
cd /usr/local/nginx/sbin/
./nginx# 停止nginx
cd /usr/local/nginx/sbin/
./nginx -s stop

3.3 开机自启

3.3.1 修改脚本
  • 服务脚本
[Unit]
Description=nginx - high performance web server
After=nginx.service
[Service]
Type=forking
ExecStart=/usr/local/nginx/sbin/nginx
ExecReload=/usr/local/nginx/sbin/nginx -s reload
ExecStop=/usr/local/nginx/sbin/nginx -s stop
Execenable=/usr/local/nginx/sbin/nginx
[Install]
WantedBy=multi-user.target
  • 配置文件
location / {root   radar_training;index  index.html index.htm;
}location /bts/radar/training {proxy_set_header Host $http_host;proxy_set_header X-Real-IP $remote_addr;proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;proxy_set_header X-Forwarded-Proto $scheme;proxy_connect_timeout 300;proxy_http_version 1.1;proxy_set_header Connection "";chunked_transfer_encoding off;proxy_pass http://127.0.0.1:9092/bts/radar/training/;
}location /bts/c/server {proxy_set_header Host $http_host;proxy_set_header X-Real-IP $remote_addr;proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;proxy_set_header X-Forwarded-Proto $scheme;proxy_connect_timeout 300;proxy_http_version 1.1;proxy_set_header Connection "";chunked_transfer_encoding off;proxy_pass http://127.0.0.1:8020/bts/c/server/;
}
3.3.2 设置开机自启
# 复制nginx.service至/etc/systemd/system/目录下
cp nginx.service /etc/systemd/system/# 设置开机启动
systemctl daemon-reload
systemctl enable nginx
systemctl start nginx# 取消开机自启动
systemctl disable nginx# 查看服务当前状态
systemctl status nginx# 启动服务
systemctl start nginx# 停止服务
systemctl stop nginx# 重启服务
systemctl restart nginx

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

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

相关文章

Python酷库之旅-第三方库Pandas(006)

目录 一、用法精讲 10、pandas.DataFrame.to_excel函数 10-1、语法 10-2、参数 10-3、功能 10-4、返回值 10-5、说明 10-6、用法 10-6-1、数据准备 10-6-2、代码示例 10-6-3、结果输出 11、pandas.ExcelFile类 11-1、语法 11-2、参数 11-3、功能 11-4、返回值 …

BUUCTF - Basic

文章目录 1. Linux Labs 【SSH连接漏洞】2. BUU LFI COURSE【文件包含漏洞】3. BUU BRUTE【暴力破解用户名密码】4. BUU SQL COURSE【SQL注入-当前数据库】5. Upload-Labs-Linux 1【文件上传漏洞】7. Buu Upload Course 1【文件上传包含漏洞】8. sqli-labs 1【SQL注入-服务器上…

MySQL常用高级特性

MySQL作为一种广泛使用的关系型数据库管理系统,除了基本的数据库功能外,还提供了许多高级特性来满足不同应用场景的需求。以下是一些MySQL的常用高级特性及其详细讲解: 1. 存储引擎 功能介绍 MySQL支持多种存储引擎,每种引擎在…

C++线程的使用

C11之前,C语言没有对并发编程提供语言级别的支持,这使得我们在编写可移植的并发程序时,存在诸多的不便。现在C11中增加了线程以及线程相关的类,很方便地支持了并发编程,使得编写的多线程程序的可移植性得到了很大的提高…

使用Java构建物联网应用的最佳实践

使用Java构建物联网应用的最佳实践 大家好,我是免费搭建查券返利机器人省钱赚佣金就用微赚淘客系统3.0的小编,也是冬天不穿秋裤,天冷也要风度的程序猿! 随着物联网(IoT)技术的快速发展,越来越…

【FFMPEG基础(一)】解码源码

学习分享 main函数decodetorgb32.h 文件decodetorgb32 .cpp文件 main函数 #include <QApplication> #include "decodetorgb32.h" int main(int argc, char *argv[]) {QApplication a(argc, argv);DecodeToRGB32 toRGB32;int restoRGB32.openVideo("../fi…

01 Web基础与HTTP协议

1.1 Web 基础 本章将介绍 Web 基础知识&#xff0c;包括域名的概念、DNS 原理、静态网页和动态网页的相关知识。 1.1.1.域名概述 1.域名的概念 ip地址不易记忆 2.早期使用host文件解析域名 主机名重复主机维护困难 3.DNS 分布式层次式 4.域名空间结构 根域顶级域 组…

InstantStyle-Plus:风格转移与内容保留在文本到图像的生成

在之前的文章中已经和大家介绍过小红书在风格保持方面的优秀工作InstantID和InstantStyle,感兴趣的小伙伴可以点击下面&#x1f447;链接阅读&#xff5e; 小红书InstantID来了, 一张照片几秒钟就能生成个性化图片, 无缝衔接Stable Diffusion&#xff09; InstantID作者新作&…

国外使用代理IP的安全风险

1. 数据泄露 当使用代理IP时&#xff0c;用户的真实IP地址被隐藏&#xff0c;但仍然存在数据泄露的风险。如果代理服务器没有进行恰当的安全措施&#xff0c;用户的个人信息和访问记录可能会被黑客窃取或监控。 2. 恶意软件 在使用代理IP时&#xff0c;用户可能会在代理服务器…

关于 Mac 系统 .DS_store 文件的起源

原文&#xff1a;Arno - 2006.10.01 &#xff08;前排提醒&#xff1a;可以在 .gitignore 中添加 .DS_Store&#xff0c;否则 git 仓库会存储这个和项目无关的文件。&#xff09; 如果你是 Mac 用户&#xff0c;曾经将文件从 Mac 传输到 Windows&#xff0c;那么可能对 .DS_S…

c++ word转换为pdf

在windows系统下&#xff0c;使用QAxObject效果是最好的 转60多兆的文件速度还是可以的&#xff0c;不建议使用多线程&#xff0c;因为多线程会多次调用转换函数&#xff0c;导致程序一直运行&#xff0c;只有全部转换完成后&#xff0c;程序才能继续向下运行&#xff0c;但是c…

SketchUp + Enscape+ HTC Focus3 VR

1. 硬件: 设备连接 2. 软件: 安装steam steamVR Vive Business streaming 3. 操作: 双方登录steam 账号,然后带上头盔,用手柄在HTC Focus3 安装 串流软件,选择串流软件,在Enscape中选择 VR 模式即可 4.最终效果: SketchUp Enscape HTC Focus 3 VR 实时预览_哔哩哔哩_bi…

云微客短视频矩阵全域营销,更高效的获客引流方式!

在抖音这样一个拥有海量用户和内容的短视频平台上&#xff0c;单一账号往往难以覆盖我们的客户群体&#xff0c;甚至于每天发布四五条视频&#xff0c;所引发的流量也是微乎其微的。在竞争如此激烈的市场环境中&#xff0c;商家企业无不想方设法追求更高效的获客引流方式&#…

SQL Server 查询死锁以及解决死锁的基本知识(图文)

目录 1. 基本知识2. 查看和解锁被锁的表3. 查看和处理数据库堵塞 1. 基本知识 在 SQL Server 中&#xff0c;死锁是指两个或多个进程互相等待对方持有的资源&#xff0c;从而无法继续执行的现象 要解决死锁问题&#xff0c;首先需要识别并分析死锁的发生原因&#xff0c;然后…

Floyd判圈算法——环形链表(C++)

Floyd判圈算法(Floyd Cycle Detection Algorithm)&#xff0c;又称龟兔赛跑算法(Tortoise and Hare Algorithm)&#xff0c;是一个可以在有限状态机、迭代函数或者链表上判断是否存在环&#xff0c;求出该环的起点与长度的算法。 …

什么是断路器模式?Hystrix在其中扮演什么角色?

断路器模式&#xff08;Circuit Breaker Pattern&#xff09; 断路器模式是一种设计模式&#xff0c;它用于在分布式系统中防止级联失败的发生。类比于电路中的断路器&#xff0c;该模式的核心思想是当系统检测到一些调用或响应出现问题&#xff08;如超时、异常等&#xff09…

科研绘图系列:R语言箱线图(boxplot)

介绍 使用 ggplot2 包画箱线图通常使用 geom_boxplot() 函数。箱线图(Boxplot)是一种用于展示一组数据分布特征的图形,它能够提供以下信息: 中位数:箱线图中的中位线表示数据的中位数。四分位数:箱线图的箱子部分表示数据的四分位数范围,即25%和75%分位数,这可以展示数…

SQL面试题练习 —— 各用户最长的连续登录天数-可间断

目录 1 题目2 建表语句3 题解 1 题目 现有各用户的登录记录表t_login_events如下&#xff0c;表中每行数据表达的信息是一个用户何时登录了平台。现要求统计各用户最长的连续登录天数&#xff0c;间断一天也算作连续&#xff0c;例如&#xff1a;一个用户在1,3,5,6登录&#xf…

NVM 设置系统/终端默认(default)NODE 版本

NVM 设置系统/终端默认&#xff08;default&#xff09;NODE 版本 nvm alias default node版本查看当前 default 指向的 node 版本为 v16.17.1 nvm alias default 切换系统默认版本 查看当前 default 指向新版本

使用POI实现Excel文件的读取(超详细)

目录 一 导入poi相关的maven坐标 二 实现创建并且写入文件 2.1实现步骤 2.2实现代码 2.3效果展示 ​编辑 2.4注意 三 实现从Excel文件中读取数据 3.1实现步骤 3.2实现代码 3.3结果展示 一 导入poi相关的maven坐标 <!-- Apache poi --><dependency><gro…