AMH面板部署小记

参考文档:https://amh.sh/doc.htm?amh_token=hrldsfpb

本系统为 AlmaLinux 10

自动安装脚本

export DV=N && wget [https://dl.amh.sh/amh.sh](https://dl.amh.sh/amh.sh) && bash amh.sh

安装后最佳实践

① 开启 SWAP

创建 3G swap 文件

sudo fallocate -l 3G /data/swapfile

设置权限 SWAP 文件权限

sudo chmod 600 /data/swapfile

格式化为 SWAP

sudo mkswap /data/swapfile

启用 SWAP

sudo swapon /data/swapfile

查看是否生效

swapon --show

设置开机自动挂载

echo '/data/swapfile none swap sw 0 0' | sudo tee -a /etc/fstab

刷新规则

sudo systemctl daemon-reload

降低 SWAPPINESS(物理 RAM 交换到 Swap 分区/文件的倾向程度)

1
2
3
4
sudo sysctl vm.swappiness=10
echo 'vm.swappiness=10' | sudo tee /etc/sysctl.d/99-swappiness.conf
sudo sysctl --system
sysctl vm.swappiness

禁用并删除 SWAP

1
2
3
sudo swapoff /data/swapfile
/data/swapfile none swap sw 0 0
sudo rm -f /data/swapfile

不经Android Studio安装Android SDK

前言

Windows 安装 Android SDK(非 Android Studio 方式)方便传输至移动硬盘携带。

准备手续

1、安装 JDK17

在安装 JDK17 后,配置环境变量 JAVA_HOME,使其指向 JDK 安装目录。

2、安装仅限命令行工具

前往 AS 官网,下载 commandlinetools 工具压缩包备用。

3、创建 Android SDK 目录

新建以下目录 nC:\Android\Sdk\cmdline-tools\latest\*将commandlinetools压缩包解压至*号处,键入sdkmanager.bat --version查看是否正常运行且获取目前可用的包。

4、下载并安装 SDK

1
2
sdkmanager.bat --proxy=http --proxy_host=127.0.0.1 --proxy_port=10769 --sdk_root=C:\Android\Sdk "build-tools;33.0.0" "platform-tools" "extras;google;usb_driver" "platforms;android-33" "emulator"
# proxy_port是HTTP代理端口 sdk_root最好是和cmdline-tools同级

5、查看状态

键入sdkmanager.bat --list --sdk_root=C:\Android\Sdk来获取 AS 已安装 SDK 清单

键入sdkmanager --version来获取 Android SDK Command-line Tools 版本来验证是否已经注册环境变量

键入adb --version来获取 Android SDK Platform-Tools 版本来验证是否已经注册环境变量

若无,请手动注册

1
2
3
4
5
6
ANDROID_HOME;C:\Android\Sdk

PATH;
%ANDROID_HOME%\platform-tools
%ANDROID_HOME%\emulator
%ANDROID_HOME%\cmdline-tools\latest\bin

搭建基础Hadoop2

前言

Hadoop 主要由以下 四大模块 构成:

1、HDFS(分布式文件系统)

2、MapReduce(计算系统)

3、YARN(调度系统)

4、Core(工具库)

安装与配置

Hadoop 安装需要 JDK 8 或 JDK 11

下载 Hadoop

1
2
3
4
5
6
7
8
echo 'export HADOOP_HOME=/opt/hadoop/' >> /etc/profile
echo 'export PATH=$PATH:$HADOOP_HOME/bin' >> /etc/profile
echo 'export PATH=$PATH:$HADOOP_HOME/sbin' >> /etc/profile
source /etc/profile

echo "export JAVA_HOME=/usr/java8" >> /opt/hadoop/etc/hadoop/yarn-env.sh
echo "export JAVA_HOME=/usr/java8" >> /opt/hadoop/etc/hadoop/hadoop-env.sh

验证 Hadoop 是否安装成功hadoop version

Hadoop 2.10.1

Subversion https://github.com/apache/hadoop -r 1827467c9a56f133025f28557bfc2c562d78e816

Compiled by centos on 2020-09-14T13:17Z

Compiled with protoc 2.5.0

From source with checksum 3114edef868f1f3824e7d0f68be03650

This command was run using /opt/hadoop/share/hadoop/common/hadoop-common-2.10.1.jar

修改 Hadoop 的配置文件

1
2
3
4
5
6
7
8
9
<property>
<name>hadoop.tmp.dir</name>
<value>file:/opt/hadoop/tmp</value>
<description>location to store temporary files</description>
</property>
<property>
<name>fs.defaultFS</name>
<value>hdfs://localhost:9000</value>
</property>

以及

1
2
3
4
5
6
7
8
9
10
11
12
<property>
<name>dfs.replication</name>
<value>1</value>
</property>
<property>
<name>dfs.namenode.name.dir</name>
<value>file:/opt/hadoop/tmp/dfs/name</value>
</property>
<property>
<name>dfs.datanode.data.dir</name>
<value>file:/opt/hadoop/tmp/dfs/data</value>
</property>

配置完毕可以直接进行 hadoop 预备格式化hadoop namenode -format

完成后直接键入start-dfs.sh以及start-yarn.sh启动

启动完毕后可以使用jps观察进程并访问 8088(YARN 管理界面) 和 50070(HDFS 管理界面)

注意

如果启动过程中需要输入密码提醒错误可能是没有创建秘钥链接 localhost

ssh-keygen -t rsa -b 位数得到 PUB 秘钥链接本机>> ~/.ssh/authorized_keys

不过需要确保 .SSH 权限防止入侵

Hexo版本升级指南

以下指令均在 Hexo 目录下操作,先定位到 Hexo 目录
查看当前版本,判断是否需要升级,非全局安装加 yarn
> hexo version

全局升级 hexo-cli

> npm i hexo-cli -g

再次查看版本,看 hexo-cli 是否升级成功

> npm list -g

安装 npm-check,若已安装可以跳过
> npm install -g npm-check

检查系统插件是否需要升级

> npm-check

安装 npm-upgrade,若已安装可以跳过

> npm install -g npm-upgrade

更新 package.json

> npm-upgrade

更新全局插件,注意 themes 主题样式

> npm update -g

更新系统插件

> npm update --save

最后再次查看版本,判断是否升级成功。

PL/SQL Developer相关

Q:ORA-00972 identifier is too long 标识符过长

注册环境变量 GBK 字符即可

Q:lnitialization error,Oracle Client 没有正确安装

没有安装 oracle 驱动

Q:无法初始化 oci.dll 你确认已经安装了 32 位 Oracle Client 吗?

前往官网 oci.dll 下载 32 位插件

Cockpit安装配置速记

安装

参考文档:https://cockpit-project.org/running.html

本系统为 AlmaLinux 9

1
2
3
4
5
6
7
#dnf或yum下载
sudo dnf install cockpit
#启用
sudo systemctl enable --now cockpit.socket
#若有防火墙请注意放行
sudo firewall-cmd --add-service=cockpit
sudo firewall-cmd --add-service=cockpit --permanent

创建用户

1
2
3
4
5
6
7
8
9
10
11
12
#新增子账号
sudo useradd -g root username
passwd username
#开启密码登录 PasswordAuthentication yes
vim /etc/ssh/sshd_config
#刷新sshd
systemctl restart sshd
#开启子账号sudo权限 [ 备选用 vim /etc/sudoers -> 刷新权限 chmod u-w /etc/sudoers ]
sudo visudo

root all=(all) all
username all=(all) all

Podman

使用 Podman 前先对服务器进行配置国内源

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
# 安装完毕后
vim /etc/containers/registries.conf

# unqualified-search-registries = ["registry.access.redhat.com", "registry.redhat.io", "docker.io"]
unqualified-search-registries = ["docker.io"]
[[registry]]
prefix = "docker.io"
insecure = false
blocked = false
location = "docker.m.daocloud.io"
[[registry.mirror]]
# 请填写自己的阿里云镜像服务地址
location = "xxx.mirror.aliyuncs.com"
[[registry.mirror]]
location = "docker.jianmuhub.com"
[[registry.mirror]]
location = "dockerhub.timeweb.cloud"
[[registry.mirror]]
location = "docker.hlyun.org"
[[registry.mirror]]
location = "huecker.io"
[[registry.mirror]]
location = "noohub.ru"

# 保存后刷新配置
podman info

最后也要记得刷新 Cockpit 里 Podman API Service 服务

podman info

环境

PHP 相关

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
# 安装 php 预先环境
sudo dnf install -y git gcc gcc-c++ make zlib-devel bzip2 bzip2-devel readline-devel libffi-devel openssl-devel libxml2 libxml2-devel sqlite sqlite-devel libcurl libcurl-devel libpng libpng-devel libjpeg libjpeg-devel icu libicu libicu-devel oniguruma oniguruma-devel tidy libtidy-devel libxslt libxslt-devel libzip libzip-devel
# 倘若部分无法安装可以尝试开启CRB (CodeReady Builder) 和EPEL (Extra Packages for Enterprise Linux) 仓库重试
dnf config-manager --set-enabled crb -y
sudo dnf install epel-release
git clone https://github.com/phpenv/phpenv.git /opt/phpenv
# 注册环境变量
export PHPENV_ROOT="/opt/phpenv"
export PATH="$PHPENV_ROOT/bin:$PATH"
eval "$(phpenv init -)"
source ~/.bashrc
# 重载bash
# 验证phpenv 正常显示system (set by /opt/phpenv/version)
phpenv version
# 安装 php-build 插件
git clone https://github.com/php-build/php-build $(phpenv root)/plugins/php-build
# 验证符合需求版本
phpenv install --list
# 正式安装 php
phpenv install 8.1.30
# [Info]: Done
# [Info]: The Log File is not empty, but the Build did not fail. Maybe just warnings got logged. You can review the log in /tmp/php-build.8.1.30.20241115003455.log or rebuild with '--verbose' option
# [Success]: Built 8.1.30 successfully.
phpenv versions
phpenv global 8.1.30
php -v
# PHP 8.1.30 (cli) (built: Nov 15 2024 17:42:32) (NTS)
# Copyright (c) The PHP Group
# Zend Engine v4.1.30, Copyright (c) Zend Technologies

# 正式安装 php-fpm 驱动

推荐应用

  • nginx-proxy-manager

https://hub.docker.com/r/jlesage/nginx-proxy-manager/tags

> podman pull jlesage/nginx-proxy-manager

在 Cockpit 里 Podman 容器,创建来自docker.io/jlesage/nginx-proxy-manager:latest 镜像包容器。

<font style="color:rgb(21, 21, 21);">> 端口:0.0.0.0:8080 → 8080/tcp 0.0.0.0:8181 → 8181/tcp</font>

<font style="color:rgb(21, 21, 21);">> 环境变量:TZ=Asia/Shanghai</font>

账号密码可以看日志:info Creating a new user: admin@example.com with password: changeme

  • nginx-ui

  • 文件管理器

https://github.com/45Drives/cockpit-navigator

1
2
3
4
5
nmcli con show        # 列出所有连接
nmcli con modify <connection-UUID> ipv4.dns "8.8.8.8 8.8.4.4"
nmcli con up <connection-UUID>
sudo systemctl restart NetworkManager
cat /etc/resolv.conf

在ARM64架构Linux上运行Android

使用鲲鹏内核 KBox 虚拟

安装 kbox 一键部署

> sudo apt install console-setup kbox

安装目标应用

sudo android-appmgr.sh install xxx.apk

查看应用列表

sudo android-appmgr.sh package-list

卸载目标应用

sudo android-appmgr.sh uninstall com.wandoujia.phoenix2

使用 AnBox 虚拟

安装 Anbox 驱动器

> sudo apt install anbox

安装 Anbox 内核模块

> git clone [https://github.com/anbox/anbox-modules.git](https://github.com/anbox/anbox-modules.git)

安装 dkms(默认已有)

> sudo apt install dkms

安装配置文件

> sudo cp anbox.conf /etc/modules-load.d/

> sudo cp 99-anbox.rules /lib/udev/rules.d/

软连接准备

> sudo cp -rT ashmem /usr/src/anbox-ashmem-1

> sudo cp -rT binder /usr/src/anbox-binder-1

使用 dkms 进行构建和安装

> sudo dkms install anbox-ashmem/1

> sudo dkms install anbox-binder/1

加载内核模块

> sudo modprobe ashmem_linux

> sudo modprobe binder_linux

查看安装状态

1
2
3
4
5
6
7
8
9
lsmod | grep -e ashmem_linux -e binder_linux

binder_linux 114688 62
ashmem_linux 20480 0

ls -alh /dev/binder /dev/ashmem

crw-rw-rw-1 root root 10, 53 7 16 18:15 /dev/ashmem
crw-rw-rw-1 root root 10, 53 7 16 18:15 /dev/binder

下载 Android 镜像

官方提供的 arm64 镜像不能正常启动,但可以使用别人已经编译好的
链接: https://pan.baidu.com/s/1QDaDtCi4MIMLbQyc-Ov0UA 提取码: w6av

链接: https://pan.baidu.com/s/1P-SZOl0TUoy3QXV9-UCo_A 密码: 4988
https://build.anbox.io/android-images/2017/06/12/android_1_armhf.img
https://build.anbox.io/android-images/2017/08/04/android_1_arm64.img
https://build.anbox.io/android-images/2018/07/19/android_amd64.img

也可使用 Ubuntu Touch 项目提供的 Anbox-images 镜像
https://cdimage.ubports.com/anbox-images/android-armhf-32binder.img
https://cdimage.ubports.com/anbox-images/android-armhf-64binder.img

下载完毕后复制镜像

> cp android.img /var/lib/anbox/android.img

启动 Anbox 容器管理器

> sudo service anbox-container-manager start

启动 Anbox Session 管理器

> anbox session-manager

查看 Anbox 容器管理器状态

> anbox session-manager

> anbox system-info

若无问题则可以启动 Anbox

> anbox launch --package=org.anbox.appmgr --component=org.anbox.appmgr.AppViewActivity

使用 Ueginer 虚拟(强化版 Anbox)

GitHub - gfdgd-xi/uengine-runner: 新版本 Deepin/UOS 发布后,可以在应用商店安装部分官方已适配的安卓应用,对爱好者来说,不能自己安装 APK 软件包始终差点意思,本程序可以为 Deepin/UOS 上的 UEngine 安卓运行环境安装自定义 APK 软件包,并能发送安装的 APK 包启动菜单到桌面或系统菜单。

使用 Waydroid 虚拟

Waydro

GitHub - gfdgd-xi/waydroid-runner: Waydroid 运行器是可以通过 GUI 形式半自动配置 Waydroid 的工具,使用户使用 Waydroid 更为方便。Waydroid 本身存在很多因 AOSP 未考虑 PC 用户而产生的问题(如没有自带 Houdini,默认英语,默认非小窗模式)而使用户使用起来非常难受,本运行器支持以 GUI 形式自动化安装以及配置 Waydroid,并会创建快捷控制的快捷方式,可以用于玩游戏/刷视频/Android 开发等。

使用 xDroid 虚拟

xDroid

国产适配化 xDroid

将php的session存放到redis

通常我们将 session 存储到 file 或者 memcached

现今异地结构一体化,通常许多人会将 session 存储在 redis 里面

准备:

PHP 8.2.16

Pecl_Redis 6.0.1

安装拓展:

1
2
3
4
5
6
7
8
wget https://pecl.php.net/package/redis/6.0.1
mv redis-6.0.1.tgz php-redis-6.0.1.tgz
tar -zxvf php-redis-6.0.1.tgz
mv redis-6.0.1 php-redis-6.0.1
cd php-redis-6.0.1
/usr/local/php/bin/phpize
./configure --with-php-config=/usr/local/php/bin/php-config
make && make install

修改 php.ini 文件:

`vim /etc/php.ini`

追加 redis 配置:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
extension = "/usr/local/php/lib/extensions/no-debug-non-zts-20220829/redis.so"

session.save_handler = redis # 默认的设置是file,这里改成redis

session.save_path = "tcp://192.168.2.11:6379?auth=passwd" # 这里填redis的连接配置参数
;session.save_path = "tcp://192.168.2.11:6379" # 如果redis不带密码,则使用这种配置

session.use_strict_mode = 0
session.use_cookies = 1
session.use_only_cookies = 1
session.name = PHPSESSID # 这个名字可以自己改
session.auto_start = 0
session.cookie_lifetime = 0
session.cookie_path = /
session.cookie_domain =
session.cookie_httponly =
session.serialize_handler = php
session.gc_probability = 1
session.gc_divisor = 1000
session.gc_maxlifetime = 1440
session.referer_check =
session.cache_limiter = nocache
session.cache_expire = 180
session.use_trans_sid = 0
session.hash_function = 0
session.hash_bits_per_character = 5

存储到 redis 里面的 keys 的名称是类似 PHPREDIS_SESSIONxxxxxxxxx ,我们只需要连接到 redis,并执行 keys PHPREDIS_SESSION* 即可列出全部的 sessionkeys.若存在则为成功。

keys PHPREDIS_SESSION* "PHPREDIS_SESSION:77fsmg64qqebooaotlue6050g7"

测试 php 脚本:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
<?php
// 启动会话
session_start();

// 配置 Redis 连接
$redis = new Redis();
$redis->connect('your_remote_redis_host', 6379); // 替换为你的远程 Redis 服务器地址和端口
$redis->auth('your_redis_password'); // 替换为你的 Redis 密码

// 配置 Redis 作为会话存储
ini_set('session.save_handler', 'redis');
// 替换为你的远程 Redis 服务器地址和端口
ini_set('session.save_path', 'tcp://your_remote_redis_host:6379');

// 尝试存储和获取会话数据
$_SESSION['test'] = 'Hello Redis';
echo $_SESSION['test'];

// 关闭 Redis 连接
$redis->close();

PHP局部开启Composer

正文

指定 PHP 版本下安装

curl -sS https://getcomposer.org/installer | /usr/local/php-你在使用的php版本号/bin/php

验证是否安装成功

/usr/local/php-你在使用的php版本号/bin/php composer.phar

进入项目根目录执行

/usr/local/php-你在使用的php版本号/bin/php composer.phar install

即开启并完成项目 composer

其他

Q:Your lock file does not contain a compatible set of packages.

原因在于 PHP 版本不对,不符合 composer.json 需要的版本,可以设置忽略版本匹配。

composer install --ignore-platform-reqs

或

composer update --ignore-platform-reqs

此外,也有可能是 composer 镜像源的问题

composer config -g repo.packagist composer https://mirrors.aliyun.com/composer/

CentOS7中编译PHP及开启JIT

实施过程

1、安装相关依赖

yum install libxml2 libxml2-devel openssl openssl-devel bzip2 bzip2-devel libcurl libcurl-devel libjpeg libjpeg-devel libpng libpng-devel freetype freetype-devel gmp gmp-devel libmcrypt libmcrypt-devel readline readline-devel libxslt libxslt-devel zlib zlib-devel glibc glibc-devel glib2 glib2-devel ncurses curl gdbm-devel db4-devel libXpm-devel libX11-devel gd-devel gmp-devel expat-devel xmlrpc-c xmlrpc-c-devel libicu-devel libmcrypt-devel libmemcached-devel

2、下载并解压

建议查看官网release 版本

wget https://www.php.net/distributions/php-8.0.30.tar.gz

tar -zxvf php-8.0.30.tar.gz

3、预编译

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
./configure \
--with-config-file-path=/usr/local/php80/etc \
--with-config-file-scan-dir=/usr/local/php80/etc/php.d \
--enable-fpm \
--with-fpm-user=www \
--with-fpm-group=www \
--with-curl \
--with-freetype-dir=/usr/local/freetype \
--enable-gd \
--enable-gd-jis-conv \
--with-gettext \
--with-iconv=/usr/local/libiconv \
--with-libxml-dir=/usr \
--with-kerberos \
--with-libdir=/usr/lib64 \
--with-mysqli \
--with-openssl \
--with-pcre-regex \
--enable-mysqlnd \
--with-mysqli=mysqlnd \
--enable-pdo \
--with-pdo-mysql \
--with-pdo-sqlite \
--with-pear \
--with-png-dir \
--with-jpeg-dir \
--with-xmlrpc \
--with-xsl \
--with-zlib \
--with-bz2 \
--with-mhash \
--with-password-argon2 \
--with-sodium=/usr/local \
--disable-rpath \
--disable-fileinfo \
--disable-debug \
--enable-intl \
--enable-exif \
--enable-ftp \
--enable-cli \
--enable-bcmath \
--enable-libxml \
--enable-inline-optimization \
--enable-mbregex \
--enable-mbstring \
--enable-opcache \
--enable-pcntl \
--enable-shmop \
--enable-soap \
--enable-sockets \
--enable-sysvsem \
--enable-sysvshm \
--enable-xml \
--enable-zip

如果看到以下提示信息,说明 configure 成功。

4、安装

sudo make && make install

到安装目录查看版本

/usr/local/php80/bin/php -v

5、编辑配置

复制 php.ini

cp php.ini-production /usr/local/php80/etc/php.ini

复制 php-fpm

cp /usr/local/php80/etc/php-fpm.conf.default /usr/local/php80/etc/php-fpm.conf

cp /usr/local/php80/etc/php-fpm.d/www.conf.default /usr/local/php80/etc/php-fpm.d/www.conf

修改 php-fpm 配置,在 php-fpm.conf 中开启 pid = run/php-fpm.pid 配置项

6、配置启动 php-fpm

复制 php-fpm 的启动脚本
cp sapi/fpm/init.d.php-fpm /etc/init.d/php-fpm

授权执行权限
chmod +x /etc/init.d/php-fpm

启动 php-fpm
/etc/init.d/php-fpm start 或者service php-fpm start

7、开启 openche 和 JIT

1
2
3
4
5
6
7
8
9
10
11
12
13
zend_extension=/usr/local/php80/lib/php/extensions/no-debug-non-zts-20231015/opcache.so

[opcache]
opcache.enable=1
opcache.enable_cli=1
opcache.memory_consumption=192
opcache.interned_strings_buffer=8
opcache.max_accelerated_files=4000

***

opcache.jit=1205
opcache.jit_buffer_size=64M

记录问题

Q: 编译时候出现错误,configure: error: Please reinstall the iconv library.

没有安装 iconv 库,iconv –version

iconv (GNU libiconv 1.17)

Copyright (C) 2000-2017 Free Software Foundation, Inc.

License GPLv3+: GNU GPL version 3 or later <http://gnu.org/licenses/gpl.html>

This is free software: you are free to change and redistribute it.

There is NO WARRANTY, to the extent permitted by law.

Written by Bruno Haible.

下载并编译

1
2
3
4
5
6
7
8
9
10
11
wget https://ftp.gnu.org/gnu/libiconv/libiconv-1.17.tar.gz
tar -zxvf libiconv-1.17.tar.gz
cd ./libiconv-1.17
./configure --prefix=/usr/local/libiconv --enable-static --enable-shared
#--prefix 参数表示安装目录,默认为 /usr/local;--enable-static 和 --enable-shared 参数表示编译时同时生成静态和动态库文件。
make
sudo make install
echo "/usr/local/lib" > /etc/ld.so.conf.d/libiconv.conf
echo "/usr/local/libiconv/lib" > /etc/ld.so.conf.d/libiconv.conf
sudo ldconfig -v
sudo ldconfig

若还是出现问题,建议先--without-iconv再后面 make 的时候

make ZEND_EXTRA_LIBS='-liconv'

Q: 编译时候出现错误,configure: error: Package requirements (libsodium >= 1.0.8) were not met:

libsodium 版本低了直接上yum install libsodium libsodium-devel解决

不行的话可以继续手动编译

1
2
3
4
5
6
wget https://github.com/jedisct1/libsodium/releases/download/1.0.18-RELEASE/libsodium-1.0.18.tar.gz
tar -zxvf libsodium-1.0.18.tar.gz
cd libsodium-1.0.18
./configure CC="gcc -m64" --prefix=/usr/local/libsodium --libdir=/usr/lib64
sudo make
sudo make install

Q: 提示 OpenSSL 找不到 / libssl.so.1.1: cannot open shared object file: No such file or directory:

请果断升级 openssl

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
wget https://www.openssl.org/source/openssl-1.1.1w.tar.gz
tar -xvf openssl-1.1.1w.tar.gz
cd openssl-1.1.1w
./config shared --openssldir=/usr/local/openssl --prefix=/usr/local/openssl
make && make install
echo "/usr/local/lib64/" >> /etc/ld.so.conf
ldconfig
openssl version
# 如果不行继续敲入
mv /usr/bin/openssl /usr/bin/openssl.old
mv /usr/lib/openssl /usr/lib/openssl.old
ln -s /usr/local/openssl/bin/openssl /usr/bin/openssl
ln -s /usr/local/openssl/include/openssl /usr/include/openssl
echo "/usr/local/openssl/lib" >> /etc/ld.so.conf
sudo ldconfig -v
sudo ldconfig
openssl version
# OpenSSL 1.1.1w 11 Sep 2023