CrntOS7.9源码安装nginx,mysql9.7.1,jdk21
CrntOS7.9源码安装nginxmysql9.7.1jdk21访问服务器//ssh userNameip ssh root47.97.9.202安装PCRE开发库sudo yum install -y pcre pcre-devel zlib zlib-devel openssl openssl-devel gcc makenginxwget nginx版本下载链接 //创建文件夹 mkdir /usr/java //将包移入文件夹中 mv 包名称 //转换到该文件夹下 cd /usr/java //查看文件夹内容 ls //解压包 tar -zxf 包名称 //准换到nginx文件夹下 cd 加压后的文件夹名称 //配置 nginx ./configure //编译安装 makemake install //转换到sbin文件夹下 cd /usr/local/nginx/sbin //运行nginx ./nginx //查看结果 curl http://localhost:80 //将nginx添加到环境中 echo export PATH$PATH:/usr/local/nginx/sbin ~/.bashrc source ~/.bashrc //等当前请求处理完后推出nginx nginx -s quit //立即退出 nginx -s stop防火墙管理工具firewalld//启动防火墙管理工具firewalld sudo systemctl start firewalld //开机自启 sudo systemctl enable firewalld //确认状态 sudo systemctl stauts firewalld //查看当前开放的端口 sudo firewall-cmd --list-ports //开放80端口永久 sudo firewall-cmd --permanet --add-port80/tcp //重新加载使规则生效 sudo firewall-cmd --reload //关闭端口 sudo firewall-cmd --permanent --remove-port80/tcpMYSQL9.7.1yum换源//备份原始配置文件 sudo cp /etc/yum.repos.d/CentOS-SCLo-scl-rh.repo /etc/yum.repos.d/CentOS-SCLo-scl-rh.repo.bak //编辑配置文件 sudo vi /etc/yum.repos.d/CentOS-SCLo-scl-rh.repo //替换源地址 [centos-sclo-rh] nameCentOS-7 - SCLo rh #mirrorlisthttp://mirrorlist.centos.org?arch$basearchrelease7reposclo-rh baseurlhttps://mirrors.aliyun.com/centos/7/sclo/$basearch/rh/ gpgcheck1 enabled1 gpgkeyfile:///etc/pki/rpm-gpg/RPM-GPG-KEY-CentOS-SIG-SCLo //为CentOS-SCLo-scl.repo执行相同操作 //清理并重建yum缓存 sudo yum clean all sudo yum makecache安装scl高版本软件包管理核心工具//安装scl源 sudo yum install -y centos-release-scl scl-utils //清理并重建YUM缓存 sudo yum clean all yum makecache下载mysql9.7.1wget https://cdn.mysql.com/Downloads/MySQL-9.7/mysql-9.7.1.tar.gz //解压安装包 tar -zxvf mysql-9.7.1.tar.gz cd mysql-9.7.1 //创建用于编译的文件夹 cd /usr/local/src/mysql-9.7.1 mkdir build cd build安装gcc12//安装Copr插件并启用第三方源 sudo yum install -y yum-plugin-copr //启用由mlampe维护的devtoolset-12仓库 sudo yum copr enable mlampe/devtoolset-12 //安装gcc12编译器 sudo yum install -y devtoolset-12-gcc devtoolset-12-gcc-c //激活gcc12环境 scl enable devtoolset-12 bash //验证版本 gcc --version安装CMake3.28.3cd /usr/local/src // 下载官方预编译包 wget https://github.com/Kitware/CMake/releases/download/v3.28.3/cmake-3.28.3-linux-x86_64.tar.gz // 解压 tar xf cmake-3.28.3-linux-x86_64.tar.gz -C /usr/local/ // 建软链接 ln -sf /usr/local/cmake-3.28.3-linux-x86_64/bin/cmake /usr/local/bin/cmake ln -sf /usr/local/cmake-3.28.3-linux-x86_64/bin/cmake /usr/local/bin/cmake3 // 验证 cmake --version安装libscurl-devel(可以选择不安装在cmake时加一行-DWITH_CURL0)//libcurl-devel 开发包 //包含头文件 (*.h)、静态库、cmake/pkgconfig 配置文件编译代码时才需要。 yum install -y libcurl-devel编译安装openssl 1.1.1//CentOS 7.9 的 OpenSSL 太老了1.0.2缺少 openssl/kdf.h这个头文件 OpenSSL 1.1.0 才有。MySQL 9.7 需要 OpenSSL 1.1.1 cd /usr/local/src // 下载 OpenSSL 1.1.1 wget https://www.openssl.org/source/openssl-1.1.1w.tar.gz tar xf openssl-1.1.1w.tar.gz cd openssl-1.1.1w // 编译安装到 /usr/local/openssl-1.1.1 ./config --prefix/usr/local/openssl-1.1.1 --openssldir/usr/local/openssl-1.1.1 shared make -j2或者 make -j$(nproc) //使用所有 CPU 核心并行编译最大化编译速度 make install //配置动态链接库 echo /usr/local/openssl-1.1.1/lib /etc/ld.so.conf.d/openssl-1.1.1.conf ldconfig // 验证 /usr/local/openssl-1.1.1/bin/openssl version安装patchlf工具Linux 下专门直接修改已编译好的 ELF 二进制程序 /.so动态库 的工具yum install -y patchelf安装openldap-devel cyrus-sasl-devel 不安装的话会有一个警告不会影响后续编译想消除警告删除即可yum install -y openldap-devel cyrus-sasl-devel在创建好的编译目录build中执行cmakecd /usr/local/src/mysql-9.7.1/build //记得激活gcc12环境 cmake .. \ -DCMAKE_BUILD_TYPERelease \ -DWITH_DEBUGOFF -DWITH_UNIT_TESTSOFF \ -DWITH_ROUTEROFF \ -DPLUGIN_ARCHIVENO -DPLUGIN_BLACKHOLENO \ -DPLUGIN_FEDERATEDNO -DPLUGIN_EXAMPLENO \ -DWITH_SSL/usr/local/openssl-1.1.1 \ -DWITH_CURLsystem \ -DCMAKE_C_COMPILER/opt/rh/devtoolset-12/root/usr/bin/gcc \ -DCMAKE_CXX_COMPILER/opt/rh/devtoolset-12/root/usr/bin/g创建4gSwap交换分区在编译大型软件如 MySQL时如果物理内存不足编译器如cc1plus极易因内存溢出OOM被系统强制终止。创建 Swap 交换分区是解决此问题的有效方法。//创建4gSwap文件 sudo dd if/dev/zero of/swapfile bs1M count4096 //设置文件权限 sudo chmod 600 /swapfile //格式化为Swap格式 sudo mkswap /swapfile //激活Swap sudo swapon /swapfile //验证是否生效 free -h //输出的 Swap 行中可以看到 4.0G 的总量。MySQL 9.7.1 源码中使用了std::stringstream::view()和std::string::view()这两个方法是C23才引入的libstdc 13 才支持而我们使用的是GCC 12标准库中没有这两个方法。//在源码目录执行以下 Python 脚本自动扫描并修复所有 .view() 调用 //在 C 中std::stringstream 和 std::string 是两个完全不同的类。要判断一个 stringstream 是否为空不能直接调用 .empty()而应该检查其内部缓冲区的字符串是否为空。 //需要将 user.empty() 修改为 user.str().empty()。 cd /usr/local/src/mysql-9.7.1 python3 PYEOF import os, re src_dir /usr/local/src/mysql-9.7.1 fixed_files [] # 变量名中包含这些关键词的判定为 stringstream 类型 stream_keywords [ss, stream, sstream, oss, wss, user, host] def fix_method(match): var_name match.group(1) method_name match.group(2) var_lower var_name.lower() is_stream any(k in var_lower for k in stream_keywords) if is_stream: if method_name view: return f{var_name}.str() # stringstream.view() - .str() elif method_name empty: return f{var_name}.str().empty() # stringstream.empty() - .str().empty() else: if method_name view: return var_name # string.view() - 变量本身 elif method_name empty: return match.group(0) # string.empty() - 保持不变 return match.group(0) for root, dirs, files in os.walk(src_dir): skip any(s in root for s in [boost, cmake, build, .git, protobuf, zlib, pcre, lz4, zstd, snappy, bzip2, re2]) if skip: continue for f in files: if f.endswith((.cc, .cpp, .h, .hh)): path os.path.join(root, f) try: with open(path, r, encodingutf-8, errorsignore) as fp: content fp.read() except: continue # 匹配 变量名.view() 或 变量名.empty() new_content re.sub(r(\w)\.(view|empty)\(\), fix_method, content) if new_content ! content: with open(path, w) as fp: fp.write(new_content) for m in re.finditer(r(\w)\.(view|empty)\(\), content): old m.group(0) new fix_method(m) if old ! new: print(f {path}: {old} - {new}) fixed_files.append(path) print(f\n共修复 {len(fixed_files)} 个文件)脚本执行完成后回到build目录编译make -j2(或者 make -j$(nproc)) //这一步会耗费很长时间2核2g两小时起 //编译完成后 make install以上为本人遇到所有报错解决方案故提前安装好以便一次性make成功并非绝对方案如有其他问题欢迎反馈mysql配置# 创建不允许登录系统的 mysql 用户 useradd -r -s /sbin/nologin mysql # 赋予 mysql 目录权限 chown -R mysql:mysql /usr/local/mysql // 初始化 MySQL 数据目录--initialize-insecure 表示 root 无密码便于首次登录后再设置 /usr/local/mysql/bin/mysqld \ --initialize-insecure \ // 初始化时不生成随机 root 密码 --usermysql \ // 以 mysql 用户身份运行初始化 --basedir/usr/local/mysql \ // MySQL 安装目录 --datadir/usr/local/mysql/data // 数据文件存放目录 // 写入 MySQL 主配置文件 /etc/my.cnf cat /etc/my.cnf EOF [mysqld] usermysql // 运行 mysqld 的系统用户 basedir/usr/local/mysql // MySQL 安装根目录 datadir/usr/local/mysql/data // 数据目录 port3306 // 监听端口 socket/tmp/mysql.sock // 本地连接用的 socket 文件路径 pid-file/tmp/mysql.pid // 进程 PID 文件路径 character-set-serverutf8mb4 // 服务端默认字符集支持完整 Unicode含 emoji default-storage-engineINNODB // 默认存储引擎 max_connections2048 // 最大并发连接数 EOF //配置环境变量 echo export PATH/usr/local/mysql/bin:$PATH /etc/profile source /etc/profile //启动mysql服务 mysqld_safe --usermysql //登录并设置管理员密码 mysql -u root ALTER USER rootlocalhost IDENTIFIED BY YourNewPassword; FLUSH PRIVILEGES; EXIT; //运行 MySQL 官方提供的安全配置脚本一键加固数据库 mysql_secure_installation 按步骤为 输入当前密码 是否设置密码强度校验组件 选择密码强度等级输入 0 按回车仅要求长度 ≥ 8输入 1 按回车要求长度 ≥ 8包含数字、大小写、特殊字符输入 2 按回车在 1 的基础上增加字典文件校验 设置新的 Root 密码 移除匿名用户 禁止 root 远程登录 删除测试数据库 重新加载权限表源码安装jdk21wget https://download.oracle.com/java/21/latest/jdk-21_linux-x64_bin.tar.gz // 解压 tar -zxvf jdk-21_linux-x64_bin.tar.gz -C /usr/local/ // 配置环境变量 (编辑 /etc/profile) export JAVA_HOME/usr/local/jdk-21.0.10 // 请根据实际解压后的文件夹名调整 export PATH$PATH:$JAVA_HOME/bin // 生效并验证 source /etc/profile java -version

相关新闻

基于Elasticsearch的倒排索引压缩算法(FST/PFOR)调优:Python大数据分析实战

基于Elasticsearch的倒排索引压缩算法(FST/PFOR)调优:Python大数据分析实战

1. 引言:倒排索引与压缩的困境 在大数据检索场景下,Elasticsearch(ES)凭借其分布式架构和Lucene引擎,已成为日志分析、电商搜索、APM监控等领域的核心组件。然而,随着数据量从TB级迈向PB级,倒排索引的内存占用和磁盘I/O逐渐成为性能瓶颈。根据Elastic官方白皮书,索引膨…

2026/8/16 12:08:18 阅读更多 →
Kali Linux新手入门:从环境搭建到核心工具链实战的完整指南

Kali Linux新手入门:从环境搭建到核心工具链实战的完整指南

这类教程最值得先看的不是它承诺的“七天成神”或“学完就业”,而是它到底能不能帮你把 Kali Linux 这个工具真正用起来,以及它覆盖的知识点是否扎实、路径是否清晰。很多新手一上来就被各种炫酷的演示和承诺吸引,结果装完系统、敲了几个命令…

2026/8/16 12:08:17 阅读更多 →
大模型聚合平台“方舟Coding Plan”深度评测:一站式整合GLM、Claude、Kimi编程能力

大模型聚合平台“方舟Coding Plan”深度评测:一站式整合GLM、Claude、Kimi编程能力

1. 项目概述:一个订阅,玩转三大模型 最近在开发者圈子里,一个话题讨论得挺热:为了用上不同的大模型,我们是不是得在GLM、MiniMAX、Kimi、Claude这些平台之间反复横跳,每个都去开个会员?光是管理…

2026/8/16 12:07:17 阅读更多 →

最新新闻

为LLM智能体注入情商:PsychoAgent情感感知与冲突管理架构实践

为LLM智能体注入情商:PsychoAgent情感感知与冲突管理架构实践

1. 项目缘起:当LLM智能体开始“闹情绪” 最近在折腾LLM智能体(Agent)时,我遇到了一个挺有意思的瓶颈。我们团队当时在做一个多智能体协作的模拟项目,比如让几个智能体模拟一个产品团队的日常会议。理想很丰满&#xff…

2026/8/16 23:15:40 阅读更多 →
还在手动维护股票代码列表?你的量化选股脚本可能已经漏了几百只票

还在手动维护股票代码列表?你的量化选股脚本可能已经漏了几百只票

做量化选股、全市场扫描或定时监控脚本时,许多开发者第一反应都是在本地存一个 stocks.txt、stocks.json,或者直接在 Python 代码里硬编码写一个列表: # 常见的硬编码股票列表 symbols ["600519.SH", "000001.SZ", &qu…

2026/8/16 23:15:40 阅读更多 →
深入解析Kerberos黄金票据与白银票据攻击:原理、实战与防御

深入解析Kerberos黄金票据与白银票据攻击:原理、实战与防御

1. 从一次“幽灵登录”说起:为什么需要了解票据攻击几年前,我负责的一个内部系统监控告警突然响了,提示某个核心数据库服务器在凌晨出现了异常登录。我们立刻调取日志,发现登录记录显示的是一个早已离职半年的运维人员的账号。更诡…

2026/8/16 23:15:40 阅读更多 →
Linux scp命令详解:安全文件传输的核心语法与六大实战场景

Linux scp命令详解:安全文件传输的核心语法与六大实战场景

1. 项目概述:为什么我们需要深入理解scp 如果你经常和Linux服务器打交道,或者需要在多台机器之间同步文件,那么 scp (Secure Copy Protocol)命令绝对是你工具箱里不可或缺的一把瑞士军刀。它基于SSH协议,…

2026/8/16 23:15:40 阅读更多 →
执行代码 `print(3**2)` 输出结果是 **9**,因为 `**` 是 Python 中的幂运算符,`3**2` 表示 3 的 2 次方,即 $3^2 = 9$

执行代码 `print(3**2)` 输出结果是 **9**,因为 `**` 是 Python 中的幂运算符,`3**2` 表示 3 的 2 次方,即 $3^2 = 9$

执行代码 print(3**2) 输出结果是 9,因为 ** 是 Python 中的幂运算符,3**2 表示 3 的 2 次方,即 3293^2 9329。 正确答案:B. 9 print(3**2) # 输出:9Python 中 ** 运算符的优先级高于 和 -(即加法和减法…

2026/8/16 23:15:40 阅读更多 →
Linux系统安装Docker Compose:二进制与pip方式详解与避坑指南

Linux系统安装Docker Compose:二进制与pip方式详解与避坑指南

1. 项目概述:为什么我们需要关注Docker Compose的安装方式? 在Linux环境下部署和管理容器化应用,Docker Compose几乎是一个绕不开的工具。它通过一个简单的YAML文件,就能定义和运行多容器的Docker应用,极大地简化了从开…

2026/8/16 23:14:38 阅读更多 →

日新闻

基于阿里云与通义千问(Qwen)构建AI应用:从模型调用到生产部署的完整实践指南

基于阿里云与通义千问(Qwen)构建AI应用:从模型调用到生产部署的完整实践指南

如果你是一名开发者,最近可能已经感受到了AI大模型正在从“玩具”变成“生产力工具”的强烈信号。从代码补全到智能Agent,从本地部署到云端API,我们正处在一个技术栈快速重构的节点。然而,面对层出不穷的模型、框架和工具&#xf…

2026/8/16 0:00:54 阅读更多 →
工业通信系统底层逻辑:04 反射——高频能量撞墙之后会发生什么?

工业通信系统底层逻辑:04 反射——高频能量撞墙之后会发生什么?

第四篇:反射——高频能量撞墙之后会发生什么? —— 你以为信号已经过去了,其实它正在回来打你 老Q的现场笔记 第五季,我们正式进入工业神经系统层。这里不再是单个设备的战斗,而是整个工厂“经脉”层面的秩序之战。从这一篇开始,你将第一次看清:看似简单的信号传播,背…

2026/8/16 0:00:55 阅读更多 →
【文章复现】非线性值迭代自适应动态规划(ADP):离散时间非线性系统的策略迭代自适应动态规划算法研究附Matlab代码

【文章复现】非线性值迭代自适应动态规划(ADP):离散时间非线性系统的策略迭代自适应动态规划算法研究附Matlab代码

✅作者简介:热爱科研的Matlab仿真开发者,擅长毕业设计辅导、数学建模、数据处理、建模仿真、程序设计、完整代码获取、论文复现及科研仿真。🍎 往期回顾关注个人主页:Matlab科研工作室👇 关注我领取海量matlab电子书和…

2026/8/16 0:03:55 阅读更多 →

周新闻

基于阿里云与通义千问(Qwen)构建AI应用:从模型调用到生产部署的完整实践指南

基于阿里云与通义千问(Qwen)构建AI应用:从模型调用到生产部署的完整实践指南

如果你是一名开发者,最近可能已经感受到了AI大模型正在从“玩具”变成“生产力工具”的强烈信号。从代码补全到智能Agent,从本地部署到云端API,我们正处在一个技术栈快速重构的节点。然而,面对层出不穷的模型、框架和工具&#xf…

2026/8/16 0:00:54 阅读更多 →
工业通信系统底层逻辑:04 反射——高频能量撞墙之后会发生什么?

工业通信系统底层逻辑:04 反射——高频能量撞墙之后会发生什么?

第四篇:反射——高频能量撞墙之后会发生什么? —— 你以为信号已经过去了,其实它正在回来打你 老Q的现场笔记 第五季,我们正式进入工业神经系统层。这里不再是单个设备的战斗,而是整个工厂“经脉”层面的秩序之战。从这一篇开始,你将第一次看清:看似简单的信号传播,背…

2026/8/16 0:00:55 阅读更多 →
【文章复现】非线性值迭代自适应动态规划(ADP):离散时间非线性系统的策略迭代自适应动态规划算法研究附Matlab代码

【文章复现】非线性值迭代自适应动态规划(ADP):离散时间非线性系统的策略迭代自适应动态规划算法研究附Matlab代码

✅作者简介:热爱科研的Matlab仿真开发者,擅长毕业设计辅导、数学建模、数据处理、建模仿真、程序设计、完整代码获取、论文复现及科研仿真。🍎 往期回顾关注个人主页:Matlab科研工作室👇 关注我领取海量matlab电子书和…

2026/8/16 0:03:55 阅读更多 →

月新闻

免费解锁百度网盘SVIP加速:macOS用户必备的下载提速终极指南

免费解锁百度网盘SVIP加速:macOS用户必备的下载提速终极指南

免费解锁百度网盘SVIP加速:macOS用户必备的下载提速终极指南 【免费下载链接】BaiduNetdiskPlugin-macOS For macOS.百度网盘 破解SVIP、下载速度限制~ 项目地址: https://gitcode.com/gh_mirrors/ba/BaiduNetdiskPlugin-macOS 还在为百度网盘macOS版的龟速下…

2026/8/16 6:00:23 阅读更多 →
终极ncmdump指南:3分钟实现网易云NCM音乐解密与格式转换

终极ncmdump指南:3分钟实现网易云NCM音乐解密与格式转换

终极ncmdump指南:3分钟实现网易云NCM音乐解密与格式转换 【免费下载链接】ncmdump 项目地址: https://gitcode.com/gh_mirrors/ncmd/ncmdump 还在为网易云音乐下载的NCM格式文件无法在其他播放器播放而烦恼吗?ncmdump解密工具帮你轻松解决这个困…

2026/8/16 6:00:24 阅读更多 →
HarmonyOS 应用开发《掌上英语》第81篇: 智能体卡片:为英语学习 App 打造桌面级学习助手

HarmonyOS 应用开发《掌上英语》第81篇: 智能体卡片:为英语学习 App 打造桌面级学习助手

AgentCard 智能体卡片:为英语学习 App 打造桌面级学习助手适用平台:HarmonyOS 7.0 (API 26 Beta)一、引言 HarmonyOS 7.0(API 26 Beta)新增了 AgentCard 智能体卡片能力,这是继 HMAF(鸿蒙智能体框架&#x…

2026/8/16 6:00:27 阅读更多 →