分类目录归档:LINUX

CentOS8升级到RockyLinux

1、CentOS8官方更新源都关闭了,导致yum、dnf命令用不了。本来想升级到CentOS Stream 8,更新源不能用,安装不了centos-stream-repos包,而不安装centos-stream-repos又升级不了CentOS Stream,陷入死循环。。。

2、于是转投RockyLinux,在用脚本升级到RockyLinux看到还保留了一个地址:
https://dl.rockylinux.org/vault/centos/8.5.2111/
可以从这里安装需要的软件包,从而可以正常升级到CentOS Stream 8

3、升级RockyLinux脚本下载地址:
https://github.com/rocky-linux/rocky-tools/tree/main/migrate2rocky

4、CentOS Vault
https://vault.centos.org

yum update排除指定包

今天更新系统时报错:


Error: Package: 1:nginx-mod-http-perl-1.20.1-9.el7.x86_64 (@epel)
           Requires: nginx(abi) = 1.20.1
           Removing: 1:nginx-1.20.1-9.el7.x86_64 (@epel)
               nginx(abi) = 1.20.1
           Updated By: 1:nginx-1.20.2-1.el7.ngx.x86_64 (nginx)
               Not found
Error: Package: 1:nginx-mod-stream-1.20.1-9.el7.x86_64 (@epel)
           Requires: nginx(abi) = 1.20.1
           Removing: 1:nginx-1.20.1-9.el7.x86_64 (@epel)
               nginx(abi) = 1.20.1
           Updated By: 1:nginx-1.20.2-1.el7.ngx.x86_64 (nginx)
               Not found
Error: Package: 1:nginx-mod-mail-1.20.1-9.el7.x86_64 (@epel)
           Requires: nginx(abi) = 1.20.1
           Removing: 1:nginx-1.20.1-9.el7.x86_64 (@epel)
               nginx(abi) = 1.20.1
           Updated By: 1:nginx-1.20.2-1.el7.ngx.x86_64 (nginx)
               Not found
Error: Package: 1:nginx-mod-http-image-filter-1.20.1-9.el7.x86_64 (@epel)
           Requires: nginx(abi) = 1.20.1
           Removing: 1:nginx-1.20.1-9.el7.x86_64 (@epel)
               nginx(abi) = 1.20.1
           Updated By: 1:nginx-1.20.2-1.el7.ngx.x86_64 (nginx)
               Not found
Error: Package: 1:nginx-mod-http-xslt-filter-1.20.1-9.el7.x86_64 (@epel)
           Requires: nginx(abi) = 1.20.1
           Removing: 1:nginx-1.20.1-9.el7.x86_64 (@epel)
               nginx(abi) = 1.20.1
           Updated By: 1:nginx-1.20.2-1.el7.ngx.x86_64 (nginx)
               Not found
 You could try using --skip-broken to work around the problem
 You could try running: rpm -Va --nofiles --nodigest

感觉是epel源和nginx源有冲突,所以可以更新时先排除nginx这个软件包

yum update -x {package-name}

CentOS7 安装nginx

1、依赖包
yum install gcc gcc-c++ autoconf automake make pcre pcre-devel zlib zlib-devel

2、编译
下载nginx源代码包,解压后编译
./configure --prefix=/appserver/nginx
make && make install

3、建立配置文件


cd /appserver/nginx
mkdir include
vi proxy.conf

输入:

upstream proxy_tomcat {
        server 192.168.52.9:8080;
}
server {
        location /tomcat/ {
        proxy_pass http://proxy_tomcat/;
        proxy_redirect off;
        proxy_set_header Host $host;
        proxy_set_header X-Real-IP $remote_addr;
        proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
        client_max_body_size 10m;
        client_body_buffer_size 128k;
        proxy_connect_timeout 300;
        proxy_send_timeout 300;
        proxy_read_timeout 300;
        proxy_buffer_size 4k;
        proxy_buffers 4 32k;
        proxy_busy_buffers_size 64k;
        proxy_temp_file_write_size 64k;
        }
        location /okfep/ {
        proxy_pass http://proxy_tomcat/okfep;
        proxy_redirect off;
        proxy_set_header Host $host;
        proxy_set_header X-Real-IP $remote_addr;
        proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
        client_max_body_size 10m;
        client_body_buffer_size 128k;
        proxy_connect_timeout 300;
        proxy_send_timeout 300;
        proxy_read_timeout 300;
        proxy_buffer_size 4k;
        proxy_buffers 4 32k;
        proxy_busy_buffers_size 64k;
        proxy_temp_file_write_size 64k;
        }

}

4、nginx.conf添加include


http {

    include       ../include/*.conf;

    include       mime.types;
    default_type  application/octet-stream;
......
}

5、nginx.conf修改nginx启动用户


......
user  root;
worker_processes  1;
......

docker学习(11)—使用docker安装rabbitmq 3.8

1、镜像的区别
management:带管理页面的
alpine:基于Alpine Linux制作的镜像
所以我们要选择带管理页面的版本

2、拉取镜像
docker pull rabbitmq:3.8-management

3、启动命令
建立配置目录、数据目录、日志目录
mkdir -p /data/rabbitmq/etc
mkdir -p /data/rabbitmq/lib
mkdir -p /data/rabbitmq/log

设置权限
chmod 777 /data/rabbitmq/etc
chmod 777 /data/rabbitmq/lib
chmod 777 /data/rabbitmq/log

否则容器启动报错:
touch: cannot touch '/etc/rabbitmq/rabbitmq.conf': Permission denied

继续阅读docker学习(11)—使用docker安装rabbitmq 3.8

redis学习(10)—redis哈希槽扩容与缩小

1、将节点重新加入集群
6387为主节点,6388为从节点
步骤看上一篇

2、重新分配槽号
redis-cli --cluster reshard 192.168.1.138:6381
说明:
ip:port:为集群中任意一个节点就行
步骤一:

>>> Performing Cluster Check (using node 192.168.1.138:6381)
M: c790b5f9584777ba8d9f96be5fe42b2efe646635 192.168.1.138:6381
   slots:[0-5460] (5461 slots) master
   1 additional replica(s)
S: 7599539245821b1a2e185439f3170b896b287106 192.168.1.138:6388
   slots: (0 slots) slave
   replicates ca77bc2a223c64a7af727b24172ae8f43d3e9b5a
S: b264b25c716863096d0c2fe39483130cbfeba894 192.168.1.138:6385
   slots: (0 slots) slave
   replicates f9200d36046d8325817c8014155e8f9950760da4
S: 33add5fdf6d9cc3eb8656c865403a34b237b4b73 192.168.1.138:6384
   slots: (0 slots) slave
   replicates 691e5855e8f274a6ea61dc95dbed89da87ed6053
S: d7bbc7bb0b501b421d527f6c302a8abe00aa535b 192.168.1.138:6386
   slots: (0 slots) slave
   replicates c790b5f9584777ba8d9f96be5fe42b2efe646635
M: f9200d36046d8325817c8014155e8f9950760da4 192.168.1.138:6383
   slots:[10923-16383] (5461 slots) master
   1 additional replica(s)
M: ca77bc2a223c64a7af727b24172ae8f43d3e9b5a 192.168.1.138:6387
   slots: (0 slots) master
   1 additional replica(s)
M: 691e5855e8f274a6ea61dc95dbed89da87ed6053 192.168.1.138:6382
   slots:[5461-10922] (5462 slots) master
   1 additional replica(s)
[OK] All nodes agree about slots configuration.
>>> Check for open slots...
>>> Check slots coverage...
[OK] All 16384 slots covered.
How many slots do you want to move (from 1 to 16384)? 4096

继续阅读redis学习(10)—redis哈希槽扩容与缩小

redis学习(9)—redis集群扩容与缩小

1、准备
回顾,上一篇把6381变成fail,6386变成master
还原:6381重新变成了master,6386变成了slave
docker stop redis-node-6
docker start redis-node-6

2、查看集群信息
登录进容器
redis-cli --cluster check 192.168.1.138:6381

3、增加2台redis节点
mkdir -p /data/redis/share/redis-node-7
mkdir -p /data/redis/share/redis-node-8
docker create --name redis-node-7 --net host --privileged=true -v /data/redis/share/redis-node-7:/data redis:5.0.7 --cluster-enabled yes --appendonly yes --port 6387
docker create --name redis-node-8 --net host --privileged=true -v /data/redis/share/redis-node-8:/data redis:5.0.7 --cluster-enabled yes --appendonly yes --port 6388

继续阅读redis学习(9)—redis集群扩容与缩小

redis学习(8)—redis集群主从切换

集群环境为3主3从,安装参考《使用docker安装redis集群》

1、客户端验证
192.168.1.138:6381> set user:100 agan
-> Redirected to slot [9308] located at 192.168.1.138:6382
OK
192.168.1.138:6382> set user:200 alex
-> Redirected to slot [15628] located at 192.168.1.138:6383
OK
192.168.1.138:6383>

说明:
第一次执行,落到了第9308个槽号,节点是192.168.1.138:6381
第二次执行,落到了第15628个槽号,节点是192.168.1.138:6382
在集群环境里面,首先会去找槽号,然后再去找ip地址
并且执行完一个后,会轮询到下一个主节点

继续阅读redis学习(8)—redis集群主从切换

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