Linux环境在非root用户中搭建(java-tomcat-redis)
注: 本文在内网(离线)环境,堡垒机中搭建,服务器不同可能有所差异,仅供参考
本文安装JDK-20.0.1版本,apache-tomcat-10.1.10版本,redis-6.2.15版本
本文服务器IP假设:192.168.88.133
root用户创建子用户并赋予sudo权限
创建子用户-asia
sudo adduser asia
给子用户赋予sudo权限
使用root用户编辑 /etc/sudoers配置文件
vi /etc/sudoers
## Allow root to run any commands anywhere
root ALL=(ALL) ALL
asia ALL=(ALL) ALL## Same thing without a password
# %wheel ALL=(ALL) NOPASSWD: ALL
asia ALL=(ALL) NOPASSWD: ALL
在sudoers文件中找到上面两个位置,一个是sudo权限,另一个是使用是不用输入密码
编辑后按ESC键,输入 :wq!,强制保持退出
切换asia用户
安装jdk-20.0.1
创建目录
mkdir -p 父目录/子目录
压缩包(jdk-20.0.1.tar.gz)放到java目录下:/home/asia/usr/local/java
解压jdk
解压
tar -zxvf jdk-20.0.1.tar.gz /home/asia/usr/local/java
配置环境
输入nano ~/.bashrc进入配置文件
加入配置:
export JAVA_HOME=/home/asia/usr/local/java/jdk-20.0.1
export PATH=$JAVA_HOME/bin:$PATH
编辑后:Ctrl+O 保持文件按ENTER确认Ctrl+X 退出编辑
刷新配置文件 命令:source ~/.bashrc
一开始没有配置sudo权限,所以这样配置的环境,不影响使用
查看版本
输入命令:java -version
[asia@localhost ~]$ java -version
openjdk version "20.0.1" 2023-04-18
OpenJDK Runtime Environment (build 20.0.1+9-29)
OpenJDK 64-Bit Server VM (build 20.0.1+9-29, mixed mode, sharing)
[asia@localhost ~]$
显示20.0.1是jdk版本代表成功!
安装TomCat
创建目录
mkdir -p 父目录/子目录
压缩包(apache-tomcat-10.1.10.tar.gz)放到java目录下:/home/asia/usr/local/tomcat
解压tomcat
cd到/home/asia/usr/local/tomcat
解压 tar -zxvf apache-tomcat-10.1.10.tar.gz
解压后进入tomcat的bin目录
cd /home/asia/usr/local/tomcat/apache-tomcat-10.1.10/bin
启动:./startup.sh
关闭:./shutdown.sh
启动后访问172.35.1.181:8080不能进入ManagerApp
添加tomcat用户
cd /home/asia/usr/local/tomcat/apache-tomcat-10.1.10/conf
vim tomcat-users.xml
tomcat-users.xml最下面加入以下内容:
<role rolename="manager-gui"/>
<user username="admin" password="admin" roles="manager-gui"/>关闭tomcat服务重新启动
发现仍然无法访问ManagerApp
配置远程访问
cd /home/asia/usr/local/tomcat/apache-tomcat-10.1.10/conf/Catalina/localhost
vi manager.xml
Manager.xml加入以下内容:
<Context privileged="true" antiResourceLocking="false"docBase="${catalina.home}/webapps/manager"><Valve className="org.apache.catalina.valves.RemoteAddrValve" allow="^.*$" />
</Context>
重启tomcat:./startup.sh
此时ManagerApp可以访问了
限制上传war包大小
上传war报错:文件太大
cd /home/asia/usr/local/tomcat/apache-tomcat-10.1.10/webapps/manager/WEB-INF
vim web.xml
修改web.xml文件(原50MB)<!-- 200MB max --><max-file-size>209715200</max-file-size><max-request-size>209715200</max-request-size><file-size-threshold>0</file-size-threshold></multipart-config>
配置tomcat服务
sudo vim /etc/systemd/system/tomcat.service
插入:[Unit]
Description=Apache Tomcat Web Application Container
After=network.target[Service]
Type=forkingUser=asia
Group=asiaEnvironment="JAVA_HOME=/home/asia/usr/local/java/jdk-20.0.1"Environment="CATALINA_PID=/home/asia/usr/local/tomcat/apache-tomcat-10.1.10/temp/tomcat.pid"
ExecStart=/home/asia/usr/local/tomcat/apache-tomcat-10.1.10/bin/startup.sh
ExecStop=/home/asia/usr/local/tomcat/apache-tomcat-10.1.10/bin/shutdown.sh[Install]
WantedBy=multi-user.target
刷新配置
sudo systemctl daemon-reload
启动tomcat服务
查看进程:ps aux|grep tomcat
如果有进程就杀掉:kill -9 [Pid]启动服务
sudo systemctl start tomcat
查看服务状态
sudo systemctl status tomcat
关闭服务
sudo systemctl stop tomcat
重启服务
sudo systemctl restart tomcat
安装redis
创建目录
mkdir -p 父目录/子目录
压缩包(redis-6.2.14.tar.gz)放到java目录下:/home/asia/usr/local/redis
解压redis
cd到 /home/asia/usr/local/redis
解压 tar -zxvf redis-6.2.14.tar.gz
(此处解压后的redis-6.2.15本文改名为redis)
编译
make
cd 到 redis
使用make PREFIX=/home/asia/usr/local/redis/redis install
配置密码
vi redis.conf
注释掉:#bind 127.0.0.1 -::1
修改密码:requirepass Asia@88220660 (取消注释编辑密码)
打开配置,密码生效:protected-mode yes
修改脚本
cd /home/asia/usr/local/redis/redis/utils编辑 install_server.sh 文件以下脚本内容注释
#bail if this system is managed by systemd
#_pid_1_exe="$(readlink -f /proc/1/exe)"
#if [ "${_pid_1_exe##*/}" = systemd ]
#then
# echo "This systems seems to use systemd."
# echo "Please take a look at the provided example service unit files in this #directory, and adapt and install them. Sorry!"
# exit 1
#fi
创建服务脚本
cd /home/asia/usr/local/redis/redis/utilsvim install_server_command.sh
插入:
sudo REDIS_PORT=6379REDIS_CONFIG_FILE=/home/asia/usr/local/redis/redis/redis.confREDIS_LOG_FILE=/home/asia/usr/local/redis/redis/bin/redis.logREDIS_DATA_DIR=/home/asia/usr/local/redis/redis/bin/REDIS_EXECUTABLE=`command -v /home/asia/usr/local/redis/redis/bin/redis-server`/home/asia/usr/local/redis/redis/utils/install_server.sh
配置redis服务
vim /etc/systemd/system/redis.service[Unit]
Description=redis-server
After=network.target[Service]
ExecStart=/home/asia/usr/local/redis/redis/bin/redis-server /home/asia/usr/local/redis/redis/redis.conf
ExecStop=/home/asia/usr/local/redis/redis/bin/redis-cli -h 127.0.0.1 -p 6379 shutdown[Install]
WantedBy=multi-user.target
启动redis服务
刷新配置
sudo systemctl daemon-reload
切换asia
查看进程:ps aux|grep redis
如果有进程就杀掉:kill -9 [Pid]启动服务
sudo systemctl start redis
查看服务状态
sudo systemctl status redis
关闭服务
sudo systemctl stop redis
重启服务
sudo systemctl restart redis
外部连接失败,因为redis运行中是受保护的模式,修改即可
redis-cli
config set protected-mode “no”
退出exit

相关文章:
Linux环境在非root用户中搭建(java-tomcat-redis)
注: 本文在内网(离线)环境,堡垒机中搭建,服务器不同可能有所差异,仅供参考 本文安装JDK-20.0.1版本,apache-tomcat-10.1.10版本,redis-6.2.15版本 本文服务器IP假设:192.168.88.133 root用户创建子用户并…...
Unity 之 代码修改材质球贴图
Unity 之 代码修改材质球贴图 代码修改Shader:ShaderGraph:材质球包含属性 代码修改 meshRenderer.material.SetTexture("_Emission", texture);Shader: ShaderGraph: 材质球包含属性 materials[k].HasProperty("…...
spark-3.5.1+Hadoop 3.4.0+Hive4.0 分布式集群 安装配置
Hadoop安装参考: Hadoop 3.4.0HBase2.5.8ZooKeeper3.8.4Hive4.0Sqoop 分布式高可用集群部署安装 大数据系列二-CSDN博客 一 下载:Downloads | Apache Spark 1 下载Maven – Welcome to Apache Maven # maven安装及配置教程 wget https://dlcdn.apache.org/maven/maven-3/3.8…...
Matlab实现GWO-CNN-LSTM-Mutilhead-Att灰狼算法卷积长短期记忆神经网络融合多头注意力机制预测 SCI顶级优化
数据预处理:准备和清理数据,包括数据的加载、特征提取、归一化等。 GWO (灰狼算法) 的实现:根据灰狼算法的原理和公式,编写 MATLAB 代码来初始化灰狼群体、计算适应度函数、更新位置等。 CNN (卷积神经网络) 的构建:使…...
RTKLIB之RTKPLOT画图工具
开源工具RTKLIB在业内如雷贯耳,其中的RTKPLOT最近正在学习,发现其功能之强大,前所未见,打开了新的思路。 使用思博伦GSS7000卫星导航模拟器,PosApp软件仿真一个载具位置 1,RTKPLOT支持DUT 串口直接输出的NMEA数据并…...
本地部署 RAGFlow
本地部署 RAGFlow 0. RAGFlow 是什么?1. 安装 wsl-ubuntu2. (可选)配置清华大学软件源3. 系统更新和安装构建工具4. 安装 Miniconda35. 安装 CUDA Toolkit6. 安装 git lfs7. 配置 Hugging Face 的缓存路径8. 配置 vm.max_map_count9. 安装 Docker Engine10. 安装 nginx11. 本地…...
php常用数据库操作
文章目录 PHP操作1. mysqli_connect() 连接数据库2. mysqli_close() 关闭数据库3. mysqli_num_rows 查询结果集中的行数4. mysqli_select_db 选择数据库的函数5. mysqli_query 常规的插入查找等6. header( )7.防止 sql 注入 PHP操作 1. mysqli_connect() 连接数据库 2. mysql…...
判断经纬度是否在某个城市内
一、从高德获取指定城市边界经纬度信息 通过apifox操作: 二、引入第三方jar包: maven地址:https://mvnrepository.com/ maven依赖: <dependency><groupId>org.locationtech.jts</groupId><artifactId>…...
Java——数组排序和查找
一、排序介绍 1、排序的概念 排序是将多个数据按照指定的顺序进行排列的过程。 2、排序的种类 排序可以分为两大类:内部排序和外部排序。 3、内部排序和外部排序 1)内部排序 内部排序是指数据在内存中进行排序,适用于数据量较小的情况…...
Flutter中防抖动和节流策略
什么是防抖和节流? 函数节流(throttle)与 函数防抖(debounce)都是为了限制函数的执行频次,以优化函数触发频率过高导致的响应速度跟不上触发频率,出现延迟,假死或卡顿的现象 是应对频…...
设计模式-中介者(调停者)模式(行为型)
中介者模式 中介者模式是一种行为型模式,又叫调停者模式,它是为了解决多个对象之间,多个类之间通信的复杂性,定义一个中介者对象来封装一些列对象之间的交互,使各个对象之间不同持有对方的引用就可以实现交互…...
HC-05蓝牙模块配置连接和使用
文章目录 1. 前期准备 2. 进入AT模式 3. 电脑串口配置 4. 配置过程 5. 主从机蓝牙连接 6. 蓝牙模块HC-05和电脑连接 1. 前期准备 首先需要准备一个USB转TTL连接器,电脑安装一个串口助手,然后按照下面的连接方式将其相连。 VCCVCCGNDGNDRXDTXDTXD…...
云上小知识:企业选择云服务的小Tips
企业在选择云服务模式时,应综合考虑以下几个关键因素: 1. 业务需求与场景 企业需要根据自身的业务特点和需求来选择合适的云服务模式。例如,如果企业的用户分布广泛,需要跨地域提供服务,那么公有云可能是更好的选择。…...
生成式人工智能 - Stable Diffusion 都使用了哪些技术?
一、Stable Diffusion简述 1、简述 Stable Diffusion在2022年8月开源,是由慕尼黑大学的CompVis研究团队开发的生成式人工神经网络。该项目由初创公司StabilityAI、CompVis和Runway合作开发,并得到了EleutherAI和LAION的支持。截至2022年10月,StabilityAI已筹集了1.01亿美元…...
React的useState的基础使用
import {useState} from react // 1.调用useState添加状态变量 // count 是新增的状态变量 // setCount 修改状态变量的方法 // 2.添加点击事件回调 // userState实现计数实例import {useState} from react// 使用组件 function App() {// 1.调用useState添加状态变量// coun…...
接口自动化Requests+Pytest基础实现
目录 1. 数据库以及数据库操作1.1 概念1.2 分类1.3 作用 2 python操作数据库的相关实现2.1 背景2.2 相关实现 3. pymysql基础3.1 整个流程3.2 案例3.3 Pymysql工具类封装 4 事务4.1 案例4.2 事务概念4.3 事务特征 5. requests库5.1 概念5.2 角色定位5.3 安装5.4 校验5.5 reques…...
深入解析Kafka消息传递的可靠性保证机制
深入解析Kafka消息传递的可靠性保证机制 Kafka在设计上提供了不同层次的消息传递保证,包括at most once(至多一次)、at least once(至少一次)和exactly once(精确一次)。每种保证通过不同的机制…...
jEasyUI 设置排序
jEasyUI 设置排序 jEasyUI 是一个基于 jQuery 的框架,用于轻松构建交互式的 Web 应用程序。它提供了一系列的 UI 组件,如表格(datagrid)、树(tree)、下拉列表(combobox)等,这些组件可以帮助开发者快速实现复杂的界面功能。在本文中,我们将重点讨论如何在 jEasyUI 中…...
MySQL之查询性能优化(十二)
查询性能优化 优化COUNT()查询 4.使用近似值 有时候某些业务场景并不要求完全精确的COUNT值,此时可以用近似值来代替。EXPLAIN出来的优化器估算的行数就是一个不错的近似值,执行EXPLAIN并不需要真正地去执行查询,所以成本很低。很多时候&am…...
7-16 二分查找
7-16 二分查找 分数 25 全屏浏览 切换布局 作者 李廷元 单位 中国民用航空飞行学院 请实现有重复数字的有序数组的二分查找。 输出在数组中第一个大于等于查找值的位置,如果数组中不存在这样的数,则输出数组长度加一。 输入格式: 输入第一行有两个…...
Python爬虫实战:研究MechanicalSoup库相关技术
一、MechanicalSoup 库概述 1.1 库简介 MechanicalSoup 是一个 Python 库,专为自动化交互网站而设计。它结合了 requests 的 HTTP 请求能力和 BeautifulSoup 的 HTML 解析能力,提供了直观的 API,让我们可以像人类用户一样浏览网页、填写表单和提交请求。 1.2 主要功能特点…...
.Net框架,除了EF还有很多很多......
文章目录 1. 引言2. Dapper2.1 概述与设计原理2.2 核心功能与代码示例基本查询多映射查询存储过程调用 2.3 性能优化原理2.4 适用场景 3. NHibernate3.1 概述与架构设计3.2 映射配置示例Fluent映射XML映射 3.3 查询示例HQL查询Criteria APILINQ提供程序 3.4 高级特性3.5 适用场…...
高频面试之3Zookeeper
高频面试之3Zookeeper 文章目录 高频面试之3Zookeeper3.1 常用命令3.2 选举机制3.3 Zookeeper符合法则中哪两个?3.4 Zookeeper脑裂3.5 Zookeeper用来干嘛了 3.1 常用命令 ls、get、create、delete、deleteall3.2 选举机制 半数机制(过半机制࿰…...
对WWDC 2025 Keynote 内容的预测
借助我们以往对苹果公司发展路径的深入研究经验,以及大语言模型的分析能力,我们系统梳理了多年来苹果 WWDC 主题演讲的规律。在 WWDC 2025 即将揭幕之际,我们让 ChatGPT 对今年的 Keynote 内容进行了一个初步预测,聊作存档。等到明…...
ESP32 I2S音频总线学习笔记(四): INMP441采集音频并实时播放
简介 前面两期文章我们介绍了I2S的读取和写入,一个是通过INMP441麦克风模块采集音频,一个是通过PCM5102A模块播放音频,那如果我们将两者结合起来,将麦克风采集到的音频通过PCM5102A播放,是不是就可以做一个扩音器了呢…...
什么?连接服务器也能可视化显示界面?:基于X11 Forwarding + CentOS + MobaXterm实战指南
文章目录 什么是X11?环境准备实战步骤1️⃣ 服务器端配置(CentOS)2️⃣ 客户端配置(MobaXterm)3️⃣ 验证X11 Forwarding4️⃣ 运行自定义GUI程序(Python示例)5️⃣ 成功效果作为Spring生态中的AI集成框架,其核心设计理念是通过模块化架构降低AI应用的开发复杂度。与Python生态中的LangChain/LlamaIndex等工具类似,但特别为多语…...
Web 架构之 CDN 加速原理与落地实践
文章目录 一、思维导图二、正文内容(一)CDN 基础概念1. 定义2. 组成部分 (二)CDN 加速原理1. 请求路由2. 内容缓存3. 内容更新 (三)CDN 落地实践1. 选择 CDN 服务商2. 配置 CDN3. 集成到 Web 架构 …...
【从零学习JVM|第三篇】类的生命周期(高频面试题)
前言: 在Java编程中,类的生命周期是指类从被加载到内存中开始,到被卸载出内存为止的整个过程。了解类的生命周期对于理解Java程序的运行机制以及性能优化非常重要。本文会深入探寻类的生命周期,让读者对此有深刻印象。 目录 …...
