一、准备工作

  1. 服务器环境要求
    银河麒麟 V10 操作系统
    开放端口:MinIO (9000、9001)、 Redis (6379)、应用服务 jar包(18888)、前端服务(8080)
    系统用户:具有 sudo 权限的用户
    操作:需要先有必备的工具前端的vsCode,webStrom、后台的idea,以及操作服务器的工具,我这边使用的是xftp和文件上传,把打包好的程序通过文件传输工具,放置到服务器中
    在这里插入图片描述
  2. 创建数据存储目录
sudo mkdir -p /opt/data/minio minio  #数据存储地址
sudo mkdir -p /opt/data/redis  #redis日志地址
sudo mkdir -p /opt/javaApp #jar包地址
sudo mkdir -p /opt/frontApp #前端打包地址
sudo chmod -R 777 /data  # 简化权限,生产环境应根据实际需求设置
sudo chmod -R 755 /opt/frontApp

二、 jar包 部署

  1. 安装 OpenJDK 11
# 麒麟系统通常使用 yum 包管理器
sudo yum install -y java-11-openjdk-devel# 验证安装
java -version#设置默认 Java 版本
sudo alternatives --config java
  1. 创建 Systemd 服务
    sudo vim /etc/systemd/system/cloudImage.service
[Unit]
Description=Cloud Image System Backend
After=network.target[Service]
# 使用专用用户
User=appuser
Group=appuser# 使用正确的JAR文件名
WorkingDirectory=/opt/javaApp
ExecStart=/usr/bin/java -jar cloudImages-system-3.5.4.jarSuccessExitStatus=143
Restart=always
RestartSec=30
Environment="SERVER_PORT=18888"# 添加内存限制(可选)
# Environment="JAVA_OPTS=-Xms512m -Xmx1024m"[Install]
WantedBy=multi-user.target
  1. 启动服务操作命令
 1.重新加载 sudo systemctl daemon-reload 2.启动服务 sudo systemctl start cloudImage3.启用服务 sudo systemctl enable cloudImage4.停止服务:sudo systemctl stop cloudImage5.重启服务:sudo systemctl restart cloudImage6.查看状态:sudo systemctl status cloudImage
  1. 权限不足问题处理
    Main PID: 97050 (code=exited, status=217/USER)
    1.创建专用系统用户(推荐):sudo useradd -r -s /bin/false appuser
    2.修改文件权限:sudo chown -R appuser:appuser /opt/app/backend
    3.修正服务配置文件: sudo vim /etc/systemd/system/cloudImage.service
    4.重新加载并启动服务:

查找占用18888端口的进程
sudo lsof -i :18888

停止冲突进程
sudo kill -9

三、Nginx 部署

  1. 安装 Nginx:sudo yum install -y nginx
  2. 创建前端目录 sudo mkdir -p /opt/frontApp # 上传 Hbuilder 打包文件到此目录
  3. 创建专用配置文件 sudo vim /etc/nginx/conf.d/cloud-frontend.conf #多个前端项目新增不同的配置文件即可,修改指向地址
# 前端主服务配置
server {listen 8080;server_name localhost;# 前端文件根目录root /opt/frontApp/web;# 默认文件设置index index.html;# 静态资源缓存设置location ~* \.(js|css|png|jpg|jpeg|gif|ico|svg|woff2)$ {expires 365d;add_header Cache-Control "public, immutable";try_files $uri =404;}# 前端路由处理 (Vue/React 等 SPA 应用需要)location / {try_files $uri $uri/ /index.html;}# 后端 API 代理location /api {proxy_pass http://localhost:18888;proxy_set_header Host $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 300s;proxy_send_timeout 300s;proxy_read_timeout 300s;}# 直接代理后端页面 (如登录页)location ~ ^/(login|register) {proxy_pass http://localhost:18888;proxy_set_header Host $host;}# 禁止访问敏感文件location ~ /\.(?!well-known) {deny all;}# 自定义错误页面error_page 404 /404.html;location = /404.html {internal;}error_page 500 502 503 504 /50x.html;location = /50x.html {internal;}
}
# 可选:HTTP 重定向到 HTTPS (如果有域名证书)
server {listen 80;server_name your-domain.com;return 301 https://$host$request_uri;
}
  1. 设置目录权限
# 创建前端用户组
sudo groupadd frontend
sudo useradd -r -s /bin/false -g frontend frontuser# 设置目录所有权
sudo chown -R frontuser:frontend /opt/frontApp
sudo chmod -R 755 /opt/frontApp# 允许 Nginx 访问前端目录
sudo semanage fcontext -a -t httpd_sys_content_t "/opt/frontApp(/.*)?"
sudo restorecon -Rv /opt/frontApp# 允许 Nginx 网络连接
sudo setsebool -P httpd_can_network_connect 1
  1. 测试并重载配置
# 测试配置语法
sudo nginx -t# 重载配置 (不中断服务)
sudo systemctl reload nginx检查 Nginx 服务状态
sudo systemctl status nginx# 完整重启
sudo systemctl restart nginx#设置开机自启
sudo systemctl enable nginx

检查前端文件是否存在
ls -l /opt/frontApp/web/
监听端口
sudo netstat -tuln | grep 8080

  1. 防火墙设置
    开放 8080 端口
    sudo firewall-cmd --permanent --add-port=8080/tcp
    sudo firewall-cmd --reload
    验证端口已开放
    sudo firewall-cmd --list-ports | grep 8080

四、部署redis

  1. 安装 Redis
    sudo yum install epel-release
    sudo yum install redis
  2. 配置 Redis
    编辑 sudo vim /etc/redis.conf:
    1.按下“i” 进入编辑
    2.按下 esc 退出编辑 输入 :wq 保存并退出。
    3.搜索特定内容 按下 / 键,然后输入你想要搜索的内容 例如:/bind
    按下 Enter 键后,编辑器会跳转到第一个匹配项
    如果需要查找下一个匹配项,可以按 n 键。
# 绑定所有网络接口
bind 0.0.0.0# 设置密码
requirepass 123456# 选择数据库
databases 14# 持久化设置
save 900 1
save 300 10
save 60 10000# 日志文件
logfile "/var/log/redis/redis.log"# 端口设置
port 6379
# 保护模式关闭
protected-mode no# 数据目录
dir /opt/data/redis
  1. 创建日志目录并设置权限 (前面创建的可以不用创建,也可以使用xftp连接,手动创建文件夹)
sudo mkdir -p /opt/data/log/redis
sudo chown redis:redis /opt/data/log/redis
sudo chmod 755 /opt/data/log/redis
  1. 启动 Redis 服务
sudo systemctl enable redis
sudo systemctl start redis
  1. 防火墙设置
    sudo firewall-cmd --permanent --add-port=6379/tcp # Redis
    sudo firewall-cmd --reload
    验证端口开放
    sudo firewall-cmd --list-ports

  2. 问题处理

Caused by: org.springframework.data.redis.RedisConnectionFailureException: 
Unable to connect to Redis; nested exception is io.lettuce.core.RedisConnectionException: 
Unable to connect to localhost:6379Caused by: java.net.ConnectException: 拒绝连接

这表明:Redis 服务器未运行、Redis 未监听 6379 端口、防火墙阻止了访问、Redis 配置错误、网络连接问题
① 检查 Redis 服务状态

# 检查 Redis 是否运行
sudo systemctl status redis# 如果没有运行,启动服务
sudo systemctl start redis# 设置开机自启
sudo systemctl enable redis# 重启 Redis 服务
sudo systemctl restart redis

② 检查配置
sudo vi /etc/redis.conf

# 监听所有网络接口
bind 0.0.0.0# 保护模式关闭
protected-mode no# 端口设置
port 6379# 如果需要密码,设置密码
requirepass yourstrongpassword

③ 检查 Redis 监听端口

# 检查 6379 端口是否被监听
sudo netstat -tuln | grep 6379# 应该看到类似输出:
# tcp  0  0 0.0.0.0:6379  0.0.0.0:*  LISTEN

五、部署Minio

  1. 下载并安装 MinIO,载正确的 ARM64 版本
    确定系统架构 uname -m
    在这里插入图片描述
    如果输出 aarch64 或 arm64,说明是 ARM 架构
    如果输出 x86_64,说明是 AMD64 架构
  2. 下载正确的 mc 版本(ARM64)
    需要删除,才进行删除,第一次配置可以不需要
    具体操作流程
# 删除旧版本
sudo rm -f /usr/local/bin/minio
sudo rm -f /usr/local/bin/mc# 下载 ARM64 版本
wget https://dl.min.io/client/mc/release/linux-arm64/mc
sudo wget https://dl.min.io/server/minio/release/linux-arm64/minio -O /usr/local/bin/minio# 或者下载 AMD64 版本,根据架构来定
wget https://dl.min.io/client/mc/release/linux-amd64/mc
# sudo wget https://dl.min.io/server/minio/release/linux-amd64/minio -O /usr/local/bin/minio# 创建数据目录(创建了就不用再创建了)
sudo mkdir -p /opt/data/minio
sudo chmod -R 777 /opt/data/minio# 设置执行权限
sudo chmod +x /usr/local/bin/minio
# 设置执行权限
chmod +x mc# 安装到系统路径
sudo mv mc /usr/local/bin/# 验证安装
mc --version
  1. 验证 MinIO 文件
# 检查文件类型
file /usr/local/bin/minio# 检查文件权限
ls -l /usr/local/bin/minio
  1. 创建 MinIO 服务文件
[Unit]
Description=MinIO
Documentation=https://docs.min.io
Wants=network-online.target
After=network-online.target
AssertFileIsExecutable=/usr/local/bin/minio[Service]
User=root
Group=root
EnvironmentFile=-/etc/default/minio
ExecStartPre=/bin/bash -c "if [ -z \"${MINIO_VOLUMES}\" ]; then echo \"Variable MINIO_VOLUMES not set in /etc/default/minio\"; exit 1; fi"ExecStart=/usr/local/bin/minio server $MINIO_OPTS $MINIO_VOLUMESRestart=always
LimitNOFILE=65536
TimeoutStopSec=infinity
SendSIGKILL=no[Install]
WantedBy=multi-user.target
  1. 创建 MinIO 环境配置文件
# MinIO access key and secret key
MINIO_ACCESS_KEY="minioadmin"
MINIO_SECRET_KEY="minioadmin"# MinIO storage path
MINIO_VOLUMES="/opt/data/minio"# MinIO server address
MINIO_OPTS="--address :9000 --console-address :9001"# MinIO region
MINIO_REGION="us-east-1"
  1. 启动 MinIO 服务
sudo systemctl daemon-reload
sudo systemctl enable minio
sudo systemctl start minio
# 检查服务状态
sudo systemctl status minio# 停止服务
sudo systemctl stop minio# 重启服务
sudo systemctl restart minio# 检查端口监听
netstat -tuln | grep 9000# 使用 curl 测试
curl http://localhost:9000
  1. 创建存储桶
# 安装 MinIO 客户端,上面已经下载好了
chmod +x mc
sudo mv mc /usr/local/bin/# 使用 mc 客户端,配置客户端
mc alias set local http://localhost:9000 minioadmin minioadmin# 创建存储桶,也可以根据ip地址登录页面进行手动创建
mc mb local/yyx-dev
  1. 防火墙配置
sudo firewall-cmd --permanent --add-port=9000/tcp  # MinIO
sudo firewall-cmd --permanent --add-port=9001/tcp  # MinIO Console
sudo firewall-cmd --reload
# 验证端口开放
sudo firewall-cmd --list-ports
  1. 常见错误解决方案

确保数据目录存在
sudo mkdir -p /data/minio
设置正确权限
sudo chmod -R 777 /data/minio # 测试环境简化权限
生产环境建议:sudo chown -R minio-user:minio-user /data/minio

错误 1:No such file or directory
安装依赖库: sudo yum install libatomic -y

错误 2:Permission denied
设置 SELinux 宽容模式: sudo setenforce 0
或添加 SELinux 策略
sudo semanage fcontext -a -t bin_t /usr/local/bin/minio
sudo restorecon -v /usr/local/bin/minio

错误 3:端口冲突

# 检查端口占用
sudo lsof -i :9000# 修改端口配置
sudo sed -i 's/:9000/:19000/g' /etc/default/minio
sudo sed -i 's/:9001/:19001/g' /etc/default/minio
sudo systemctl restart minio

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

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

相关文章

贪心算法:简单而高效的求解策略C++

贪心算法详解及C实现 1. 什么是贪心算法 贪心算法(Greedy Algorithm)是一种在每一步选择中都采取在当前状态下最好或最优(即最有利)的选择,从而希望导致结果是全局最好或最优的算法策略。 贪心算法与动态规划不同在于它…

IDEA 中使用 <jsp:useBean>动作指令时,class属性引用无效

问题&#xff1a;在 IDEA 中创建 Java Web项目&#xff0c;在src/model包下存在一个Student类该类中包含&#xff1a;全参构造器、私有属性的get/set方法。然后在 jsp 页面中使用 <jsp:useBean>创建Student类的对象&#xff1a;访问页面时报错&#xff1a;原因&#xff1…

【网络】Linux 内核优化实战 - net.core.flow_limit_table_len

目录参数作用查看与修改调优建议相关警告net.core.flow_limit_table_len 是 Linux 内核中的一个网络参数&#xff0c;用于控制**流限制表&#xff08;Flow Limit Table&#xff09;**的大小。这个表主要用于限制网络流量中单个"流"&#xff08;通常指来自同一源IP、端…

前端开发常见问题技术文章大纲

前端开发常见问题技术文章大纲 常见性能优化问题 页面加载速度慢的原因及解决方案渲染阻塞资源的优化方法内存泄漏的检测与修复 跨浏览器兼容性问题 不同浏览器对CSS和JavaScript的支持差异Polyfill和Shim的使用场景如何利用工具检测兼容性问题 响应式设计挑战 媒体查询的最佳实…

Redis常见性能问题和解决方案有哪些?

Redis 作为高性能的内存数据库&#xff0c;在实际使用中可能会遇到性能问题。以下是常见的性能问题及其解决方案&#xff0c;用中文总结如下&#xff1a; 1. 高延迟问题 问题描述&#xff1a;客户端请求响应时间过长&#xff0c;可能由于网络、命令复杂度或服务器负载导致。 解…

闪测仪应用案例丨手机中框如何突破「尺寸检测」瓶颈?

越来越多的手机中框&#xff0c;正改为更复杂的镂空设计&#xff0c;这种设计不仅保持了手机中框的结构强度&#xff0c;还进一步减轻了机身重量&#xff0c;同时提升了散热性能。这让手机中框的自动化生产增加了很多难点&#xff0c;其中的尺寸检测就遇到了许多瓶颈。▪ 尺寸精…

【字节跳动】数据挖掘面试题0011:介绍下时间序列分析常用知识点

文章大纲时间序列分析全面解析一、时间序列分析的基本概念二、时间序列分析的主要方法1. 描述性分析2.统计分析方法3.预测模型&#xff08;1&#xff09;传统统计模型&#xff08;2&#xff09;现代机器学习模型三、时间序列分析的应用场景四、模型评估五、在字节跳动的应用场景…

ubuntu中交叉编译iperf3到目标平台xilinx

注&#xff1a;此文为ubuntu x86系统编译程序到xilinx aarch64系统中。 一、工具准备 x86上编译aarch64的编译器 sudo apt install gcc-aarch64-linux-gnu g-aarch64-linux-gnu #保证编译器在环境变量中&#xff0c;尝试执行aarch64-linux-gnu-gcc 目标平台的根文件系统rootf…

Java-数据结构-集合框架

什么是集合框架集合本质是java所实现的一组数据结构&#xff0c;提供了不同的增删改查方法。集合就是定义了接口&#xff0c;再通过不同的类去实现定义的接口&#xff0c;这些实现了接口的类就是集合类&#xff0c;例如list&#xff0c;stack&#xff0c;map。集合框架的重要性…

黑马点评系列问题之基础篇16jedis redis依赖引入后仍然还是报错

问题描述依赖已经导入进去了&#xff0c;在仓库里有***.jar和***.pom这两个文件&#xff0c;但是点开右面的maven还是有很多爆红。点击maven里的更新还是不行。解决点到配置文件pom.xml在lombok这个依赖的代码下面&#xff0c;添加上版本号&#xff0c;刷新一下右键单击pom.xml…

SQL 一键转 GORM 模型,支持字段注释、类型映射、tag 自定义!

SQL 一键转 GORM 模型&#xff0c;支持字段注释、类型映射、tag 自定义&#xff01; 在使用 Golang GORM 开发项目时&#xff0c;你是否也经历过这些「重复性痛苦」&#xff1a; ✅ 拿到建表 SQL&#xff0c;要手动写 struct✅ 字段多、类型复杂&#xff0c;还要写 json、go…

前端计算机视觉:使用 OpenCV.js 在浏览器中实现图像处理

一、OpenCV.js 简介与环境搭建OpenCV&#xff08;Open Source Computer Vision Library&#xff09;是一个强大的计算机视觉库&#xff0c;广泛应用于图像和视频处理领域。传统上&#xff0c;OpenCV 主要在后端使用 Python 或 C 等语言。但随着 WebAssembly (Wasm) 技术的发展&…

开发在线商店:基于Vue2+ElementUI的电商平台前端实践

Hi&#xff0c;我是布兰妮甜 &#xff01;在当今数字化时代&#xff0c;电子商务已成为商业领域的重要组成部分。开发一个功能完善、用户友好的在线商店应用对于企业拓展市场至关重要。本文将详细介绍如何使用Vue2框架配合ElementUI组件库开发一个完整的在线商店应用。 文章目录…

vue3 随手笔记9--组件通信方式9/2--自定义事件

一、什么是自定义事件&#xff1f; 自定义事件是 Vue 组件间通信的一种机制。子组件通过 this.$emit(事件名, 数据) 触发一个事件。父组件监听这个事件并执行相应的逻辑。 二、基本使用 准备工作 demo 继续使用笔记8中的 链接为demo 在views文件夹下 创建新的文件夹为cust…

深入理解Reactor调试模式:Hooks.onOperatorDebug() vs ReactorDebugAgent.init()

在现代Java开发中&#xff0c;调试Reactor流是确保应用程序性能和稳定性的关键步骤。Reactor调试模式提供了多种初始化方法&#xff0c;其中最常用的两种是Hooks.onOperatorDebug()和ReactorDebugAgent.init()。本文将深入探讨这两种方法的区别&#xff0c;帮助开发者选择最适合…

QT6 源(151)模型视图架构里的表格窗体视图 QTableWidget 篇一:先学习俩属性以及 public 权限的公共成员函数,

&#xff08;1&#xff09;本篇的内容因为是子类&#xff0c;内容较视图基类简单了一些。又因为时间紧迫&#xff0c;不再详细举例了。详细的测试可以满足好奇心&#xff0c;也可以增强写代码的自信心。奈何时间不够。不完美&#xff0c;就不完美了。以后有机会&#xff0c;再补…

ffmpeg 下载、安装、配置、基本语法、避坑指南(覆盖 Windows、macOS、Linux 平台)

ffmpeg 下载、安装、配置、基本语法、避坑指南&#xff08;覆盖 Windows、macOS、Linux 平台&#xff09; 本文是一篇面向初学者的超详细 FFmpeg 教程&#xff0c;包括 FFmpeg 下载、安装、配置、基本语法 与 避坑指南。覆盖 Windows、macOS、Linux 平台的安装方式与 环境变量…

Kotlin 安装使用教程

一、Kotlin 简介 Kotlin 是 JetBrains 开发的一种现代、静态类型的编程语言&#xff0c;完全兼容 Java&#xff0c;主要应用于 Android 开发、后端服务开发、前端 Web 开发&#xff08;Kotlin/JS&#xff09;和多平台开发&#xff08;Kotlin Multiplatform&#xff09;。 二、…

day08-Elasticsearch

黑马商城作为一个电商项目&#xff0c;商品的搜索肯定是访问频率最高的页面之一。目前搜索功能是基于数据库的模糊搜索来实现的&#xff0c;存在很多问题。 首先&#xff0c;查询效率较低。 由于数据库模糊查询不走索引&#xff0c;在数据量较大的时候&#xff0c;查询性能很…

transformers 笔记:自定义模型(配置+模型+注册为AutoCLass+本地保存加载)

Transformers 模型设计上是可定制的。每个模型的代码都包含在 Transformers 仓库的 model 子文件夹中&#xff08;transformers/src/transformers/models at main huggingface/transformers&#xff09;&#xff0c;每个模型文件夹通常包含&#xff1a; modeling.py&#xff1…