分类目录归档:LINUX

博客迁移到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

docker学习(8)—docker-compose安装

1、安装docker

2、安装docker-compose
官方建议使用curl方式安装:
sudo curl -L "https://github.com/docker/compose/releases/download/1.27.4/docker-compose-$(uname -s)-$(uname -m)" -o /usr/local/bin/docker-compose
sudo chmod +x /usr/local/bin/docker-compose
sudo ln -s /usr/local/bin/docker-compose /usr/bin/docker-compose

3、查看版本
docker-compose --version
显示:
docker-compose version 1.27.4, build 40524192

4、卸载
sudo rm /usr/local/bin/docker-compose

继续阅读docker学习(8)—docker-compose安装

redis学习(3)—操作hash类型命令

1、什么是redis的hash数据结构
redis的hash数据结构,其实就是string的升级版,它把string数据结构的key/value,中的value类型升级为hash(和java中的hash一样)
Map<String, HashMap<String,String>> hash = new HashMap<String, HashMap<String,String>>();
也就是说value变成了一个hashmap

2、每个hash的存储大小:可以存储2的(32-1)次方的键值对(40多亿个)

3、存储java对象
key为对象名称,value为对象的<属性名称,属性的值>
只能存简单的pojo类,类属性都是string类型的

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

[转]wget/curl命令使用代理

国内机器跑分的时候,有些脚本下载不下来,这时候可以通过使用代理来下载

1、设置环境变量:
不带口令
export http_proxy=http://your-ip-address:port
export https_proxy=https://your-ip-address:port

带口令
export http_proxy=http://user:password@your-proxy-ip-address:port
export https_proxy=https://user:password@your-proxy-ip-address:port

2、取消代理
unset http_proxy
unset https_proxy

3、curl 使用命令行参数:[]内可选部分
protocol: http https socks5
curl -x '<[protocol://][user:password@]proxyhost[:port]>' url

4、wget 使用命令行参数:
wget --proxy=on --proxy-user "username" --proxy-password "password" url

5、wget 使用~/.wgetrc 优先级高于环境变量:
use_proxy = on
proxy_user=username
proxy_password=password
http_proxy = http://proxy.server.address:port/
https_proxy = http://proxy.server.address:port/

或者
use_proxy = on
http_proxy = http://username:password@proxy.server.address:port/
https_proxy = http://username:password@proxy.server.address:port/

6、wget 不使用代理命令行参数:
wget --no-proxy FILE_URL