部署前后端项目
部署项目 liunx
软件安装
软件安装方式
在Linux系统中,安装软件的方式主要有四种,这四种安装方式的特点如下:

建议nginx、MySQL、Redis等等使用docker安装,会很便捷,这里只演示JDK、ngxin手动的安装
安装JDK
上述我们介绍了Linux系统软件安装的四种形式,接下来我们就通过第一种(二进制发布包)形式来安装JDK。 JDK对应的二进制发布包:jdk-17.0.12_linux-x64_bin.tar.gz一般为gz格式的文件。
1). 上传安装包
加粗样式
使用FinalShell自带的上传工具将jdk的二进制发布包上传到Linux

由于上述在进行文件上传时,选择的上传目录 /root,上传完毕后,我们执行指令 cd /root 切换到根目录下,查看上传的安装包。

2). 解压安装包
执行如下指令,将上传上来的压缩包进行解压,并通过-C参数指定解压文件存放目录为 /usr/local。
tar -zxvf jdk-17.0.12_linux-x64_bin.tar.gz -C /usr/local/
3). 配置环境变量
使用vim命令修改/etc/profile文件,在文件末尾加入如下配置
export JAVA_HOME=/usr/local/jdk-17.0.12
export PATH=$JAVA_HOME/bin:$PATH
具体操作指令如下:
1). 编辑/etc/profile文件,进入命令模式vim /etc/profile2). 在命令模式中,输入指令 G , 切换到文件最后G3). 在命令模式中输入 i/a/o 进入插入模式,然后切换到文件最后一行i4). 将上述的配置拷贝到文件中export JAVA_HOME=/usr/local/jdk-17.0.12export PATH=$JAVA_HOME/bin:$PATH5). 从插入模式,切换到指令模式ESC6). 按:进入底行模式,然后输入wq,回车保存:wq
4). 重新加载profile文件
为了使更改的配置立即生效,需要重新加载profile文件,执行命令:
source /etc/profile
5). 检查安装是否成功
java -version
输出版本号即为成功~~
安装Nginx
Nginx的安装包,从官方下载下来的是c语言的源码包,我们需要自己编译安装。具体操作步骤如下:
1). 安装Nginx运行时需要的依赖
yum install -y pcre pcre-devel zlib zlib-devel openssl openssl-devel
安装C语言的编译环境.
yum install gcc-c++
2). 上传Nginx的源码包(指路:nginx: download)
3). 解压源码包到当前目录
tar -zxvf nginx-1.20.2.tar.gz
4). 进入到解压目录后,执行指令
#进入解压目录
cd nginx-1.20.2#执行命令配置, 生成Makefile文件
./configure --prefix=/usr/local/nginx
5). 执行命令进行编译和安装
#编译
make#编译安装
make install
启动Nginx
进入到nginx安装目录/usr/local/nginx,启动nginx服务
cd /usr/local/nginx/
sbin/nginx
启动完毕之后,我们可以通过 ps 指令查询当前系统中的nginx进程,从而确认nginx是否启动 。

然后,我们就可以打开浏览器,访问服务器上的nginx 。

后端项目部署
之前我们讲解Linux操作系统时,就提到,我们服务端开发工程师学习Linux系统的目的就是将来我们开发的项目绝大部分情况下都需要部署在Linux系统中。
环境准备
那现在,项目要上线了,要部署到linux服务器上了,我们也需要使用linux服务器上所安装的mysql数据库。
那此时,我们就可以再准备一份文件 application.yml 将里面的配置的mysql的ip、redis的ip地址及相关配置信息修改一下(配置Linux上安装的MySQL、Redis的信息):
#配置数据库连接信息
spring:datasource:driver-class-name: com.mysql.cj.jdbc.Driverurl: jdbc:mysql://192.168.100.128:3306/tliasusername: rootpassword: 1234servlet:multipart:max-file-size: 10MB #单个文件最大大小限制10MBmax-request-size: 100MB #单个请求最大大小限制100MBredis:host: 192.168.100.128port: 6379database: 0password: 159357timeout: 10s # 连接超时时间lettuce:pool:# 连接池中的最小空闲连接min-idle: 0# 连接池中的最大空闲连接max-idle: 8# 连接池的最大数据库连接数max-active: 8# #连接池最大阻塞等待时间(使用负值表示没有限制)max-wait: -1ms
改造完毕之后,可以在本地的idea中先启动当前项目,然后访问一下,看看工程是否正常访问。
打包部署
1). 执行 package 指令,进行打包操作,将当前的springboot项目,打成一个jar包。 (跳过测试)

2). 在Linux服务器上创建一个目录,将jar包上传到服务器 。
mkdir -p /usr/local/app

3). 通过java命令,启动项目
#进入目录/usr/local/app
cd /usr/local/app#运行jar包
java -jar tlias-web-management-0.0.1-SNAPSHOT.jar

项目启动起来之后,就可以打开浏览器测试啦**(使用服务器的ip访问)**。
后台运行
1). 后台运行程序
nohup java -jar tlias-web-management-0.0.1-SNAPSHOT.jar &> tlias.log &
通过上述指令就可以后台运行服务,服务运行之后, 所有的日志信息都会输出到 tlias.log 文件中。

2). 停止服务
#查看服务的进程信息
ps -ef|grep tlias#杀掉进程
kill -9 xxxxx

目前程序运行的问题
- 线上程序不会采用控制台霸屏的形式运行程序,而是将程序在后台运行
- 线上程序不会将日志输出到控制台,而是输出到日志文件,方便运维查阅信息
nohup命令:英文全称no hang up(不挂起),用于不挂断地运行指定命令,退出终端不会影响程序的运行。
语法格式:
nohup Command[Arg...][&]参数说明:
- Command:要执行的命令
- Arg:一些参数,可以指定输出文件
- &:让命令在后台运行
举例:
nohup java -jar hello-0.0.1-SNAPSHOT.jar &> xzy.log &后台运行java-jar命令,并将日志输出到xzy.log文件
想要停掉项目,先查询项目占用的端口号:
ps -ef | grep java。然后杀掉这个进制即可:kill -9 xxxx
前端项目部署
1). 将nginx的安装目录的html中的静态资源文件先删除掉。

2).将打包好的dist静态资源文件,全部上传到nginx安装目录下的 html 目录中.

3). 修改资料中提供的 nginx.conf 配置文件,将其上传到nginx安装目录下的 conf 目录中.

4). 重新加载nginx服务的配置文件
#重新加载配置文件
sbin/nginx -s reload
5). 再次访问nginx (可能会存在浏览器缓存, 可以按Ctrl+F5,强制刷新清理缓存)
nginx服务常见操作指令:
- 启动: sbin/nginx
- 重载: sbin/nginx -s reload
- 停止: sbin/nginx -s stop
部署项目 Docker
外链图片转存中…(img-kfuwrdbH-1741622394419)]
4). 重新加载nginx服务的配置文件
#重新加载配置文件
sbin/nginx -s reload
5). 再次访问nginx (可能会存在浏览器缓存, 可以按Ctrl+F5,强制刷新清理缓存)
nginx服务常见操作指令:
- 启动: sbin/nginx
- 重载: sbin/nginx -s reload
- 停止: sbin/nginx -s stop
部署项目 Docker
todo
相关文章:
部署前后端项目
部署项目 liunx 软件安装 软件安装方式 在Linux系统中,安装软件的方式主要有四种,这四种安装方式的特点如下: 建议nginx、MySQL、Redis等等使用docker安装,会很便捷,这里只演示JDK、ngxin手动的安装 安装JDK 上述我…...
从零构建逻辑回归: sklearn 与自定义实现对比
文章目录 理论基础1. 逻辑回归模型2. 损失函数3. 梯度推导(1) 计算 ∂ L ∂ y ^ \frac{\partial L}{\partial \hat{y}} ∂y^∂L(2) 计算 ∂ y ^ ∂ z \frac{\partial \hat{y}}{\partial z} ∂z∂y^(3) 计算 ∂ L ∂ z \frac{\partial L}{\partial z} ∂z∂L(4) 计…...
1256:献给阿尔吉侬的花束--BFS多组输入--memset
1256:献给阿尔吉侬的花束--BFS多组输入--memset 题目 解析代码【结构体】用book标记且计步数的代码[非结构体法] 题目 解析 标准的BFS题目,在多组输入中要做的就是先找到这一组的起点和终点,然后将其传给bfs,在多组输入中最易忘记…...
【JavaEE】SpringBoot快速上手,探秘 Spring Boot,搭建 Java 项目的智慧脚手架
1.Spring Boot介绍 在学习SpringBoot之前, 我们先来认识⼀下Spring ,我们看下Spring官⽅的介绍 可以看到,Spring让Java程序更加快速, 简单和安全。 Spring对于速度、简单性和⽣产⼒的关注使其成为世界上最流⾏的Java框架。 Spring官⽅提供了很多开源的…...
【C】初阶数据结构9 -- 直接插入排序
前面我们学习了数据结构二叉树,接下来我们将开启一个新的章节,那就是在日常生活中经常会用到的排序算法。 所谓排序算法就是给你一堆数据,让你从小到大(或从大到小)的将这些数据排成一个有序的序列(这些数据…...
Lottie与LottieFiles:快速为前端Web开发注入精美动画的利器
目录 Lottie与LottieFiles:快速为前端Web开发注入精美动画的利器 一、Lottie是什么?从GIF到JSON的动画技术演进 1、传统动画臃肿的Gif 2、Lottie的突破性创新 二、Lottie的核心组件解析(Lottie的技术架构) 1、Lottie核心三要…...
Spring boot创建时常用的依赖
新建SpringBoot Maven项目中pom常用依赖配置及常用的依赖的介绍 1.springboot项目的总(父)依赖大全 <parent><artifactId>spring-boot-dependencies</artifactId><groupId>org.springframework.boot</groupId><version>2.3.3.RELEASE<…...
音乐API
https://neteasecloudmusicapi.vercel.app/docs/#/https://neteasecloudmusicapi.vercel.app/docs/#/ 使用实例 所有榜单内容摘要 说明 : 调用此接口,可获取所有榜单内容摘要 接口地址 : /toplist/detail 调用例子 : /toplist/detail 获取歌单所有歌曲 说明 : 由于网易云…...
UML(统一建模语言)详解:从理论到实践
1. UML概述 1.1 定义与历史背景 统一建模语言(Unified Modeling Language, UML) 是一种标准化的可视化建模语言,用于描述、设计、构造和文档化软件系统。它诞生于1994-1997年,由Grady Booch、James Rumbaugh和Ivar Jacobson&…...
C语言练习题--洛谷P5143攀爬者
题目背景 HKE 考完 GDOI 之后跟他的神犇小伙伴们一起去爬山。 题目描述 他在地形图上标记了 N 个点,每个点 Pi 都有一个坐标 (xi,yi,zi)。所有点对中,高度值 z 不会相等。HKE 准备从最低的点爬到最高的点,他的攀爬满足以下条件&am…...
MySQL常见字段值处理
一、数据拼接 1、CONCAT CONCAT(string1, string2, ..., stringN),将两个或多个字符串连接在一起 自动忽略 NULL 值参数,仅拼接非 NULL 的字符串。 第一个参数必须是分隔符(字符串)。 SELECT CONCAT(Hello, , World); -- 输…...
OpenCV实现图像分割与无缝合并
一、图像分割核心方法 1、阈值分割 #include <opencv2/opencv.hpp> using namespace cv; int main() {Mat img imread("input.jpg", IMREAD_GRAYSCALE);Mat binary;threshold(img, binary, 127, 255, THRESH_BINARY); // 固定阈值分割imwrite("binary.…...
百度之星2023——公园
这道题目用bfs做反而麻烦了。 首先抓题目关键字,要求“最少”,那大概率就是最短路径问题。虽然这题是一个无权图,用bfs也能求最短路径,但是我们知道使用dijkstra是能够利用dist数组持久化最短路径的,相比每次都要bfs&…...
从零搭建微服务项目Pro(第3-1章——本地/OSS图片文件存取)
前言: 在小型demo项目中,一般将图片音频等字节流文件存放本地数据库,但企业级项目中,由于数据量容量有限,需要借助OSS来管理大规模文件。 OSS(对象存储服务,Object Storage Service࿰…...
游戏引擎学习第147天
仓库:https://gitee.com/mrxiao_com/2d_game_3 上一集回顾 具体来说,我们通过隐式计算来解决问题,而不是像数字微分分析器那样逐步增加数据。我们已经涵盖了这个部分,并计划继续处理音量问题。不过,实际上我们现在不需要继续处理…...
Spring boot启动原理及相关组件
优质博文:IT-BLOG-CN 一、Spring Boot应用启动 一个Spring Boot应用的启动通常如下: SpringBootApplication Slf4j public class ApplicationMain {public static void main(String[] args) {ConfigurableApplicationContext ctx SpringApplication.…...
【Linux】信号处理以及补充知识
目录 一、信号被处理的时机: 1、理解: 2、内核态与用户态: 1、概念: 2、重谈地址空间: 3、处理时机: 补充知识: 1、sigaction: 2、函数重入: 3、volatile&…...
微服务——网关、网关登录校验、OpenFeign传递共享信息、Nacos共享配置以及热更新、动态路由
之前学习了Nacos,用于发现并注册、管理项目里所有的微服务,而OpenFeign简化微服务之间的通信,而为了使得前端可以使用微服务项目里的每一个微服务的接口,就应该将所有微服务的接口管理起来方便前端调用,所以有了网关。…...
【leetcode hot 100 19】删除链表的第N个节点
解法一:将ListNode放入ArrayList中,要删除的元素为num list.size()-n。如果num 0则将头节点删除;否则利用num-1个元素的next删除第num个元素。 /*** Definition for singly-linked list.* public class ListNode {* int val;* Lis…...
comctl32!ListView_OnSetItem函数分析LISTSUBITEM结构中的image表示图标位置
第一部分: BOOL ListView_SetSubItem(LV* plv, const LV_ITEM* plvi) { LISTSUBITEM lsi; BOOL fChanged FALSE; int i; int idpa; HDPA hdpa; if (plvi->mask & ~(LVIF_DI_SETITEM | LVIF_TEXT | LVIF_IMAGE | LVIF_STATE)) { …...
数据结构——多项式问题(顺序存储结构or链式存储结构)
补充:malloc函数: malloc 函数是 C 语言标准库中的一个重要函数,位于 <stdlib.h> 头文件中,主要用于在程序运行时动态分配内存。以下将详细介绍其用法。 前面的返回值指针可以自己定义,如 (int*&am…...
【学习方法】技术开发者的提问智慧:如何高效获得解答?
技术开发者的提问智慧:如何高效获得解答? 在技术开发过程中,每个人都会遇到无法解决的问题。此时,我们通常会向团队、社区或论坛求助。然而,为什么有些人的问题能迅速得到解答,而有些人的问题却石沉大海&a…...
记录小白使用 Cursor 开发第一个微信小程序(一):注册账号及下载工具(250308)
文章目录 记录小白使用 Cursor 开发第一个微信小程序(一):注册账号及下载工具(250308)一、微信小程序注册摘要1.1 注册流程要点 二、小程序发布流程三、下载工具 记录小白使用 Cursor 开发第一个微信小程序(…...
vue2项目修改浏览器显示的网页图标
1.准备一个新的图标文件,通常是. ico格式,也可以是. Png、. Svg等格式 2.将新的图标文件(例如:faviconAt.png)放入项目的public文件夹中。如下图 public文件夹中的所有文件都会在构建时原样复制到最终的输出目录(通常是dist) 3. 修改vue项目…...
spring boot3.4.3+MybatisPlus3.5.5+swagger-ui2.7.0
使用 MyBatis-Plus 操作 books 表。我们将实现以下功能: 创建实体类 Book。 创建 Mapper 接口 BookMapper。 创建 Service 层 BookService 和 BookServiceImpl。 创建 Controller 层 BookController。 配置 MyBatis-Plus 和数据库连接。 1. 项目结构 src ├─…...
【网络安全工程】任务10:三层交换机配置
CSDN 原创主页:不羁https://blog.csdn.net/2303_76492156?typeblog三层交换机是指在OSI(开放系统互连)模型中的第三层网络层提供路由功能的交换机。它不仅具备二层交换机的交换功能,还能实现路由功能,提供更为灵活的网…...
侯捷 C++ 课程学习笔记:C++内存管理机制
内存管理从平地到万丈高楼 内存管理入门(Memory Management 101) 需要具有动态分配并使用memory(存储(器),(计算机的)内存),使用过C标准库的容器࿰…...
JVM常用概念之本地内存跟踪
问题 Java应用启动或者运行过程中报“内存不足!”,我们该怎么办? 基础知识 对于一个在本地机器运行的JVM应用而言,需要足够的内存来存储机器代码、堆元数据、类元数据、内存分析等数据结构,来保证JVM应用的成功启动以及未来平…...
【鸿蒙开发】Hi3861学习笔记- 软件定时器示例
00. 目录 文章目录 00. 目录01. 定时器概述02. 定时器API03. 定时器常用API3.1 osTimerNew3.2 osTimerDelete3.3 osTimerStart3.4 osTimerStop 04. 程序示例05. 附录 01. 定时器概述 软件定时器,是基于系统Tick时钟中断且由软件来模拟的定时器,当经过设…...
在Html5中仿Matlab自定义色带生成实践
目录 前言 一、RGB的相关知识 1、RGB的基本原理 2、RGB的数值表示 3、应用场景 二、ColorMap生成实战 1、外部库介绍 2、相关API 3、实例生成 三、总结 前言 在现代网页开发与数据可视化领域,色彩的表现力对于信息传达和视觉体验起着至关重要的作用。色带&…...
