Write the Code. Change the World.

1月 30

参考旧的文章,稍作修改

安装个 python

cd /usr/local/src/

wget https://www.python.org/ftp/python/3.9.15/Python-3.9.15.tgz

当前 php 最新版本 8.2.1

配置这里

./configure  --prefix=/alidata/service/php --with-config-file-path=/alidata/service/php/etc --with-config-file-scan-dir=/alidata/service/php/etc/php.d --with-fpm-user=nginx --with-fpm-group=nginx --with-curl --with-gettext --with-kerberos --with-libdir=lib64 --with-mysqli --with-openssl --with-external-pcre --with-pdo-mysql --with-pdo-sqlite --with-pear  --with-xsl --with-zlib --with-bz2 --with-mhash --with-ldap-sasl --enable-bcmath --with-libxml --enable-mbregex --enable-mbstring --enable-exif --enable-opcache --enable-pcntl --enable-shmop --enable-soap --enable-sockets --enable-sysvsem --enable-sysvshm --enable-xml --with-zip --enable-fpm --enable-gd --enable-pdo --enable-intl --enable-calendar --enable-static --enable-mysqlnd --with-jpeg=/usr/local/lib/jpeg --with-freetype=/usr/local/lib/freetype PKG_CONFIG_PATH=/usr/local/lib64/pkgconfig/

https://blog.vini123.com/681

https://blog.vini123.com/378

https://blog.vini123.com/303

处理错误

configure: error: Package requirements (oniguruma) were not met:

那就安装: https://blog.vini123.com/379

error: Package requirements (libzip >= 0.11 libzip != 1.3.1 libzip != 1.7.0) were not met:

php8 对 libzip有要求。编译安装 libzip 就可以。博客内已有说明。

致命错误:已杀死 signal terminated program cc1

阿里云安装程序时,出现这个是服务器内存太小。通过增加服务器的swap大小来处理。

解决方法

先重新配置 php,在编译时增加一项 --disable-fileinfo 。记住,这个很重要。

#获取要增加的2G的SWAP文件块
dd if=/dev/zero of=/swapfile bs=1k count=2048000
#创建SWAP文件
mkswap /swapfile 
#激活SWAP文件
swapon /swapfile   
#查看SWAP信息是否正确
swapon -s  
#添加到fstab文件中让系统引导时自动启动
echo "/var/swapfile swap swap defaults 0 0" >> /etc/fstab

删除交换区

swapfile文件的路径在/var/下,编译完后, 如果不想要交换分区了, 可以删除。

swapoff /swapfile
rm -rf /swapfile

参考

https://www.cnblogs.com/huojing/articles/15824136.html
https://www.jianshu.com/p/a4ad05a51456

1月 29

先更新yum并安装依赖

尽可能的安装最新版本。如果 yum 安装的不是最新版本,可以先卸载掉,再下载源码编译安装。yum 安装新包之前,可以先查看下该包是否是最新版本。编译安装后,可以 ls -l 建立软链接,下次有新包,可以再覆盖安装。

# 更新 yum 包
yum update

# 查看某个安装,比如 gcc。 它会显示是否存在该安装,该安装的版本,是否已经安装等信息。
yum list gcc

需要安装:

  1. gcc gcc-c++。它可以编译 C,C++,Ada,Object C和Java等语言。
  2. pcre pcre-devel。PCRE(Perl Compatible Regular Expressions) 是一个Perl库,包括 perl 兼容的正则表达式库。nginx 的 http 模块使用 pcre 来解析正则表达式,所以需要在 linux 上安装 pcre 库,pcre-devel 是使用 pcre 开发的一个二次开发库。
  3. nginx 使用 zlib 对 http 包的内容进行 gzip。可是,不是用 Brotli 么。两个都装,装了也没事。gzip 编译安装来个。如果不编译,使用 yum 安装,版本达不到要求。
  4. bbzip2 是一个基于Burrows-Wheeler 变换的无损压缩软件,压缩效果比传统的LZ77/LZ78压缩算法来得好。
yum install gcc gcc-c++

yum install pcre pcre-devel

yum install zlib zlib-devel

yum install bzip2

手动安装 openssl3

https://www.openssl.org/source/

当前最新版本是 openssl-3.0.7.tar

cd /usr/local/src/openssl

wget https://www.openssl.org/source/openssl-3.0.7.tar.gz

tar -xzvf openssl-3.0.7.tar.gz

mkdir /usr/local/openssl

cd openssl-3.0.7

# 指定安装路径为 /usr/local/openssl
./config --prefix=/usr/local/openssl

如果出现如下这样的报错信息,需要安装 perl-CPAN

This is perl 5, version 26, subversion 3 (v5.26.3) built for x86_64-linux-thread-multi
(with 57 registered patches, see perl -V for more detail)

Copyright 1987-2018, Larry Wall

Perl may be copied only under the terms of either the Artistic License or the
GNU General Public License, which may be found in the Perl 5 source kit.

Complete documentation for Perl, including FAQ lists, should be found on
this system using "man perl" or "perldoc perl".  If you have access to the
Internet, point your browser at http://www.perl.org/, the Perl Home Page.

安装 perl-CPAN

# 安装perl-CPAN
 yum install -y perl-CPAN
 # 进入CPAN的shell模式,不懂的,遇到确认就直接回车(3+1次),一切默认
 # 过程可能有点慢,需要下载相关依赖,耐心等待执行结果
 perl -MCPAN -e shell
 # 出现 cpan[1]> 提示,输入下边命令继续,时间会有点久
 install IPC/Cmd.pm
 # 出现 cpan[2]>提示,输入 exit 退出
 exit

再重新执行

./config --prefix=/usr/local/openssl

然后,你会发现出现 OpenSSL has been successfully configured 的提示。如果中间环节有问题,请查找解决。

编译安装(这个环节有点久)

make && make install

# 安装完成后,进入 bin 目录
cd /usr/local/openssl/bin
# 查看版本号(发现会报错)
./openssl version

报错如下:

./openssl: error while loading shared libraries: libssl.so.3: cannot open shared object file: No such file or directory

libssl.so.3文件在/usr/local/openssl/lib64目录下面,需要配置到共享库中:

vim /etc/ld.so.conf
# 换行尾部添加
/usr/local/openssl/lib64

# 保存退出,执行下边命令使生效
ldconfig

建立软链接

ln -s /usr/local/openssl/bin/openssl /usr/bin/openssls

# 查看版本号
openssl3 version 

安装 cmake

https://blog.vini123.com/289

当前最新版本 https://github.com/Kitware/CMake/releases/download/v3.25.2/cmake-3.25.2-linux-x86_64.tar.gz

编译安装 zlib (可以先 yum,如果版本不合适,再回来编译按装)

https://blog.vini123.com/299

编译安装zlib2 (可以先 yum,如果版本不合适,再回来编译按装)

https://blog.vini123.com/300

编译安装 libzip (可以先 yum,如果版本不合适,再回来编译按装)

这里还是编译安装吧。php8 对 libzip 要求有点特殊。

https://blog.vini123.com/290

安装 ngx_brotli

https://blog.vini123.com/302

cd /tmp
git clone https://github.com/google/ngx_brotli.git
cd /tmp/ngx_brotli/deps
rm -rf brotli
git clone https://github.com/google/brotli.git
cd /tmp/ngx_brotli
git submodule update --init

方法一: 重新编译
通过nginx -V查看原有的编译参数,在编译的时候通过--add-module=把模块编译进去。
比如:

./configure [nginx -V 原有的configure arguments] --add-module=/tmp/ngx_brotli
make && make install

方法二:动态编译

./configure --with-compat --add-dynamic-module=/tmp/ngx_brotli
make modules

https://blog.csdn.net/zyy247796143/article/details/125539223
https://juejin.cn/post/7060352308718075935

安装 nginx more_clear_headers 模块

https://github.com/openresty/headers-more-nginx-module/tags

https://github.com/openresty/headers-more-nginx-module

https://blog.vini123.com/385

安装 nginx

最终的配置,上边做的那么多就是为了这个。

./configure --user=nginx --group=nginx --prefix=/alidata/service/nginx --pid-path=/alidata/service/nginx/run/nginx.pid --with-http_stub_status_module --with-threads --with-file-aio --with-pcre-jit --with-http_ssl_module --with-http_v2_module --with-http_gzip_static_module --with-http_sub_module --with-http_flv_module --with-http_mp4_module --with-http_gunzip_module --with-http_realip_module --with-http_addition_module --with-stream --with-stream_ssl_module --with-stream_ssl_preread_module --with-stream_realip_module --with-http_slice_module --with-pcre --with-openssl=/usr/local/src/default/openssl-3.0.8 --with-openssl-opt=enable-tls1_3 --add-module=/usr/local/src/nginx/ngx_brotli --add-module=/usr/local/src/nginx/headers-more-nginx-module-0.34

https://blog.vini123.com/298

1月 29

设置主机名一是为了好看,二是方便多台服务器之间好区分。禁用 ssh 使用 root 用户登录,而是使用秘钥登录是增加安全性。

设置主机名

禁用root用户登录,使用公钥和密码一起登录

ssh 连接长时间不操作自动断开的处理

服务端处理

vim /etc/ssh/sshd_config

# 添加 (意思是向客户端每60秒发一次保持连接的信号)
ClientAliveInterval  60

# 添加 (意思是如果客户端60次未响应就断开连接,依据你期望的时间来设定)
ClientAliveCountMax  60

# 重启
systemctl restart sshd

注意

每一个步骤最好去验证一下。验证通过后,对一些阶段性的设置安装进行镜像备份。走一点备份一点。也记得删除之前的镜像。

1月 29

由于 Yum 中许多长期存在的问题仍未得到解决,因此 Yum 包管理器 已被 DNF 包管理器 取代。这些问题包括性能差、内存占用过多、依赖解析速度变慢等。

DNF 使用 libsolv 进行依赖解析,由 SUSE 开发和维护,旨在提高性能。

Yum 主要是用 Python 编写的,它有自己的应对依赖解析的方法。它的 API 没有完整的文档,它的扩展系统只允许 Python 插件。

Yum 是 RPM 的前端工具,它管理依赖关系和资源库,然后使用 RPM 来安装、下载和删除包。

为什么他们要建立一个新的工具,而不是修复现有的问题呢?

Ales Kozamblak 解释说,这个修复在技术上是不可行的,而且 Yum 团队还没有准备好立即接受修改。

另外,最大的挑战是,Yum 有 56000 行代码,但 DNF 只有 29000 行代码。

所以除了分叉,没有办法解决。

不过 Yum 的运行情况还算可以。

编号 DNF(Dandified YUM) YUM(Yellowdog Updater, Modified)
1 DNF 使用 libsolv 来解析依赖关系,由 SUSE 开发和维护 YUM 使用公开的 API 来解析依赖关系
2 API 有完整的文档 API 没有完整的文档
3 由 C、C++、Python 编写的 只用 Python 编写
4 DNF 目前在 Fedora、RHEL 8、CentOS 8、OEL 8 和 Mageia 6/7 中使用 YUM 目前在 RHEL 6/7、CentOS 6/7、OEL 6/7 中使用
5 DNF 支持各种扩展 Yum 只支持基于 Python 的扩展
6 API 有良好的文档,因此很容易创建新的功能 因为 API 没有正确的文档化,所以创建新功能非常困难
7 DNF 在同步存储库的元数据时,使用的内存较少 在同步存储库的元数据时,YUM 使用了过多的内存
8 DNF 使用满足性算法来解决依赖关系解析(它是用字典的方法来存储和检索包和依赖信息) 由于使用公开 API 的原因,Yum 依赖性解析变得迟钝
9 从内存使用量和版本库元数据的依赖性解析来看,性能都不错 总的来说,在很多因素的影响下,表现不佳
10 DNF 更新:在 DNF 更新过程中,如果包中包含不相关的依赖,则不会更新 YUM 将在没有验证的情况下更新软件包
11 如果启用的存储库没有响应,DNF 将跳过它,并继续使用可用的存储库处理事务 如果有存储库不可用,YUM 会立即停止
12 dnf updatednf upgrade 是等价的 在 Yum 中则不同
13 安装包的依赖关系不更新 Yum 为这种行为提供了一个选项
14 清理删除的包:当删除一个包时,DNF 会自动删除任何没有被用户明确安装的依赖包 Yum 不会这样做
15 存储库缓存更新计划:默认情况下,系统启动后 10 分钟后,DNF 每小时会对配置的存储库检查一次更新。这个动作由系统定时器单元 dnf-makecache.timer 控制 Yum 也会这样做
16 内核包不受 DNF 保护。不像 Yum,你可以删除所有的内核包,包括运行中的内核包 Yum 不允许你删除运行中的内核
17 libsolv:用于解包和读取资源库。hawkey: 为 libsolv 提供简化的 C 和 Python API 库。librepo: 提供 C 和 Python(类似 libcURL)API 的库,用于下载 Linux 存储库元数据和软件包。libcomps: 是 yum.comps 库的替代品。它是用纯 C 语言编写的库,有 Python 2 和 Python 3 的绑定。 Yum 不使用单独的库来执行这些功能
18 DNF 包含 29000 行代码 Yum 包含 56000 行代码
19 DNF 由 Ales Kozumplik 开发 YUM 由 Zdenek Pavlas、Jan Silhan 和团队成员开发

文章来源

https://linux.cn/article-12161-1.html

相关文章

https://blog.csdn.net/xaosky/article/details/123034396

1月 29

想做一个完整的项目。服务器是不可缺少的一部分。服务器选什么环境呢,用的比较多的是 centos 和 ubuntu。阿里云基于龙蜥操作系统(Anolis OS)打造的阿里云第三代发行版操作系统 Alibaba Cloud Linux 3(以下简称 Alinux 3) 的 CIS 安全基线(Alinux 3 CIS benchmark v1.0.0 版本)正式完成了 CIS 认证。 Alinux 3 全面兼容 RHEL / CentOS 8 生态。随着 CentOS 8 的停服,使用 Alibaba Cloud Linux 3 来替代 CentOS 也成为部分企业的选择。这里就用 Alibaba Cloud Linux 3 吧。

选配购买好服务器后。在阿里云控制台设置好密码和常用安全组,就可以通过 ssh 进入操作系统了。

常规操作

https://help.aliyun.com/document_detail/416274.html

# 安全更新提醒
dnf upgrade-minimal --security

# 查看服务器环境
lsb_release -a

# 结果如下
LSB Version:    :core-4.1-amd64:core-4.1-noarch
Distributor ID: AlibabaCloud
Description:    Alibaba Cloud Linux release 3 (Soaring Falcon)
Release:    3
Codename:   SoaringFalcon

# 更新 yum 源
yum update

Alibaba Cloud Linux release 3 中 yum 指向了 dnf-3

dnf 和 yun 的区别

相关文章

https://zhuanlan.zhihu.com/p/438572784

https://baijiahao.baidu.com/s?id=1725178032789531647&wfr=spider&for=pc

1月 13

Alt + Enter 导入包,自动修正

Command + N 查找类

Command + Shift + N查找文件

Command + Alt + L格式化代码

Command + Alt + O优化导入的类和包

Ctrl +Enter生成代码

Command + E打开最近更改的代码

Command + R替换

Command + F查找

Alt + Shift + C 对比最近修改代码

Shift + F6 重构、重命名

Command + Y删除行

Command + D 复制行

Command + J 自动代码

Alt + F1快速打开隐藏工具面板

Alt + Command + 左右键 快速回到上次修改的地方

Command + 左右键 快速至行尾、行首

Control + 上下键 方法间快速移动定位

Shift + Command + 上下键 代码向上下移动

F2 快速定位并高亮错误或警告

Command + W 选中代码,连续按有不同效果

选中文本后,Alt + F3,逐个查找相同文本

Command + B 打开光标处的方法或者类

1月 07

下载地址

https://www.jetbrains.com.cn/idea/download/other.html

IDEA的ultimate(最终版)与community(社区版)的区别

https://blog.csdn.net/blbyu/article/details/118201500

IDEA 全称 IntelliJ IDEA,是java编程语言的集成开发环境。
- community(社区版):免费的IntelliJ IDEA community版本是基于开源代码构建的,可以用于纯JVM 和 Android 开发,拥有大部分开发中所需要的功能,但是不能够提供前端css和js的技术支持。
- ultimate(最终版):付费的 IntelliJ IDEA ultimate版本可以支持web端和企业端的开发使用,能支持众多前端和后端框架和技术,可以提供分析和数据库工具、HTTP客户端,允许免费使用30天(①购买正版;②可每30天卸载重新安装哦;)

破解尝试

https://www.hereitis.cn/articleDetails/867

https://www.hereitis.cn/soft/intellijidea

1月 02

eclipse 和 maven

https://maven.apache.org/download.cgi

打开页面,选择对应的版本下载。这里 apache-maven-3.8.7-bin.zip

下载好后,打开 eclipse, 打开 Window → Preferences → Maven → Installations,点击 Add,将刚才下载的 maven 配置进去就可以。因为从零开始,啥都喜欢用最新的。

再来配置 Window → Preferences → Maven → User Settings

/Users/vini123/Java/eclipse/apache-maven-3.8.7/conf/settings.xml

参考

代码补全提示

https://cloud.tencent.com/developer/article/1795246

安装 PropertiesEditor

https://blog.csdn.net/sayyy/article/details/104780196