Linux中部署项目
1.下载JDK17
进入 /usr/local 目录,创建 java 文件夹。并将 JDK17 上传到 java 目录下。
上传成功后,通过cd命令进入Java文件夹目录,解压 JDK17 压缩包,命令
unzip zulu17.44.53-ca-jdk17.0.8.1-linux_x64.zip。
如果报错说 unzip 命令不存在,安装该命令:yum install -y unzip zip。
解压后的目录:

为了简单,就不配置环境变量了,直接拿实际引用执行 Java 相关命令。
另外执行一条命令,修改文件名,让它看着没那么长:
mv zulu17.44.53-ca-jdk17.0.8.1-linux_x64 jdk17.0.8.1
2. Nginx 软件
1.更新系统软件包列表。
sudo yum update
2.安装 Nginx 命令。
sudo yum install nginx
安装Nginx出错:

- 错误信息显示无法解析主机
mirrorlist.centos.org,这通常是因为 CentOS 7 的官方仓库已经停止维护,导致无法访问。
解决方法
1. 更换 Yum 源
由于 CentOS 7 的官方仓库已经停止维护,需要更换为可用的镜像源。以下是具体步骤:
- 备份原有配置文件:
cd /etc/yum.repos.dcp CentOS-Base.repo CentOS-Base.repo.backup
- 编辑配置文件:
vi CentOS-Base.repo
- 修改内容:
将mirrorlist注释掉,并添加baseurl指向国内镜像源,例如阿里云镜像源:
[base]name=CentOS-$releasever - Base#mirrorlist=http://mirrorlist.centos.org/?release=$releasever&arch=$basearch&repo=os&infra=$infrabaseurl=http://mirrors.aliyun.com/centos/$releasever/os/$basearch/gpgcheck=1gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-CentOS-7[updates]name=CentOS-$releasever - Updates#mirrorlist=http://mirrorlist.centos.org/?release=$releasever&arch=$basearch&repo=updates&infra=$infrabaseurl=http://mirrors.aliyun.com/centos/$releasever/updates/$basearch/gpgcheck=1gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-CentOS-7[extras]name=CentOS-$releasever - Extras#mirrorlist=http://mirrorlist.centos.org/?release=$releasever&arch=$basearch&repo=extras&infra=$infrabaseurl=http://mirrors.aliyun.com/centos/$releasever/extras/$basearch/gpgcheck=1gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-CentOS-7
- 保存并退出编辑器:
:wq
- 清理并重建 Yum 缓存:
sudo yum clean allsudo yum makecache
2. 安装 EPEL 源
Nginx 不在 CentOS 的默认仓库中,需要安装 EPEL(Extra Packages for Enterprise Linux)源:
sudo yum install epel-release
3.安装 Nginx
安装 EPEL 源后,可以安装 Nginx:
sudo yum install nginx
4.Nginx 开机自启。
sudo systemctl start nginx
sudo systemctl enable nginx
3.项目打包上传
通过命令创建项目相关文件夹。
mkdir -p /home/shortlink/logs
Maven 执行 clean install 逻辑,将 SpringBoot 可执行 Jar 生成。shortlink-all 下执行 mvn clean install,可以通过命令行或者工具栏。

将 项目jar包上传到服务器 /home/shortlink 目录下。
4.前端上传
进入到前端项目目录下,执行 npm run build 命令。如果是 Windows 系统用户,记得去 CMD 命令行里执行。出现dist目录即代表成功。
将该 dist 目录上传到云服务器 /home/shortlink 目录下。上传前记得压缩下 dist 目录,上传方便些,上传成功后再解压。
执行解压缩命令:unzip dist.zip 完成压缩包解压。
5.安装中间件环境
以 Docker 形式指导如何安装所依赖的中间件。
1.安装 yum-utils
以 yum 安装为例子进行安装,安装 yum-utils,使用 yum-config-manager 工具设置 yum 源,后面两个是 devicemapper 驱动依赖
yum install -y yum-utils device-mapper-persistent-data lvm2
2.使用阿里源访问
yum-config-manager --add-repo http://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo
出现以下内容则表示成功。

3.安装docker
yum install docker-ce #(这样写默认安装最新版本)
yum install docker-ce-<VERSION_STRING> (指定安装版本)
例: yum install docker-ce-18.03.1.ce
安装成功提示信息如下:

4.启动并加入开机启动
systemctl start docker 启动
systemctl restart docker 重启
systemctl enable docker 开机启动
执行 docker version 查看 Docker 版本号。
5.验证是否安装成功
执行命令:docker run hello-world 测试是否安装成功。

若进行到这一步没有问题的话就说明 Docker 已经安装成功了 。
5.配置可用镜像
注意,现在 Docker 拉取镜像被限制了,我们需要额外执行以下逻辑:

(这个问题通常是由于网络连接问题导致的,特别是在国内网络环境下,访问国外的 Docker Hub 仓库可能会遇到速度慢或连接超时的情况。)
# 创建目录
sudo mkdir -p /etc/docker# 写入配置文件
sudo tee /etc/docker/daemon.json <<-'EOF'
{"registry-mirrors": ["https://docker.unsee.tech","https://dockerpull.org","https://docker.1panel.live","https://dockerhub.icu"]
}
EOF# 重启docker服务
sudo systemctl daemon-reload && sudo systemctl restart docker
6. 安装 MySQL
docker run --name mysql \
-p 3306:3306 \
-e MYSQL_ROOT_HOST='%' \
-e MYSQL_ROOT_PASSWORD=root \
-d mysql:5.7.36
-d:以后台的方式运行。--name mysql:指定容器的名称为 mysql。-e MYSQL_ROOT_HOST='%':允许 root 用户在任何主机访问。-p 3306:3306:将容器的 3306 端口挂载到宿主机的 3306 端口上。-e MYSQL_ROOT_PASSWORD=root:指定 root 的密码为 root。

通过 MySQL 客户端工具连接并导入数据库和数据。
7.安装 Redis
docker run \
-d -p 8848:8848 \
-p 9848:9848 \
--name nacos2 \
-e MODE=standalone \
-e TIME_ZONE='Asia/Shanghai' \
nacos/nacos-server:v2.1.2
docker run: 创建并启动一个新的容器。-p 6379:6379: 将容器的6379端口映射到宿主机的6379端口,以便外部可以访问Redis。--name redis: 为容器指定一个名称,这里是“redis”。-d: 后台运行容器。redis: 使用Redis镜像。redis-server --requirepass "123456": 在容器中执行redis-server命令,并设置Redis的访问密码为"123456"。
8.安装 Nacos
docker run \
-d -p 8848:8848 \
-p 9848:9848 \
--name nacos2 \
-e MODE=standalone \
-e TIME_ZONE='Asia/Shanghai' \
nacos/nacos-server:v2.1.2
-d: 后台运行容器。-p 8848:8848: 将容器的 8848 端口映射到宿主机的 8848 端口,这是 Nacos 的默认管理界面端口。-p 9848:9848: 将容器的 9848 端口映射到宿主机的 9848 端口,这是 Nacos 2.X 新增的端口,用于 gRPC 通信。--name nacos2: 为容器指定名称为nacos2。-e MODE=standalone: 设置 Nacos 运行为单机模式。-e TIME_ZONE='Asia/Shanghai': 设置容器的时区为亚洲/上海。nacos/nacos-server:v2.1.2: 使用 Nacos 2.1.2 版本的 Docker 镜像。

6.启动项目
1. 启动后端项目
进入 /home/shortlink 文件夹下,开始启动后端项目。
nohup /usr/local/java/jdk17.0.8.1/bin/java \
-Xms2048m -Xmx2048m \
-Dshort-link.domain.default=修改为服务器外网IP:8003 \
-jar /home/shortlink/shortlink-aggregation.jar > logs/shortlink-aggregation.file 2>&1 &
执行 tail -f logs/shortlink-aggregation.file 命令查看日志是否启动成功。
依次启动网关项目。
nohup /usr/local/java/jdk17.0.8.1/bin/java \
-Xms1024m -Xmx1024m \
-jar /home/shortlink/shortlink-gateway.jar > logs/shortlink-gateway.file 2>&1 &
执行 tail -f logs/shortlink-aggregation.file 命令查看日志是否启动成功。

2.Nginx 挂载前端项目
修改 Nginx 的配置,让前端可以访问。
sudo vim /etc/nginx/nginx.conf
将默认 Nginx http/server配置改为下述配置:
http {# 只要保证 server 里的配置在 nginx 的 http 配置下就好server {listen 80;server_name localhost;location / {root /home/shortlink/dist;index index.html index.htm;try_files $uri $uri/ /index.html;}location /api {proxy_read_timeout 10s;proxy_pass http://127.0.0.1:8000/api;}}
}
保存退出文件编辑状态,重载 Nginx 的配置。
sudo systemctl reload nginx
错误:
MIME类型不匹配:服务器返回的MIME类型为application/octet-stream,而浏览器期望的是text/css。
The stylesheet http://localhost/assets/index-1aa0ed73.css was not loaded because its MIME type, “application/octet-stream”, is not “text/css”.
解决:
nginx配置文件
cd /etc/nginx
include /etc/nginx/mime.types ;
default_type application/octet-stream;
types {text/css css;}
sudo systemctl reload nginx
友情提示:打包的项目中配置文件的中间件地址要换为虚拟机的地址。
相关文章:
Linux中部署项目
1.下载JDK17 进入 /usr/local 目录,创建 java 文件夹。并将 JDK17 上传到 java 目录下。 上传成功后,通过cd命令进入Java文件夹目录,解压 JDK17 压缩包,命令 unzip zulu17.44.53-ca-jdk17.0.8.1-linux_x64.zip。 如果报错说 u…...
在 CentOS 上安装 MySQL 8
在 CentOS 上安装 MySQL 8 您可以按照以下步骤操作: 1. 更新系统 首先,更新系统软件包以确保安装的最新版本。 sudo yum update -y 2. 安装 MySQL 8 安装 MySQL 存储库 wget https://dev.mysql.com/get/mysql80-community-release-el7-3.noarch.r…...
gradle项目下载依赖报错
报错信息 Cannot resolve external dependency org.projectlombok:lombok:1.18.36 because no repositories are defined. Required by:project :Possible solution:- Declare repository providing the artifact, see the documentation at https://docs.gradle.org/current/…...
solon 集成 activemq-client (sdk)
原始状态的 activemq-client sdk 集成非常方便,也更适合定制。就是有些同学,可能对原始接口会比较陌生,会希望有个具体的示例。 <dependency><groupId>org.apache.activemq</groupId><artifactId>activemq-client&l…...
LRU 缓存
LRU 缓存 请你设计并实现一个满足 LRU (最近最少使用) 缓存 约束的数据结构。 实现 LRUCache 类: LRUCache(int capacity) 以 正整数 作为容量 capacity 初始化 LRU 缓存int get(int key) 如果关键字 key 存在于缓存中,则返回关键字的值,否…...
使用ZLMediaKit 开源项目搭建RTSP 服务器
ZLMediaKit 是啥? ZLMediaKit是国人开发的开源C流媒体服务器,同SRS一样是主流的流媒体服务器。 ZLToolKit是基于C11的高性能服务器框架,和ZLMediaKit是同一个作者,ZLMediaKit正是使用该框架开发的。 官网 ZLMediaKit开源地址&…...
数组晨考2day08
1.用一句话描述数组 在内存中 一块连续的空间 存储相同类型的数据 长度是固定的 2.数组各个类型的默认值 整数:0 浮点:0.0 布尔:false 字符:\u0000 其他:null 3.Arrays类toString,copyOf,sort&a…...
《鸿蒙HarmonyOS应用开发从入门到精通(第2版)》简介
《鸿蒙HarmonyOS应用开发从入门到精通(第2版)》已于近日上市,该书由北京大学出版社出版。距离第1版上市已经过去二年半多。本文希望与读者朋友们分享下这本书里面的大致内容。 封面部分 首先是介绍封面部分。 《鸿蒙HarmonyOS应用开发从入门…...
麒麟操作系统服务架构保姆级教程(二)sersync、lsync备份和NFS持久化存储
如果你想拥有你从未拥有过的东西,那么你必须去做你从未做过的事情 上篇文章我们说到rsync虽好,但是缺乏实时性,在实际应用中,咱们可以将rsync写进脚本,然后写进定时任务去备份,如果每天凌晨1:00…...
将OBJ或GLB文件转换为3DTiles
格式简介 GLB文件(.GLB)代表“GL传输格式二进制文件”,是用于共享3D数据的标准化文件格式。确切地说,它可以包含有关三维模型、场景、模型、光源、材质、节点层次和动画的信息。 OBJ文件是一种文本文件格式,这就意味…...
Flink DataStream API 编程指南
(对于Flink的开发,建议使用Java,Scala的支持未来会被移除) DataStream是什么 DataStream API得名于DataStream这个Java类,可以将它们视为可以包含重复项的不可变数据集合。该数据可以是有限的,也可以是无限的,用于处理它们的API是相同的。 DataStream在用法上和普通的…...
tryhackme-Pre Security-HTTP in Detail(HTTP的详细内容)
任务一:What is HTTP(S)?(什么是http(s)) 1.What is HTTP? (HyperText Transfer Protocol)(什么是 HTTP?(超文本传输协议)) http是你查看网站的时候遵循的…...
探索 Plotly:一个强大的交互式数据可视化库
探索 Plotly:一个强大的交互式数据可视化库 数据可视化是数据分析过程中不可或缺的一部分,它能帮助我们更直观地理解数据,发现数据中的趋势和规律。在众多可视化库中,Plotly 是一个非常强大的工具,它以其交互式、易用…...
Oracle 查询表占用空间(表大小)的方法
目录 概述方法一:使用 dbms_space 包方法二:查询 dba_extents 视图方法三:查询 dba_segments 视图总结 1. 概述 在Oracle数据库管理中,了解特定表或索引所占用的空间对于性能调优、存储规划以及资源分配至关重要。本文档介绍了三…...
机器人国际会议IROS论文latex模板
机器人国际会议IROS论文latex模板 文档 root.tex 可以配置为 US Letter 纸或 A4。请注意以下重要行:\documentclass[letterpaper, 10 pt, Conference]{ieeeconf} % 如果需要 a4paper,请注释掉此行%\documentclass[a4paper, 10pt, Conference]{ieeeconf} …...
雪泥鸿爪和屈指可数
paw这个单词,表示“爪或手”,是一个和hoof相对的单词: hoof n.(马等动物的)蹄paw n.爪子;(动物的)爪;(人的)手 v.挠,抓;动手动脚 所以,当你理解了 paw 和 hoof 是相对的概念时&…...
2024年度个人总结
一转眼已经2024年度最后一个月了,今年基本没有在CSDN发布内容,包括其他平台(B站),倒是在其他地方(我的个人网站和V2EX)发布一些零碎的东西,主要是因为今年换了工作后太累了ÿ…...
ChatGPT接口测试用例生成的流程
通常,使用ChatGPT生成接口测试用例的流程可以分为以下关键步骤。 收集接口信息 收集接口的相关文档和信息,如接口名称、请求方法、请求参数、返回结果等。这些是ChatGPT生成测试用例需要的输入信息。 这一步骤的重要性不可忽视,因为它为Chat…...
【读书笔记】《论语别裁》真人和假人
一、内容摘要 在《论语别裁》第01章中,作者探讨了“真人”与“假人”的概念,借鉴于庄子的思想,强调真正有道德修养且懂得人生真谛的人被称为“真人”,而那些未达到道德最高标准的人则称为“假人。孔子所提倡的“学”不仅仅是书本…...
JS字符串方法汇总
String.anchor //创建一个带有名称的 <a> 元素字符串 //已弃用 let str test str.anchor(name) //<a name"name">test</a>String.at let str 1234567 str.at(0) //1 str.at(1) //2 str.at(-1) //7 str.at(-2) //6String.big //已弃用 let …...
Lombok 的 @Data 注解失效,未生成 getter/setter 方法引发的HTTP 406 错误
HTTP 状态码 406 (Not Acceptable) 和 500 (Internal Server Error) 是两类完全不同的错误,它们的含义、原因和解决方法都有显著区别。以下是详细对比: 1. HTTP 406 (Not Acceptable) 含义: 客户端请求的内容类型与服务器支持的内容类型不匹…...
Linux相关概念和易错知识点(42)(TCP的连接管理、可靠性、面临复杂网络的处理)
目录 1.TCP的连接管理机制(1)三次握手①握手过程②对握手过程的理解 (2)四次挥手(3)握手和挥手的触发(4)状态切换①挥手过程中状态的切换②握手过程中状态的切换 2.TCP的可靠性&…...
什么是EULA和DPA
文章目录 EULA(End User License Agreement)DPA(Data Protection Agreement)一、定义与背景二、核心内容三、法律效力与责任四、实际应用与意义 EULA(End User License Agreement) 定义: EULA即…...
NLP学习路线图(二十三):长短期记忆网络(LSTM)
在自然语言处理(NLP)领域,我们时刻面临着处理序列数据的核心挑战。无论是理解句子的结构、分析文本的情感,还是实现语言的翻译,都需要模型能够捕捉词语之间依时序产生的复杂依赖关系。传统的神经网络结构在处理这种序列依赖时显得力不从心,而循环神经网络(RNN) 曾被视为…...
华为云Flexus+DeepSeek征文|DeepSeek-V3/R1 商用服务开通全流程与本地部署搭建
华为云FlexusDeepSeek征文|DeepSeek-V3/R1 商用服务开通全流程与本地部署搭建 前言 如今大模型其性能出色,华为云 ModelArts Studio_MaaS大模型即服务平台华为云内置了大模型,能助力我们轻松驾驭 DeepSeek-V3/R1,本文中将分享如何…...
高防服务器能够抵御哪些网络攻击呢?
高防服务器作为一种有着高度防御能力的服务器,可以帮助网站应对分布式拒绝服务攻击,有效识别和清理一些恶意的网络流量,为用户提供安全且稳定的网络环境,那么,高防服务器一般都可以抵御哪些网络攻击呢?下面…...
【碎碎念】宝可梦 Mesh GO : 基于MESH网络的口袋妖怪 宝可梦GO游戏自组网系统
目录 游戏说明《宝可梦 Mesh GO》 —— 局域宝可梦探索Pokmon GO 类游戏核心理念应用场景Mesh 特性 宝可梦玩法融合设计游戏构想要素1. 地图探索(基于物理空间 广播范围)2. 野生宝可梦生成与广播3. 对战系统4. 道具与通信5. 延伸玩法 安全性设计 技术选…...
Linux C语言网络编程详细入门教程:如何一步步实现TCP服务端与客户端通信
文章目录 Linux C语言网络编程详细入门教程:如何一步步实现TCP服务端与客户端通信前言一、网络通信基础概念二、服务端与客户端的完整流程图解三、每一步的详细讲解和代码示例1. 创建Socket(服务端和客户端都要)2. 绑定本地地址和端口&#x…...
免费PDF转图片工具
免费PDF转图片工具 一款简单易用的PDF转图片工具,可以将PDF文件快速转换为高质量PNG图片。无需安装复杂的软件,也不需要在线上传文件,保护您的隐私。 工具截图 主要特点 🚀 快速转换:本地转换,无需等待上…...
Java求职者面试指南:计算机基础与源码原理深度解析
Java求职者面试指南:计算机基础与源码原理深度解析 第一轮提问:基础概念问题 1. 请解释什么是进程和线程的区别? 面试官:进程是程序的一次执行过程,是系统进行资源分配和调度的基本单位;而线程是进程中的…...
