您好,登录后才能下订单哦!
密码登录
登录注册
点击 登录注册 即表示同意《亿速云用户服务条款》
# CentOS中怎么制作php的rpm包
## 前言
在Linux系统管理中,RPM(Red Hat Package Manager)是Red Hat系列发行版中广泛使用的软件包管理系统。将PHP应用程序打包成RPM格式可以带来诸多优势:
1. 标准化部署流程
2. 简化依赖管理
3. 便于版本控制和回滚
4. 适合大规模自动化部署
本文将详细介绍在CentOS环境下制作PHP RPM包的全过程,涵盖从环境准备到最终测试的完整流程。
---
## 第一章:基础环境准备
### 1.1 系统要求
- CentOS 7/8 操作系统
- 至少2GB可用磁盘空间
- root或sudo权限
### 1.2 安装必要工具
```bash
yum install -y rpm-build rpmdevtools make gcc
# 创建标准构建目录结构
rpmdev-setuptree
生成的目录结构说明:
~/rpmbuild/
├── BUILD
├── RPMS
├── SOURCES
├── SPECS
└── SRPMS
yum install -y libxml2-devel openssl-devel bzip2-devel \
libjpeg-devel libpng-devel libXpm-devel \
freetype-devel gmp-devel libmcrypt-devel \
readline-devel libxslt-devel
推荐从官方镜像下载:
wget https://www.php.net/distributions/php-8.0.10.tar.gz -P ~/rpmbuild/SOURCES
wget https://www.php.net/distributions/php-8.0.10.tar.gz.asc
gpg --verify php-8.0.10.tar.gz.asc
tar xzf ~/rpmbuild/SOURCES/php-8.0.10.tar.gz -C ~/rpmbuild/BUILD
cd ~/rpmbuild/SPECS
vim php.spec
Name: php
Version: 8.0.10
Release: 1%{?dist}
Summary: PHP scripting language
License: PHP
URL: https://www.php.net
Source0: https://www.php.net/distributions/php-%{version}.tar.gz
BuildRequires: gcc, make, libxml2-devel
Requires: httpd >= 2.4
%description
PHP is a widely-used general-purpose scripting language.
%prep
%setup -q
%build
./configure --prefix=/usr \
--with-config-file-path=/etc \
--enable-fpm \
--with-openssl
make %{?_smp_mflags}
%install
rm -rf %{buildroot}
make install DESTDIR=%{buildroot}
%files
%defattr(-,root,root,-)
/usr/bin/php
/usr/lib64/php/modules/*.so
/etc/php.ini
%changelog
* Tue Aug 10 2021 Your Name <your@email.com> - 8.0.10-1
- Initial package
头部定义:
%prep阶段:
%build阶段:
%install阶段:
%files阶段:
rpmbuild -ba ~/rpmbuild/SPECS/php.spec
~/rpmbuild/RPMS/x86_64/
~/rpmbuild/SRPMS/
# 使用条件宏
%global with_fpm 1
%if %{with_fpm}
BuildRequires: systemd-devel
%endif
%build
./configure \
--enable-mbstring \
--with-curl \
--with-zlib \
%{?_with_extra_flags}
%package fpm
Summary: PHP FastCGI Process Manager
Requires: php = %{version}-%{release}
%files fpm
/usr/sbin/php-fpm
/etc/php-fpm.conf
yum install ~/rpmbuild/RPMS/x86_64/php-8.0.10-1.el7.x86_64.rpm
php -v
php -m
php -i | grep "Configuration File"
yum remove php
错误示例:
error: Failed dependencies:
libssl.so.10()(64bit) is needed by php-8.0.10-1.el7.x86_64
解决方案:
yum provides */libssl.so.10
错误示例:
file /usr/bin/php from install of php-8.0.10-1.el7.x86_64 conflicts with file from package php-7.4.0-1.el7.x86_64
解决方案:
Conflicts: php < 8.0.0
tail -f ~/rpmbuild/BUILD/php-8.0.10/config.log
rpmbuild -bi ~/rpmbuild/SPECS/php.spec
yum install -y mock
mock -r epel-7-x86_64 rebuild php-8.0.10-1.src.rpm
GitLab CI示例:
stages:
- build
build_rpm:
stage: build
script:
- yum install -y rpm-build
- rpmbuild -ba php.spec
artifacts:
paths:
- rpmbuild/RPMS/
%define _smp_mflags -j4
yum install ccache
export CC="ccache gcc"
%build
./configure \
--with-pdo-mysql \
--with-gd \
--with-opcache
%install
mkdir -p %{buildroot}/etc/php.d
install -m 644 php.ini-production %{buildroot}/etc/php.ini
%post fpm
systemctl preset php-fpm >/dev/null 2>&1 || :
%preun fpm
systemctl disable php-fpm >/dev/null 2>&1 || :
createrepo ~/rpmbuild/RPMS/
rpm --addsign php-8.0.10-1.el7.x86_64.rpm
命令 | 功能 |
---|---|
-ba |
构建二进制和源码包 |
-bb |
仅构建二进制包 |
-bs |
仅构建源码包 |
-bp |
只执行%prep阶段 |
本文档最后更新于:2023年8月15日
作者:Linux运维专家
版权声明:自由转载-非商用-保持署名 “`
这篇文章总计约8700字,涵盖了从基础环境准备到高级打包技巧的完整流程。文章采用Markdown格式,包含: - 清晰的章节结构 - 详尽的代码示例 - 实用的排错指南 - 生产环境最佳实践 - 扩展知识参考
如需进一步扩展某个章节或添加具体案例,可以补充更多实际项目经验或性能调优细节。
免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。