Redis自动部署脚本编写
#!/bin/bash
ck_ok()
{
if [ $? -ne 0 ]
then
echo "$1 error."
exit 1
fi
}
download_redis()
{
cd /usr/local/src
if [ -f redis-7.0.4.tar.gz ]
then
echo "当前目录已经存在redis-7.0.4.tar.gz"
echo "检测MD5"
file_md5=`md5sum redis-7.0.4.tar.gz | awk '{print $1}'`
if [ ${file_md5} == '3a2ce76ef8f5ca3cc6463c487f2d532c' ]
then
return 0
else
echo "file redis-7.0.4.tar.gz md5 check failed"
/bin/mv redis-7.0.4.tar.gz redis-7.0.4.tar.gz.old
fi
fi
sudo curl -o redis-7.0.4.tar.gz https://codeload.github.com/redis/redis/tar.gz/refs/tags/7.0.4
ck_ok " 下载redis"
}
install_redis()
{
cd /usr/local/src
if [ -d redis-7.0.4/ ]
then
rm -rf redis-7.0.4/
fi
sudo tar zxf redis-7.0.4.tar.gz
ck_ok "解压redis源码包"
cd redis-7.0.4/
sudo make && sudo make PREFIX=/usr/local/redis install
ck_ok "编译和安装redis"
sudo mkdir -p /usr/local/redis/{conf,log}
sudo mkdir -p /data/redis
if id redis &>/dev/null
then
echo "系统已经创建了redis用户,跳过创建"
else
echo "创建redis用户"
sudo useradd -s /sbin/nologin redis
fi
ck_ok "创建redis用户"
sudo chown -R redis /data/redis /usr/local/redis/log
}
config_redis()
{
echo "配置redis.conf"
sudo /bin/cp /usr/local/src/redis-7.0.4/redis.conf /usr/local/redis/conf/redis.conf
sudo sed -i 's/daemonize no/daemonize yes/' /usr/local/redis/conf/redis.conf
sudo sed -i 's@logfile ""@logfile "/usr/local/redis/log/redis.log"@' /usr/local/redis/conf/redis.conf
sudo sed -i 's@dir ./@dir /data/redis@' /usr/local/redis/conf/redis.conf
sudo sed -i 's@pidfile /var/run/redis_6379.pid@pidfile /usr/local/redis/log/redis_6379.pid@' /usr/local/redis/conf/redis.conf
sudo sed -i '/# requirepass foobared/a requirepass aminglinux.Com' /usr/local/redis/conf/redis.conf
echo "配置systemd service"
cat >/lib/systemd/system/redis.service <<EOF
[Unit]
Description=redis
After=network.target
[Service]
User=redis
Type=forking
TimeoutSec=0
PIDFile=/usr/local/redis/log/redis_6379.pid
ExecStart=/usr/local/redis/bin/redis-server /usr/local/redis/conf/redis.conf
ExecReload=/bin/kill -s HUP $MAINPID
ExecStop=/bin/kill -s QUIT $MAINPID
PrivateTmp=true
[Install]
WantedBy=multi-user.target
EOF
sudo mv /tmp/redis.service /lib/systemd/system/redis.service
echo "更新内核"
grep -q 'net.core.somaxconn = 2048' /etc/sysctl.conf || echo "net.core.somaxconn = 2048" || sudo tee -a /etc/sysctl.conf
grep -q 'vm.overcommit_memory = 1' /etc/sysctl.conf || echo "vm.overcommit_memory = 1" || sudo tee -a /etc/sysctl.conf
sudo sysctl -p
sudo systemctl daemon-reload
sudo systemctl enable redis
echo "启动redis服务"
sudo systemctl start redis
ck_ok "启动redis服务"
}
download_redis
install_redis
config_redis
相关文章:
Redis自动部署脚本编写
#!/bin/bash ck_ok() { if [ $? -ne 0 ] then echo "$1 error." exit 1 fi } download_redis() { cd /usr/local/src if [ -f redis-7.0.4.tar.gz ] then echo "当前目录已经存在redis-7.0.4.tar.gz&q…...
Tinker 环境下数据表的用法
如果我们要自己手动创建一个模型文件,最简单的方式是通过 make:model 来创建。 php artisan make:model Article 删除模型文件 rm app/Models/Article.php 创建模型的同时顺便创建数据库迁移 php artisan make:model Article -m Eloquent 表命名约定 在该文件中&am…...
鸿蒙(HarmonyOS)项目方舟框架(ArkUI)之线性布局容器Row组件
鸿蒙(HarmonyOS)项目方舟框架(ArkUI)之线性布局容器Row组件 一、操作环境 操作系统: Windows 10 专业版、IDE:DevEco Studio 3.1、SDK:HarmonyOS 3.1 二、Row组件 沿水平方向布局容器。 子组件 可以包含子组件。 接口 Row(…...
JAVA——JDBC学习
视频连接:https://www.bilibili.com/video/BV1sK411B71e/?spm_id_from333.337.search-card.all.click&vd_source619f8ed6df662d99db4b3673d1d3ddcb 《视频讲解很详细!!推荐》 JDBC(Java DataBase Connectivity Java数据库连…...
Flask 用户信息编辑系统
Flask 用户信息编辑系统 web/templates/user/edit.html {% extends "common/layout_main.html" %} {% block content %} {% include "common/tab_user.html" %} <div class"row m-t user_edit_wrap"><div class"col-lg-12"…...
Spring DefaultListableBeanFactory源码分析
目录 一、概述 二、主要功能 三、核心功能解析 Bean定义的存储结构 ConcurrentHashMap的使用和意义 四、总结 一、概述 DefaultListableBeanFactory 是 Spring 框架中的一个核心类,它继承自AbstractAutowireCapableBeanFactory类,实现了 ListableBeanF…...
关于MySQL、分布式系统、SpringCloud面试题
前言 之前为了准备面试,收集整理了一些面试题。 本篇文章更新时间2023年12月27日。 最新的内容可以看我的原文:https://www.yuque.com/wfzx/ninzck/cbf0cxkrr6s1kniv MySQL 索引 说一下有哪些锁? 行锁有哪些? 性能优化 分库分表…...
2023年中职“网络安全”——B-5:网络安全事件响应(Server2216)
B-5:网络安全事件响应 任务环境说明: 服务器场景:Server2216(开放链接) 用户名:root密码:123456 1、黑客通过网络攻入本地服务器,通过特殊手段在系统中建立了多个异常进程,找出启…...
【论文解读】Learning based fast H.264 to H.265 transcoding
时间: 2015 年 级别: APSIPA 机构: 上海电力大学 摘要 新提出的视频编码标准HEVC (High Efficiency video coding)以其比H.264/AVC更好的编码效率,被工业界和学术界广泛接受和采用。在HEVC实现了约40%的编码效率提升的同时&…...
[vue]Echart使用手册
[vue]Echart使用手册 使用环境Echart的使用Echart所有组件和图表类型Echart 使用方法 使用环境 之前是在JQuery阶段使用Echart,直接引入Echart的js文件即可,现在是在vue中使用,不仅仅时echarts包,还需要安装vue-echarts: "…...
视频人脸识别马赛克处理
文章目录 前言一、实现思路?二、Coding三、实现效果 前言 前面几篇文章我们尝试了使用opencv完成图像人脸识别以及识别后贴图或者打马赛克的方法。 偶尔我们也会有需求在视频中将人脸马赛克化,opencv也提供了相应的方法来实现这个功能。 一、实现思路&a…...
2023-12-27 Python PC获取鼠标位置,移动鼠标到相应的位置 定时自动模拟鼠标点击,用于简单测试app用
一、核心源码如下: import pyautogui import timepyautogui.moveTo(600, 800) for i in range(20):time.sleep(0.1)x, y pyautogui.position()print("mouse position:", x, y)pyautogui.click()二、定时自动模拟鼠标点击,模拟键盘按键 impo…...
如何解决服务器CA证书过期的问题
一、问题的提出 最近在学习VPS,在Linux系统里给服务器安装某项服务时,在服务的log里看到下面的错误信息: failed to verify certificate: x509: certificate has expired or is not yet valid: current time 2023-12-25T04:42:38-05:00 is a…...
计算机基础面试题总结
47、OSI、TCP/IP、五层协议的体系结构以及各层协议 OSI分层(7层):物理层、数据链路层、网络层、传输层、会话层、表示层、应用层。 TCP/IP分层(4层):网络接口层、网际层、运输层、应用层。 五层协议&…...
【算法练习】leetcode链表算法题合集
链表总结 增加表头元素倒数节点,使用快慢指针环形链表(快慢指针)合并有序链表,归并排序LRU缓存 算法题 删除链表元素 删除链表中的节点 LeetCode237. 删除链表中的节点 复制后一个节点的值,删除后面的节点&#x…...
2023.12.28每日一题
LeetCode每日一题 2735.收集巧克力 2735. 收集巧克力 - 力扣(LeetCode) 介绍 看题目看不懂,在评论区看到一个大哥解释,瞬间明白了。 一张桌子上有n件商品围成一圈,每件都有一个价签,它们构成数组nums。…...
231227-9步在RHEL8.8配置本地yum源仓库
Seciton 1:参考视频 RHEL8配置本地yum源仓库-安徽迪浮_哔哩哔哩_bilibili Seciton 2:具体操作 🎯 第1步:查看光驱文件/dev/sr0是否已经挂载?此处已挂在 [lgklocalhost ~]$ df -h 🎯 第1步:查看…...
5. 创建型模式 - 单例模式
亦称: 单件模式、Singleton 意图 单例模式是一种创建型设计模式, 让你能够保证一个类只有一个实例, 并提供一个访问该实例的全局节点。 问题 单例模式同时解决了两个问题, 所以违反了单一职责原则: 保证一个类只有一…...
机器学习之人工神经网络(Artificial Neural Networks,ANN)
人工神经网络(Artificial Neural Networks,ANN)是机器学习中的一种模型,灵感来源于人脑的神经网络结构。它由神经元(或称为节点)构成的层级结构组成,每个神经元接收输入并生成输出,这些输入和输出通过权重进行连接。 人工神经网络(ANN)是一种模仿生物神经系统构建的…...
GetLastError()详细介绍
GetLastError() 是 Windows 操作系统提供的一个函数,用于获取调用线程最近一次发生的错误码。这个函数的定义如下: DWORD GetLastError(void); 调用 GetLastError() 函数可以帮助开发人员在发生错误时获取错误的详细信息,从而进行适当的错…...
无需编程!cv_resnet18_ocr-detection WebUI界面操作详解
无需编程!cv_resnet18_ocr-detection WebUI界面操作详解 1. 开篇:为什么选择这个OCR工具? 在日常工作和生活中,我们经常需要从图片中提取文字信息。传统OCR工具要么需要复杂的编程接口,要么功能单一难以满足需求。今…...
【已验证】基于STM32和HAL库的大夏龙雀BT311-10C02S蓝牙模块驱动
最近买了一个大夏龙雀家的蓝牙模块DX-BT311-10C02S,这个蓝牙是一款基于BLE 5.4规范的串口透传模块,支持AT指令配置、主从模式切换,非常适合与单片机搭配实现无线数据传输。如果是第一次买还是很便宜的,他家的模块有一说一是真的不…...
3倍效率的磁盘清理工具:Czkawka如何让存储空间管理变得简单
3倍效率的磁盘清理工具:Czkawka如何让存储空间管理变得简单 【免费下载链接】czkawka 一款跨平台的重复文件查找工具,可用于清理硬盘中的重复文件、相似图片、零字节文件等。它以高效、易用为特点,帮助用户释放存储空间。 项目地址: https:…...
提升网络调试效率,快马AI一键生成端口扫描与服务检测实用脚本
最近在调试网络服务时,经常需要手动检查端口状态和接口可用性,重复劳动特别耗时。于是尝试用Python写了个自动化工具,发现效果不错,分享下实现思路和使用体验。 端口扫描功能实现 通过socket模块实现基础的TCP连接检查,…...
用PyTorch复现掌纹识别顶会论文:从VGG16到ResNet152的模型蒸馏踩坑实录
从VGG16到ResNet152:掌纹识别模型蒸馏实战中的关键挑战与解决方案 掌纹识别作为生物特征识别领域的重要分支,近年来在深度学习技术的推动下取得了显著进展。然而,当我们将论文中的理论模型转化为实际可运行的代码时,往往会遇到一系…...
别再被‘绝对安全’忽悠了:聊聊量子密钥分发里那个叫‘诱骗态’的‘安全补丁’
量子密钥分发中的"安全补丁":诱骗态如何守护通信防线 量子通信常被冠以"绝对安全"的美誉,但鲜为人知的是,这项前沿技术同样需要不断打补丁来应对现实威胁。就像软件系统需要安全更新一样,量子密钥分发&#…...
避坑指南:Ubuntu 22.04安装PyTorch时,关于CUDA版本和驱动那些最容易踩的雷
避坑指南:Ubuntu 22.04安装PyTorch时,关于CUDA版本和驱动那些最容易踩的雷 如果你正在Ubuntu 22.04上搭建PyTorch开发环境,很可能已经遇到了几个令人困惑的问题:为什么nvidia-smi和nvcc -V显示的CUDA版本不一致?为什么…...
Rocky Linux 9最小化安装后,我第一时间会做的10个安全加固设置(新手必看)
Rocky Linux 9最小化安装后的10个关键安全加固指南 当你完成Rocky Linux 9的最小化安装,系统虽然干净但远未达到安全标准。作为企业级RHEL的替代品,Rocky Linux继承了其稳定性与安全性基因,但默认配置仍需优化才能抵御现代网络威胁。本文将分…...
DBeaver宏参数验证终极指南:确保数据库宏输入安全的完整方法
DBeaver宏参数验证终极指南:确保数据库宏输入安全的完整方法 【免费下载链接】dbeaver DBeaver 是一个通用的数据库管理工具,支持跨平台使用。* 支持多种数据库类型,如 MySQL、PostgreSQL、MongoDB 等;提供 SQL 编辑、查询、调试等…...
从AudioLDM到商业应用:AI生成冥想音乐的技术全景与实战指南
从AudioLDM到商业应用:AI生成冥想音乐的技术全景与实战指南 引言 在快节奏的现代生活中,冥想作为一种有效的减压方式日益普及,而与之相伴的冥想音乐需求也持续增长。传统的音乐创作模式周期长、成本高,难以满足海量、个性化的需求…...
