东莞网站建设及外包,北京新网数码信息技术有限公司,c#做网站,仿站小工具下载本文适用#xff1a;rhel9系列#xff0c;或同类系统(CentOS9,AlmaLinux9,RockyLinux9等) 文档形成时期#xff1a;2023年 因系统版本不同#xff0c;构建部署应略有差异#xff0c;但本文未做细分#xff0c;对稍有经验者应不存在明显障碍。 因软件世界之复杂和个人能力…本文适用rhel9系列或同类系统(CentOS9,AlmaLinux9,RockyLinux9等) 文档形成时期2023年 因系统版本不同构建部署应略有差异但本文未做细分对稍有经验者应不存在明显障碍。 因软件世界之复杂和个人能力之限难免疏漏和错误欢迎指正。 文章目录 环境准备rpmbuild命令简要说明rpmbuild的spec文件说明依赖包和必要文件准备nginx-1.24.0-el9.spec内容构建安装卸载 环境准备
yum install rpmdevtools #创建目录 rpmdev-setuptree #或手动创建目录
mkdir rpmbuild-nginx-1.24.0; cd rpmbuild-nginx-1.24.0
mkdir -p ./{BUILD,RPMS,SOURCES,SPECS,SRPMS}#无论是使用rpmdev-setuptree创建目录还是手动创建的默认使用路径是/root/rpmbuild除非使用参数--define _topdir pwd可在其它目录下构建。
rpmbuild命令简要说明
rpmbuild --help -ba build source and binary packages from -bb build binary package only from
rpmbuild的spec文件说明
pre和post中的scriptlet分别在安装软件包之前和之后运行。脚本preun和postun在软件包卸载之前和之后运行。脚本pretrans和posttrans在事务的开始和结束时运行。
依赖包和必要文件准备
准备好依赖包 /root/software/{openssl-1.1.1w.tar.gz,pcre-8.45.tar.gz,zlib-1.2.13.tar.gz} 解压即可不必安装 各依赖包可在各官网下载 http://zlib.net http://www.pcre.org #官方已停更pcre但介绍了第三方下载https://sourceforge.net/projects/pcre/files/ 最后的版本是pcre-8.45.tar.gz而官方开始发布pcre2了。 https://www.openssl.org
源目录文件列表 ls SOURCES/ nginx-1.24.0.tar.gz nginx.conf nginx.service phpinfo.php
说明
nginx-1.24.0.tar.gz在官方可下载spec文件中也可直接指定其下载地址phpinfo.php用于在有php服务时的测试不是必要的也可以临时写个静态文件比如index.htmlnginx.conf可以采用默认的建议参考生产环境的常用配置准备一个比较通用的nginx.service是系统服务文件内容如下
[Unit]
Descriptionnginx-The High-performance HTTP Server
Afternetwork.target[Service]
Typeforking
PIDFile/opt/nginx/logs/nginx.pid
ExecStartPre/opt/nginx/sbin/nginx -t -c /opt/nginx/conf/nginx.conf
ExecStart/opt/nginx/sbin/nginx -c /opt/nginx/conf/nginx.conf
ExecReload/opt/nginx/sbin/nginx -s reload
ExecStop/opt/nginx/sbin/nginx -s stop
PrivateTmptrue[Install]
WantedBymulti-user.targetnginx-1.24.0-el9.spec内容
和专栏内RHEL8的相比仅date命令格式中的日期后缀少了%S其它相同
Name: nginx
Version: 1.24.0
Release: custom%{?dist}
Summary: www.nginx.orgGroup: GNU Linux Nginx Product
License: GPLv3
URL: https://nginx.org/en/download.html
Source0: https://nginx.org/download/%{name}-%{version}.tar.gzBuildRequires: gcc
Requires: perl perl-devel%define debug_package %{nil}
%define _prefix /opt/nginx
Prefix: %{_prefix}%description
nginx install%prep
%setup -q%build
./configure --prefix%{_prefix} \
--userwww --groupwww \
--with-http_stub_status_module \
--with-http_gzip_static_module \
--with-http_flv_module \
--with-http_realip_module \
--with-http_ssl_module \
--with-http_v2_module \
--with-stream \
--with-pcre/root/software/pcre-8.45 \
--with-openssl/root/software/openssl-1.1.1w \
--with-zlib/root/software/zlib-1.2.13make %{?_smp_mflags}#
# Installation section
#
%install
[ %{buildroot} ! / ] rm -rf %{buildroot}
make install DESTDIR%{buildroot}%__install -c -d -m 755 %{buildroot}%{_prefix}/conf
%__install -c -d -m 755 %{buildroot}/usr/lib/systemd/system
%__install -c -d -m 755 %{buildroot}/opt/web/eg
cp -f %_sourcedir/nginx.service %{buildroot}/usr/lib/systemd/system/nginx.service
cp -f %_sourcedir/nginx.conf %{buildroot}%{_prefix}/conf/
cp -f %_sourcedir/phpinfo.php %{buildroot}/opt/web/eg/#
# Clean section
#%clean
[ %{buildroot} ! / ] rm -rf %{buildroot}#将所需要打包的文件都存放到这边中-f %{name}.lang 加上后的意思为声明找到的文件
%files
%{_prefix}
%doc
/usr/lib/systemd/system/nginx.service
/opt/web/eg#安装后执行的命令
%post
if [ $1 1 ];thengroupadd www -g 319 2 /dev/nulluseradd -s /sbin/nologin -M www -u 319 -g 319 2 /dev/nullmkdir /home/www 2 /dev/nullchown www:www /home/www 2 /dev/nullchown www:www -R /opt/web/egsystemctl daemon-reloadsystemctl enable nginx
fi#卸载前执行的命令
%preun
if [ $1 0 ]
thensystemctl disable nginxsystemctl stop nginx# userdel -r wwwcp -r %{_prefix}/conf /opt/nginx_conf.rpmsave-date %Y%m%d-%H%M
fi%postun
if [ $1 0 ]
thensystemctl disable nginxrm -f /usr/lib/systemd/system/nginx.servicerm -rf /opt/nginxecho %{name}-%{version}-%{release} uninstalled.
fi#软件更新说明
%changelog
* Thu Dec 14 2023 N
- For the first time, Custom made Nginx1.24.0 in AlmaLinux9.2.构建
cd /root/rpmbuild-nginx-1.24.0
rpmbuild --define _topdir pwd --nodebuginfo -ba SPECS/nginx-1.24.0-el9.spec构建后的主要文件
安装
dnf localinstall nginx-1.24.0-custom.el9.x86_64.rpm
卸载
dnf remove nginx-1.24.0-custom.el9.x86_64 注意nginx-1.24.0-custom.el9.x86_64这个名称可以通过rpm -qa|grep nginx查询