分类目录归档:LINUX

docker学习(10)—使用docker安装redis集群

1、创建容器,创建6个redis实例
docker create --name redis-node-1 --net host --privileged=true -v /data/redis/share/redis-node-1:/data redis:5.0.7 --cluster-enabled yes --appendonly yes --port 6381
docker create --name redis-node-2 --net host --privileged=true -v /data/redis/share/redis-node-2:/data redis:5.0.7 --cluster-enabled yes --appendonly yes --port 6382
docker create --name redis-node-3 --net host --privileged=true -v /data/redis/share/redis-node-3:/data redis:5.0.7 --cluster-enabled yes --appendonly yes --port 6383
docker create --name redis-node-4 --net host --privileged=true -v /data/redis/share/redis-node-4:/data redis:5.0.7 --cluster-enabled yes --appendonly yes --port 6384
docker create --name redis-node-5 --net host --privileged=true -v /data/redis/share/redis-node-5:/data redis:5.0.7 --cluster-enabled yes --appendonly yes --port 6385
docker create --name redis-node-6 --net host --privileged=true -v /data/redis/share/redis-node-6:/data redis:5.0.7 --cluster-enabled yes --appendonly yes --port 6386

说明:
docker create:创建容器的命令,但不启动它
--name redis-node-1:容器的名字,例如:redis-node-1
--net host:docker网络,使用宿主机的IP和端口
--privileged=true:docker容器权限,获取宿主机root权限
-v /data/redis/share/redis-node-1:/data:容器的data目录,映射到宿主机/data/redis/share/redis-node-1
redis:5.0.7:redis镜像名称和版本号
--cluster-enabled yes:redis.conf的配置,开启redis集群
--appendonly yes:redis.conf的配置,开启数据持久化
--port 6381:redis.conf的配置,redis端口号

继续阅读docker学习(10)—使用docker安装redis集群

redis学习(7)—操作geohash命令

自redis 3.2开始,redis基于geohash和zset提供了地理位置相关功能
什么是Geohash
Geohash是一种地址编码,它能把二维的经纬度编码成一维的字符串。比如,世界之窗的编码是ws101xy1rp0
Redis Geo模块包含了以下6个命令:

1、GEOADD命令
将给定的位置对象(纬度、经度、名字)添加到指定的key
注:
1)这里我们采用的是中文存储,如果出现了乱码,redis命令的登录命令加上 –raw
例如:./redis-cli –raw
2)查看某个地址的经纬度,建议用http://www.gpsspg.com/maps.htm

115.99956025097654
39.8807058838189
天门山森林公园

115.98857392285154
38.94226425604525
白洋淀景区

继续阅读redis学习(7)—操作geohash命令

yum update异常中断问题2

1、执行yum check命令
yum check报错

已加载插件:fastestmirror
32:bind-export-libs-9.11.4-26.P2.el7_9.5.x86_64 是 32:bind-export-libs-9.11.4-26.P2.el7_9.4.x86_64 的副本
7:device-mapper-1.02.170-6.el7_9.5.x86_64 是 7:device-mapper-1.02.170-6.el7_9.4.x86_64 的副本
7:device-mapper-libs-1.02.170-6.el7_9.5.x86_64 是 7:device-mapper-libs-1.02.170-6.el7_9.4.x86_64 的副本
firewalld-0.6.3-13.el7_9.noarch 是 firewalld-0.6.3-12.el7.noarch 的副本
firewalld-filesystem-0.6.3-13.el7_9.noarch 是 firewalld-filesystem-0.6.3-12.el7.noarch 的副本
glibc-common-2.17-323.el7_9.x86_64 有缺少的需求 glibc = ('0', '2.17', '323.el7_9')
glibc-common-2.17-324.el7_9.x86_64 是 glibc-common-2.17-323.el7_9.x86_64 的副本
glibc-devel-2.17-323.el7_9.x86_64 有缺少的需求 glibc = ('0', '2.17', '323.el7_9')
glibc-devel-2.17-324.el7_9.x86_64 是 glibc-devel-2.17-323.el7_9.x86_64 的副本
glibc-headers-2.17-323.el7_9.x86_64 有缺少的需求 glibc = ('0', '2.17', '323.el7_9')
glibc-headers-2.17-324.el7_9.x86_64 是 glibc-headers-2.17-323.el7_9.x86_64 的副本
kernel-headers-3.10.0-1160.25.1.el7.x86_64 是 kernel-headers-3.10.0-1160.24.1.el7.x86_64 的副本
kernel-tools-3.10.0-1160.25.1.el7.x86_64 是 kernel-tools-3.10.0-1160.24.1.el7.x86_64 的副本
kernel-tools-libs-3.10.0-1160.25.1.el7.x86_64 是 kernel-tools-libs-3.10.0-1160.24.1.el7.x86_64 的副本
kexec-tools-2.0.15-51.el7_9.2.x86_64 是 kexec-tools-2.0.15-51.el7_9.1.x86_64 的副本
libstdc++-4.8.5-44.el7.i686 有缺少的需求 ld-linux.so.2
libstdc++-4.8.5-44.el7.i686 有缺少的需求 ld-linux.so.2(GLIBC_2.3)
libstdc++-4.8.5-44.el7.i686 有缺少的需求 libc.so.6
libstdc++-4.8.5-44.el7.i686 有缺少的需求 libc.so.6(GLIBC_2.0)
libstdc++-4.8.5-44.el7.i686 有缺少的需求 libc.so.6(GLIBC_2.1)
libstdc++-4.8.5-44.el7.i686 有缺少的需求 libc.so.6(GLIBC_2.1.3)
libstdc++-4.8.5-44.el7.i686 有缺少的需求 libc.so.6(GLIBC_2.2)
libstdc++-4.8.5-44.el7.i686 有缺少的需求 libc.so.6(GLIBC_2.3)
libstdc++-4.8.5-44.el7.i686 有缺少的需求 libc.so.6(GLIBC_2.3.2)
libstdc++-4.8.5-44.el7.i686 有缺少的需求 libc.so.6(GLIBC_2.4)
libstdc++-4.8.5-44.el7.i686 有缺少的需求 libm.so.6
libstdc++-4.8.5-44.el7.i686 有缺少的需求 libm.so.6(GLIBC_2.0)
nss-3.53.1-7.el7_9.x86_64 是 nss-3.53.1-3.el7_9.x86_64 的副本
nss-softokn-freebl-3.53.1-6.el7_9.i686 有缺少的需求 libc.so.6
nss-softokn-freebl-3.53.1-6.el7_9.i686 有缺少的需求 libc.so.6(GLIBC_2.0)
nss-softokn-freebl-3.53.1-6.el7_9.i686 有缺少的需求 libc.so.6(GLIBC_2.1)
nss-softokn-freebl-3.53.1-6.el7_9.i686 有缺少的需求 libc.so.6(GLIBC_2.1.3)
nss-softokn-freebl-3.53.1-6.el7_9.i686 有缺少的需求 libc.so.6(GLIBC_2.3)
nss-softokn-freebl-3.53.1-6.el7_9.i686 有缺少的需求 libc.so.6(GLIBC_2.3.4)
nss-softokn-freebl-3.53.1-6.el7_9.i686 有缺少的需求 libc.so.6(GLIBC_2.4)
nss-softokn-freebl-3.53.1-6.el7_9.i686 有缺少的需求 libdl.so.2
nss-softokn-freebl-3.53.1-6.el7_9.i686 有缺少的需求 libdl.so.2(GLIBC_2.0)
nss-softokn-freebl-3.53.1-6.el7_9.i686 有缺少的需求 libdl.so.2(GLIBC_2.1)
nss-sysinit-3.53.1-7.el7_9.x86_64 是 nss-sysinit-3.53.1-3.el7_9.x86_64 的副本
nss-tools-3.53.1-7.el7_9.x86_64 是 nss-tools-3.53.1-3.el7_9.x86_64 的副本
openldap-2.4.44-23.el7_9.x86_64 是 openldap-2.4.44-22.el7.x86_64 的副本
python-firewall-0.6.3-13.el7_9.noarch 是 python-firewall-0.6.3-12.el7.noarch 的副本
python-perf-3.10.0-1160.25.1.el7.x86_64 是 python-perf-3.10.0-1160.24.1.el7.x86_64 的副本
错误:check all

继续阅读yum update异常中断问题2

博客迁移到CentOS8,升级PHP到7.4

1、httpd配置
httpd -t报错
AH00548: NameVirtualHost has no effect and will be removed in the next release /etc/httpd/conf/httpd.conf:360
AH00558: httpd: Could not reliably determine the server's fully qualified domain name, using 192.210.231.236. Set the 'ServerName' directive globally to suppress this message
Syntax OK

说明:
NameVirtualHost 这个已经废弃了,将其去掉就行了
第二个放着没问题

2、访问站点提示:此站点遇到了致命错误
需要打开WP_DEBUG为true,报错
Deprecated: load_plugin_textdomain was called with an argument that is deprecated since version 2.7.0 with no alternative available. in /home/live-in.org/wp-includes/functions.php on line 5155
试试安装php7.4

3、安装php7.4
安装最新epel
yum -y install https://dl.fedoraproject.org/pub/epel/epel-release-latest-8.noarch.rpm

安装remi源
yum -y install https://rpms.remirepo.net/enterprise/remi-release-8.rpm

列表查看php
dnf module list php

安装工具包
dnf install dnf-utils

安装php7.4
yum search php74*
yum install php74-php php74-php-bcmath php74-php-cli php74-php-common php74-php-devel php74-php-gd php74-php-mbstring php74-php-mysqlnd php74-php-pdo php74-php-pear php74-php-process php74-php-xml php74-php-xmlrpc

4、安装完php,发现页面可以打开但是functions.php错误提示还有,好像没关系,于是把WP_DEBUG恢复为false

参考资料:
https://www.cnblogs.com/alliancehacker/p/12255445.html

redis学习(6)—操作zset类型命令

1、什么是zset数据类型
zset是set的一个升级版本,它在set的基础上增加了一个顺序操作。
它和set一样,zset也是string类型元素的集合,且不允许重复的成员,不同的是每个元素都会关联一个double类型的score。
zset集合是通过哈希表实现的,所以添加、删除、查找的复杂度都是O(1)。
zset集合中最大的成员数为2的(32 – 1)次方(4294967295),每个集合可存储40多亿个成员。
zset最经典的应用场景就是排行榜。

继续阅读redis学习(6)—操作zset类型命令

redis学习(5)—操作set类型命令

1、什么是set数据类型
redis的set和java的set集合功能差不多。集合(set)的主要功能就是求交集、并集、差集。set集合是无序的,set集合不允许有重复的元素
例子:
A={‘a’,’b’,’c’}
B={‘a’,’e’,’i’,’o’,’u’}
交集
inter(x, y):交集,在集合x和集合y中都存在的元素
inter(A, B) = {‘a’}
并集
union(x, y):并集,在集合x中或集合y中的元素,如果一个元素在x和y中都出现,那只记录一次即可
union(A, B) = {‘a’,’b’,’c’,’e’,’i’,’o’,’u’}
差集
diff(x, y):差集,在集合x中而不在集合y中的元素
diff(A, B) = {‘b’,’c’}
基数
card(x):基数,一个集合中元素的数量
card(A) = 3
空集:基数为0的集合

继续阅读redis学习(5)—操作set类型命令

sftp使用证书登录

1、用户名密码登录方式
1)sftp root@192.168.12.218
2)输入密码

2、在当前登陆系统的用户家目录下创建sftp/keys子目录
mkdir ~/sftp/keys -p

3、使用ssh-keygen系统命令,在指定路径下生成以demo命名的公私钥对并设置私钥密码为12345678
ssh-keygen -P "12345678" -f ~/sftp/keys/demo_sftp

4、公钥格式转换,使用-e参数导出成为“RFC4716”标准格式秘钥
不同sftp工具导入的公钥格式不同(可选)
ssh-keygen -e -f ~/sftp/keys/demo_sftp.pub | tee ~/sftp/keys/demo_sftp.mod

继续阅读sftp使用证书登录

redis学习(4)—操作list类型命令

1、什么是list类型数据
list类型是一个双端链表的结构,容量是2的32次方减1个元素,即40多亿个
其主要功能有push、pop、获取元素等,一般应用在栈、队列、消息队列等场景

2、[LR]PUSH命令
以头插或尾插方式插入指定key队列中一个或多个元素
语法:[LR]PUSH key value1 [value2 …]
说明:L和R就是左和右,指从头还是从尾开始
例子:
lpush products 1 2 3

3、LRANGE命令
获取列表指定范围内的元素
语法:LRANGE key start stop
说明:start是开始位置从0开始,stop是结束位置,-1表示到链表结尾
例子:
lrange products 0 -1
1) “3”
2) “2”
3) “1”
可以看到读取时是先进后出,当成栈的结构读取

继续阅读redis学习(4)—操作list类型命令

docker学习(9)—docker-compose初探

先来看下docker-compose和命令方式的区别
在docker下运行一个redis,redis.conf文件和持久化目录保存在宿主机

一、使用命令方式部署
1、建立/home/redis/conf目录
mkdir -p /home/redis/conf
2、下载配置文件
cd /home/redis/conf
wget https://raw.githubusercontent.com/redis/redis/6.0/redis.conf

3、修改默认配置文件
#bind 127.0.0.1
protected-mode no
dir /data
appendonly yes
daemonize no #改为yes会使配置文件方式启动redis失败
pidfile /data/redis_6379.pid

4、建立/home/redis/data目录
mkdir -p /home/redis/data
5、执行部署命令
docker pull redis
docker run -itd -p 6379:6379 -v /home/redis/conf/redis.conf:/etc/redis/redis.conf -v /home/redis/data:/data --name myredis redis redis-server /etc/redis/redis.conf

二、使用docker-compose文件方式部署
1、建立目录
mkdir /home/myredis
2、建立文件

vi myredis.yml
version: "3.9"  # optional since v1.27.0
services:
  redis:
    image: redis
    container_name: myredis2
    ports:
      - 6379:6379
    volumes:
      - /home/redis/conf/redis.conf:/etc/redis/redis.conf
      - /home/redis/data:/data
    command: redis-server /etc/redis/redis.conf

3、执行部署命令
cd /home/myredis
docker-compose -f myredis.yml up

显示:
Creating myredis2 … done
Attaching to myredis2
myredis2 | 1:C 21 Jan 2021 09:14:28.547 # oO0OoO0OoO0Oo Redis is starting oO0OoO0OoO0Oo
myredis2 | 1:C 21 Jan 2021 09:14:28.547 # Redis version=6.0.10, bits=64, commit=00000000, modified=0, pid=1, just started
myredis2 | 1:C 21 Jan 2021 09:14:28.547 # Configuration loaded

三、小结
1、使用命令方式,命令没有记录,如果服务挂了,还要用命令重启
2、使用docker-compose方式实现同样的功能,由于有配置文件,管理起来更方便

参考资料:
https://redis.io/topics/config/
https://hub.docker.com/_/redis
https://www.cnblogs.com/xpengp/p/12713374.html