分类目录归档:LINUX

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

博客迁移到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类型命令