Linux 运维中怎么从源码编译安装 Nginx/Redis/PHP 等高版本开源软件

云浩同学_8445

云浩同学_8445

2026-10-04

869人浏览

原创

源码编译安装是linux运维保障版本可控、功能完整和长期可维护的关键手段,适用于生产部署、安全加固及定制化需求;流程为下载源码→解压→配置→编译→安装,需提前装齐gcc、make等通用依赖及软件特有-devel包,并完成用户创建、systemd服务配置、内核参数调优和功能验证。

linux 运维中怎么从源码编译安装 nginx/redis/php 等高版本开源软件

直接从源码编译安装高版本开源软件,是 Linux 运维保障版本可控、功能完整和长期可维护的关键手段。它不依赖系统仓库的滞后版本,也不受容器环境约束,特别适合生产部署、安全加固或定制化需求场景。

明确编译目标与前置准备

动手前先确认三点:你要装的软件具体版本(比如 Nginx 1.25.3、Redis 7.2.5、PHP 8.3.10)、是否需要启用特定模块(如 Redis 的 TLS、PHP 的 OPcache + MySQLi + cURL)、以及目标运行用户与路径(建议非 root 用户运行,安装到 /usr/local/xxx 而非系统默认路径)。

通用依赖必须提前装齐:

Linux installer
Linux installer

先解析安全源,运行本地CLI安装、启动、卸载Linux桌面应用。用户请求时使用。

下载
  • Nginx:gcc、make、pcre-devel、zlib-devel、openssl-devel
  • Redis:gcc、make、tcl(用于 test)、jemalloc(可选,内存优化)
  • PHP:gcc、make、autoconf、automake、libtool、bison、re2c,以及扩展依赖如 libxml2-dev、libsqlite3-dev、libonig-dev、libzip-dev 等

命令示例(Ubuntu/Debian):
sudo apt update && sudo apt install -y build-essential libpcre3-dev zlib1g-dev libssl-dev libxml2-dev libsqlite3-dev libonig-dev libzip-dev
CentOS/RHEL 对应替换为 yum groupinstall "Development Tools" 加各 -devel 包。

分步编译安装要点

每款软件的核心流程都是:下载源码 → 解压 → 配置(configure / cmake)→ 编译(make)→ 安装(make install),但关键细节不同:

  • Nginx:用 ./configure 指定模块开关,例如 --with-http_ssl_module --with-http_v2_module --with-stream;务必加 --prefix=/usr/local/nginx 明确安装根目录;编译后需手动创建 systemd 服务文件或添加启动脚本
  • Redis:进入解压目录直接执行 make && sudo make install 即可,默认装到 /usr/local/bin;如需启用 TLS,编译前确保 OpenSSL ≥1.1.1,并在 make 前设置 USE_OPENSSL=1
  • PHP:配置阶段最复杂,推荐用 ./configure --prefix=/usr/local/php8 --enable-fpm --with-fpm-user=www-data --with-fpm-group=www-data --enable-opcache --with-mysqli --with-pdo-mysql --with-openssl --with-zlib;注意扩展依赖路径可能需显式指定(如 --with-libzip=/usr)

安装后必须做的几件事

编译完成只是起点,真正落地还需补全运维闭环:

  • 创建专用运行用户(如 nginx、redis、php-fpm),禁止 shell 登录
  • 配置 systemd 服务单元文件(/etc/systemd/system/xxx.service),定义启动用户、工作目录、日志重定向和重启策略
  • 调整内核参数:Redis 需 vm.overcommit_memory=1 和 net.core.somaxconn=65535;Nginx/PHP 可能需调高 fs.file-max 和 ulimit
  • 验证基础功能:用 -V 查版本、-t 测配置语法、ps aux | grep 看进程、curl -I 或 redis-cli ping 测连通性

常见问题与避坑提示

编译失败大多出在依赖或路径上:

  • 报 “xxx not found”:不是没装,而是开发头文件(-dev 或 -devel 包)缺失,或 pkg-config 路径未识别,可用 pkg-config --modversion xxx 验证
  • PHP configure 报 “libzip not found”:即使已装 libzip-dev,也可能因新版 libzip 使用了 pkg-config 名称 libzip 而非旧名 zip,需加 --with-libzip 并确保版本 ≥1.2.0
  • Redis 启动报 “Failed to bind to 0.0.0.0:6379”:检查端口是否被占用,或 SELinux/firewalld 是否拦截;生产环境建议绑定内网地址而非 0.0.0.0
  • 所有软件都建议关闭调试符号(--disable-debug)并开启优化(--enable-optimizations for PHP),减小体积、提升性能

php免费学习视频:立即使用
踏上前端学习之旅,开启通往精通之路!从前端基础到项目实战,循序渐进,一步一个脚印,迈向巅峰!

相关文章

PHP速学教程(入门到精通)
PHP速学教程(入门到精通)

PHP怎么学习?PHP怎么入门?PHP在哪学?PHP怎么学才快?不用担心,这里为大家提供了PHP速学教程(入门到精通),有需要的小伙伴保存下载就能学习啦!

下载

相关标签:

linux php redis nginx

本站声明:本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn

相关专题

更多
php文件怎么打开
php文件怎么打开

打开php文件步骤:1、选择文本编辑器;2、在选择的文本编辑器中,创建一个新的文件,并将其保存为.php文件;3、在创建的PHP文件中,编写PHP代码;4、要在本地计算机上运行PHP文件,需要设置一个服务器环境;5、安装服务器环境后,需要将PHP文件放入服务器目录中;6、一旦将PHP文件放入服务器目录中,就可以通过浏览器来运行它。

2023.09.01

9964

6

php怎么取出数组的前几个元素
php怎么取出数组的前几个元素

取出php数组的前几个元素的方法有使用array_slice()函数、使用array_splice()函数、使用循环遍历、使用array_slice()函数和array_values()函数等。本专题为大家提供php数组相关的文章、下载、课程内容,供大家免费下载体验。

2023.10.11

5921

5

php反序列化失败怎么办
php反序列化失败怎么办

php反序列化失败的解决办法检查序列化数据。检查类定义、检查错误日志、更新PHP版本和应用安全措施等。本专题为大家提供php反序列化相关的文章、下载、课程内容,供大家免费下载体验。

2023.10.11

2075

5

php怎么连接mssql数据库
php怎么连接mssql数据库

连接方法:1、通过mssql_系列函数;2、通过sqlsrv_系列函数;3、通过odbc方式连接;4、通过PDO方式;5、通过COM方式连接。想了解php怎么连接mssql数据库的详细内容,可以访问下面的文章。

2023.10.23

3708

4

php连接mssql数据库的方法
php连接mssql数据库的方法

php连接mssql数据库的方法有使用PHP的MSSQL扩展、使用PDO等。想了解更多php连接mssql数据库相关内容,可以阅读本专题下面的文章。

2023.10.23

4394

6

html怎么上传
html怎么上传

html通过使用HTML表单、JavaScript和PHP上传。更多关于html的问题详细请看本专题下面的文章。php中文网欢迎大家前来学习。

2023.11.03

3451

9

PHP出现乱码怎么解决
PHP出现乱码怎么解决

PHP出现乱码可以通过修改PHP文件头部的字符编码设置、检查PHP文件的编码格式、检查数据库连接设置和检查HTML页面的字符编码设置来解决。更多关于php乱码的问题详情请看本专题下面的文章。php中文网欢迎大家前来学习。

2023.11.09

4917

8

php文件怎么在手机上打开
php文件怎么在手机上打开

php文件在手机上打开需要在手机上搭建一个能够运行php的服务器环境,并将php文件上传到服务器上。再在手机上的浏览器中输入服务器的IP地址或域名,加上php文件的路径,即可打开php文件并查看其内容。更多关于php相关问题,详情请看本专题下面的文章。php中文网欢迎大家前来学习。

2023.11.13

3842

8

sprintf函数用法详解
sprintf函数用法详解

sprintf函数的用法:1、格式化字符串;2、指定输出宽度和精度;3、返回值。更多关于sprintf函数用法详解的内容,大家可以阅读下面的文章。

2023.11.27

11822

4

热门下载

更多
网站特效
/
网站源码
/
网站素材
/
前端模板

精品课程

更多
相关推荐
/
热门推荐
/
最新课程
Buffalo框架快速入门指南
Buffalo框架快速入门指南

共0课时 | 0人学习

Valgrind支持平台说明
Valgrind支持平台说明

共0课时 | 0人学习