当前位置: 首页 > article >正文

LINUX部署微服务项目步骤

项目简介技术栈

主体技术:SpringCloud,SpringBoot,VUE2,

中间件:RabbitMQ、Redis

创建用户

在linux服务器home下创建用户qshh,用于后续本项目需要的环境进行安装配置


#创建用户
useradd 用户名
#设置登录密码
passwd 用户名 密码

JDK安装及配置

JDK是Java程序运行的基础环境


#在qshh用户下进行操作,创建目录
mkdir -p /home/qshh/jdk/instance#切换目录
cd /home/qshh/jdk/instance#上传jdk-8u202-linux-x64.tar.gz#解压
tar -zxf jdk-8u351-linux-x64.tar.gz #得到jdk1.8.0_351目录#环境变量、回到用户根目录
vi .bash_profile #编辑文件 添加以下内容#jdk
PATH=/home/qshh/jdk/instance/jdk1.8.0_351/bin:$PATH#配置文件生效
source .bash_profile #验证
java -version
#显示
java version "1.8.0_351"
Java(TM) SE Runtime Environment (build 1.8.0_351-b08)
Java HotSpot(TM) 64-Bit Server VM (build 25.351-b08, mixed mode)

创建jar包目录,以及后台运行的命令


mkdir -p /home/qshh/instance///使运行jar包当前shell连接也能正常运行
nohup java -jar XXX.jar &//查看jar运行的线程等信息
ps aux|grep xxx.jar

Nginx安装及配置

下载Nginx所需要的依赖


//root用户
yum install epel-release -y
yum -y install unzip zip zlib zlib-devel openssl openssl-devel pcre pcre-devel gcc gcc-c++ autoconf automake make psmisc net-tools lsof vim  wget -y

创建nginx安装目录并编译安装


#qshh用户
mkdir -p /home/qshh/nginx/make#进入该目录,并且把nginx安装包上传到该目录下
cd /home/qshh/nginx/make#解压得到nginx-1.18.0目录
tar -zxf nginx-1.18.0-src.tar.gz#编译配置
cd nginx-1.18.0
./configure --prefix=/home/qshh/nginx/instance/nginx-1.18.0 --with-stream --with-http_ssl_module --with-http_realip_module#编译并安装
make && make install

配置qshh用户下的nginx环境


#qshh用户根目录
vi .bash_profile#添加以下配置
#nginx
PATH=/home/qshh/nginx/instance/nginx-1.18.0/sbin:$PATH#配置立即生效
source .bash_profile#验证是否安装好
nginx -v

nginx的启动相关命令


#查看nginx运行情况
ps -ef | grep nginx#启动nginx,进入nginx的安装目录下的sbin执行
./nginx#获取nginx执行的进程号
ps -C nginx -o pid#sbin重启,即读取配置文件
./nginx -s reload

Nacos安装及配置

nacos安装


#创建目录
mkdir -p /home/qshh/nacos/instance#切换目录
cd /home/qshh/nacos/instance#该目录下上传压缩包并解压
tar -xf nacos-server-1.4.4.tar.gz#启动命令需要在实例根目录执行 不在nacos的bin目录执行 
#避免污染nacos的bin目录 主要是内置数据库日志和tomcat工作目录和日志
cd /home/qshh/nacos/instance/nacos-server-1.4.4#创建启动脚本
vi startup.sh
#键入:
sh bin/startup.sh -m standalone#保存后即可在该目录执行启动脚本
sh startup.sh
#停止
sh bin/shutdown.sh

访问nacos

默认地址:http://localhost:8848/nacos

#账号:nacos

#密码:nacos

修改nacos端口以及查看日志

要进入nacos目录下的conf中修改application.properties文件

设置端口server.port=8888//默认是8848

如果启动nacos后无法访问到nacos,那么首先看一下nacos的启动日志,看是否成功启动

要进入nacos安装目录下的logs文件夹


#查看nacos运行状态
ps -ef | grep nacos
cat start.out//进行启动日志查看

Redis安装及配置

redis安装


#创建目录
mkdir -p /home/qshh/redis/make#切换目录上传安装包
cd /home/qshh/redis/make  #解压
tar -zxf redis-5.0.14.tar.gz  #得到redis-5.0.14目录#进入目录
cd redis-5.0.14#编译 
make #安装,指定安装目录
make install PREFIX=/home/qshh/redis/instance/redis-5.0.14

用户添加redis路径信息


#环境变量
vi ~/.bash_profile#设置路径以及默认密码
#redis
PATH=/home/qshh/redis/instance/redis-5.0.14/bin:$PATH
export REDISCLI_AUTH=123456#生效
source ~/.bash_profile

配置redis信息


#配置文件 拷贝 改名
cp redis.conf /home/qshh/redis/instance/redis-5.0.14/6379.conf#快捷脚本 拷贝 改名
cp utils/redis_init_script /home/qshh/redis/instance/redis-5.0.14/script/redis_6379#切换目录
cd /home/qshh/redis/instance/redis-5.0.14#编辑配置文件
vi 6379.conf#修改以下选项
################################## NETWORK #####################################
bind 0.0.0.0 #69行 外部访问
port 6379 #92行 端口
################################# GENERAL #####################################
daemonize yes #136行 后台运行
pidfile /home/qshh/redis/instance/redis-5.0.14/6379.pid #158行 pid
logfile "/home/qshh/redis/instance/redis-5.0.14/6379.log" #171行 日志
################################ SNAPSHOTTING  ################################
dbfilename 6379.rdb #253行 数据文件名称
dir /home/qshh/redis/instance/redis-5.0.14 #263行 数据目录
replicaof <masterip> <masterport> #286行 
################################# REPLICATION #################################
masterauth 123456 #293行 master密码 非从节点也是不生效的 可以提前配置 如果不对 部署的时候可以改
################################## SECURITY ###################################
requirepass 123456 #507行 密码
############################## APPEND ONLY MODE ###############################
appendonly yes #699行 持久化策略
appendfilename "6379.aof" #703行 持久化文件
appendfsync always #729行 同步策略#编辑
vi script/redis_6379#修改以下内容
REDISPORT=6379
EXEC=/home/qshh/redis/instance/redis-5.0.14/bin/redis-server #路径修改
CLIEXEC=/home/qshh/redis/instance/redis-5.0.14/bin/redis-cli #路径修改PIDFILE=/home/qshh/redis/instance/redis-5.0.14/${REDISPORT}.pid #路径及文件名称修改
CONF="/home/qshh/redis/instance/redis-5.0.14/${REDISPORT}.conf" #路径修改

启动jar包涉及redis报错处理

报错信息:
[2023-04-09 17:50:42] [ERROR] [org.apache.catalina.core.ContainerBase.[Tomcat].[localhost].[/ms-app].[dispatcherSer
vlet]:175] -- Servlet.service() for servlet [dispatcherServlet] in context with path [/ms-app] threw exception [red
is.clients.jedis.exceptions.JedisDataException: READONLY You can't write against a read only replica.] with root cau
se
redis.clients.jedis.exceptions.JedisDataException: READONLY You can't write against a read only replica.
原因分析:

在jar使用redis时,设置只读的权限

解决:

在之前的配置文件6379.conf中将replica-read-only yes改为no即可见下:


#设置为no即可
replica-read-only  no

RabbitMQ安装及配置

安装依赖Erlang


#root用户安装
yum -y install perl,ncurses-devel,openssl-devel

安装Erlang


#qshh用户创建目录
mkdir -p /home/qshh/erlang/make#进入目录上传压缩包,解压
tar -zxf otp_src_23.3.4.11.tar.gz#进入目录
cd  otp_src_23.3.4.11#编译配置
./configure --prefix=/home/qshh/erlang/instance/erlang-23.3.4.11#编译并安装
make && make install#用户根目录设置环境变量
vi .bash_profile #erlang
PATH=/home/qshh/erlang/instance/erlang-23.3.4.11/lib/erlang/bin:$PATH#生效
source .bash_profile #验证
erl -version

安装rabbitMQ


#qshh实例目录
mkdir -p /home/qshh/rabbitmq/instance#切换目录
cd /home/qshh/rabbitmq/instance#上传并解压得到 rabbitmq_server-3.9.14目录
tar -xf rabbitmq-server-generic-unix-3.9.14.tar.xz#用户根目录设置环境变量
vi .bash_profile#rabbitmq
PATH=/home/qshh/rabbitmq/instance/rabbitmq_server-3.9.14/sbin:$PATH#生效
source .bash_profilecd /home/qshh/rabbitmq/instance/rabbitmq_server-3.9.14#启动
rabbitmq-server -detached#组件安装
rabbitmq-plugins enable rabbitmq_management
rabbitmq-plugins enable rabbitmq_web_stomp#用户
rabbitmqctl list_users#添加用户
rabbitmqctl add_user "admin" "qshh@CYS"#设置角色
rabbitmqctl  set_user_tags  admin  administrator#设置权限
rabbitmqctl set_permissions -p "/" admin ".*" ".*" ".*"#停止
rabbitmqctl stop#启动管理~/bin/qshh_rabbitmq_5672

相关文章:

LINUX部署微服务项目步骤

项目简介技术栈 主体技术&#xff1a;SpringCloud&#xff0c;SpringBoot&#xff0c;VUE2&#xff0c; 中间件&#xff1a;RabbitMQ、Redis 创建用户 在linux服务器home下创建用户qshh&#xff0c;用于后续本项目需要的环境进行安装配置 #创建用户 useradd 用户名 #设置登录密…...

C++ list 容器用法

C list 容器用法 C 标准库提供了丰富的功能&#xff0c;其中 <list> 是一个非常重要的容器类&#xff0c;用于存储元素集合&#xff0c;支持双向迭代器。<list> 是 C 标准模板库&#xff08;STL&#xff09;中的一个序列容器&#xff0c;它允许在容器的任意位置快速…...

解密全同态加密中的自举(Bootstrapping)

摘要 自举&#xff08;Bootstrapping&#xff09;是全同态加密&#xff08;Fully Homomorphic Encryption, FHE&#xff09;中经常使用的术语。熟悉 FHE 的人都知道&#xff0c;自举是 FHE 方案中最复杂且计算密集的部分。然而&#xff0c;只有极少数非 FHE 专家真正理解自举操…...

C#方法(练习)

1.定义一个函数&#xff0c;输入三个值,找出三个数中的最小值 2.定义一个函数&#xff0c;输入三个值,找出三个数中的最大值 3.定义一个函数&#xff0c;输入三个值,找出三个数中的平均值 4.定义一个函数&#xff0c;计算一个数的 N 次方 Pow(2, 3)返回8 5.传入十一…...

显示当前绑定变量

来自v$sql中的信息 测试两个变量的情况&#xff08;实际可以看6个&#xff0c;可根据需要修改&#xff09; DROP TABLE T1 PURGE; CREATE TABLE T1 AS SELECT A.*,SYSDATE RIQI FROM DBA_USERS A ORDER BY 1;var mc char(3); var id number; exec :mc:SYS; exec :id:50;set li…...

随机森林例子

完整代码&#xff1a; # 导入必要的库 from sklearn.datasets import load_iris from sklearn.ensemble import RandomForestClassifier from sklearn.model_selection import train_test_split from sklearn.metrics import accuracy_score import numpy as np# 加载鸢尾花数…...

2025年1月个人工作生活总结

本文为 2025年1月工作生活总结。 研发编码 使用sqlite3命令行查询表数据 可以直接使用sqlite3查询数据表&#xff0c;不需进入命令行模式。示例如下&#xff1a; sqlite3 database_name.db "SELECT * FROM table_name;"linux shell使用read超时一例 先前有个编译…...

arm-linux-gnueabihf安装

Linaro Releases windows下打开wsl2中的ubuntu&#xff0c;资源管理器中输入&#xff1a; \\wsl$gcc-linaro-4.9.4-2017.01-x86_64_arm-linux-gnueabihf.tar.xz 复制到/home/ark01/tool 在 Ubuntu 中创建目录&#xff1a; /usr/local/arm&#xff0c;命令如下&#xff1a; …...

vscode和pycharm的区别

VSCode&#xff08;Visual Studio Code&#xff09;和 PyCharm 是两款常用的 Python 开发工具&#xff0c;它们在功能和使用体验上有一些关键区别&#xff1a; 1. 核心定位 VSCode&#xff1a;轻量级、多语言支持的代码编辑器&#xff0c;依靠插件扩展 Python 开发能力。PyCh…...

宝塔面板SSL加密访问设置教程

参考:https://www.bt.cn/bbs/thread-117246-1-1.html 如何快速使用证书加密访问面板 因早期默认未开启https访问所以没有相关的风险提醒&#xff0c;现面板默认已开启https加密访问、提升安全性 由于采用的是服务器内部本身签发证书&#xff0c;不被公网浏览器信任请参考以下步…...

Baklib在知识管理创新中的价值体现与其他产品的优势比较分析

内容概要 在当前的数字化时代&#xff0c;知识管理成为企业成功的重要组成部分。有效的知识管理不仅有助于提升内部沟通效率&#xff0c;还能促进创新与决策的科学化。尤其是Baklib作为一种知识中台&#xff0c;具有独特的价值&#xff0c;它能够融合企业内外的知识资源&#…...

Python 数据分析 - 初识 Pandas

Python 数据分析 - 初识 Pandas 简介SeriesDataFrame创建基本操作添加删除 简介 Pandas 基于 NumPy 开发&#xff0c;它提供了快速、灵活、明确的数据结构&#xff0c;旨在简单、直观地处理数据。 Pandas 适用于处理以下类型的数据&#xff1a; 有序和无序的时间序列数据带行…...

力扣【416. 分割等和子集】详细Java题解(背包问题)

首先我们可以求出数组和&#xff0c;当我们找到一个子集中元素的和为数组和的一半时&#xff0c;该就说明可以分割等和子集。 对于该问题我们可以转换成背包问题&#xff0c;求 数组里的元素 装入 数组和的一半大小的背包 能取得的最大值。 然后注意可以剪枝的地方。 代码&…...

机器学习周报-文献阅读

文章目录 摘要Abstract 1 相关知识1.1 WDN建模1.2 掩码操作&#xff08;Masking Operation&#xff09; 2 论文内容2.1 WDN信息的数据处理2.2 使用所收集的数据构造模型2.2.1 Gated graph neural network2.2.2 Masking operation2.2.3 Training loss2.2.4 Evaluation metrics 2…...

【Linux】Linux C判断两个IPv6地址是否有包含关系

功能说明 要判断两个 IPv6 地址是否具有包含关系&#xff0c;包括前缀的比较&#xff0c;可以通过以下步骤实现&#xff1a; 解析 IPv6 地址和前缀&#xff1a;将两个 IPv6 地址和它们的前缀长度解析为二进制形式。生成掩码&#xff1a;根据前缀长度生成掩码。按位比较&#…...

【Linux】列出所有连接的 WiFi 网络的密码

【Linux】列出所有连接的 WiFi 网络的密码 终端输入 sudo grep psk /etc/NetworkManager/system-connections/*会列出所有连接过 Wifi 的信息&#xff0c;格式类似 /etc/NetworkManager/system-connections/AAAAA.nmconnection:pskBBBBBAAAAA 是 SSID&#xff0c;BBBBB 是对…...

C语言连接Mysql

目录 C语言连接Mysql下载 mysql 开发库 方法介绍mysql_init()mysql_real_connect()mysql_query()mysql_store_result()mysql_num_fields()mysql_fetch_fields()mysql_fetch_row()mysql_free_result()mysql_close() 完整代码 C语言连接Mysql 下载 mysql 开发库 方法一&#xf…...

Synology 群辉NAS安装(6)安装mssql

Synology 群辉NAS安装&#xff08;6&#xff09;安装mssql 写在前面mssql 2019:成功安装说明&#xff0c;这个最终成功了 mssql 2022没有成功1. pull image2.启动mssql docker container 远程连接 写在前面 mssq是一个重要节点。 这是因为我对mysql没有一丝好感。虽然接触了许…...

WEB集群1-5天

文章目录 第一天、1、初始化配置1. 编写的初始化的脚本 init_env.sh2. 远程拷贝初始化脚本到mysql服务器里3.在mysql这台服务器上执行脚本 2、总结 第二天1、yumyum介绍yum操作将冯老师提供的网站的源码包上传到web服务器 2、部署网站1、解压文件2、epel源&#xff1a;可以提供…...

“AI视频智能分析系统:让每一帧视频都充满智慧

嘿&#xff0c;大家好&#xff01;今天咱们来聊聊一个特别厉害的东西——AI视频智能分析系统。想象一下&#xff0c;如果你有一个超级聪明的“视频助手”&#xff0c;它不仅能自动识别视频中的各种元素&#xff0c;还能根据内容生成详细的分析报告&#xff0c;是不是感觉特别酷…...

oracle中使用in 和 not in 查询效率分析

在Oracle数据库中&#xff0c;IN和NOT IN的查询效率受多种因素影响&#xff0c;以下是关键点总结和优化建议&#xff1a; 1. IN 的效率 优化方式&#xff1a; IN 通常会被优化为 OR条件 或 半连接&#xff08;Semi-Join&#xff09;&#xff0c;如果子查询关联到外部表&#x…...

kaggle视频追踪NFL Health Safety - Helmet Assignment

3年前的比赛了&#xff0c;检测视频中的头盔&#xff0c;通过对比赛录像的分析&#xff0c;正确指派球员。每个进攻都有两个相关的视频&#xff0c;一个是边线视角&#xff0c;另一个是端区视角&#xff0c;而且这两个视频是同步的&#xff0c;即视频中的每一帧都是对应的。我用…...

idea对jar包内容进行反编译

1.先安装一下这个插件java Bytecode Decompiler 2.找到这个插件的路径&#xff0c;在idea的plugins下面的lib文件夹内&#xff1a;java-decompiler.jar。下面是我自己本地的插件路径&#xff0c;以作参考&#xff1a; D:\dev\utils\idea\IntelliJ IDEA 2020.1.3\plugins\java-d…...

deepseek R1 14b硬件要求

RTX2080ti 11G显卡&#xff0c;模型7b速度挺快&#xff0c;试试14B也不错。 7B显存使用5.6G&#xff0c;11B显存刚好够&#xff0c;出文字速度差不多。 打算自己写个移动宽带的IPTV播放器&#xff0c;不知道怎么下手&#xff0c;就先问他了。...

DeepSeek-R1环境搭建推理测试

引子 这两天国货之光DeepSeek-R1火爆出圈&#xff0c;凑个热闹。过来看看 aha moment&#xff08;顿悟时刻&#xff09;的神奇&#xff0c;OK&#xff0c;我们开始吧。 一、模型介绍 1月20日&#xff0c;中国AI公司深度求索&#xff08;DeepSeek&#xff09;发布的DeepSeek-…...

列表(修改、添加和删除元素)

你将学习列表是什么以及如何使用列表元素。列表让你能够在一个地方存储成组的信息&#xff0c;其中可以只包含几个元素&#xff0c;也可以包含数百万个元素。 列表是新手可直接使用的最强大的Python功能之一&#xff0c;它融合了众多重要的编程概念。 修改、添加和删除元素 你…...

记录 | 基于Docker Desktop的MaxKB安装

目录 前言一、MaxKBStep 1Step2 二、运行MaxKB更新时间 前言 参考文章&#xff1a;如何利用智谱全模态免费模型&#xff0c;生成大家都喜欢的图、文、视并茂的文章&#xff01; MaxKB的Github下载地址 参考视频&#xff1a;【2025最新MaxKB教程】10分钟学会一键部署本地私人专属…...

策略梯度 (Policy Gradient):直接优化策略的强化学习方法

策略梯度 (Policy Gradient) 是强化学习中的一种方法&#xff0c;用于优化智能体的策略&#xff0c;使其在给定环境中表现得更好。与值函数方法&#xff08;如 Q-learning&#xff09;不同&#xff0c;策略梯度方法直接对策略进行优化&#xff0c;而不是通过学习一个值函数来间…...

练习(复习)

大家好&#xff0c;今天我们来做几道简单的选择题目来巩固一下最近学习的知识&#xff0c;以便我们接下来更好的学习。 这道题比较简单&#xff0c;我们前面学过&#xff0c;在Java中&#xff0c;一个类只能继承一个父类&#xff0c;但是一个父类可以有多个子类&#xff0c;一个…...

数据结构与算法之栈: LeetCode 739. 每日温度 (Ts版)

每日温度 https://leetcode.cn/problems/daily-temperatures/description/ 描述 给定一个整数数组 temperatures &#xff0c;表示每天的温度&#xff0c;返回一个数组 answer &#xff0c;其中 answer[i] 是指对于第 i 天&#xff0c;下一个更高温度出现在几天后。如果气温…...