构建基于RHEL9系列(CentOS9,AlmaLinux9,RockyLinux9等)的Nginx1.24.0的RPM包

这篇具有很好参考价值的文章主要介绍了构建基于RHEL9系列(CentOS9,AlmaLinux9,RockyLinux9等)的Nginx1.24.0的RPM包。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

本文适用:rhel9系列,或同类系统(CentOS9,AlmaLinux9,RockyLinux9等)
文档形成时期:2023年
因系统版本不同,构建部署应略有差异,但本文未做细分,对稍有经验者应不存在明显障碍。
因软件世界之复杂和个人能力之限,难免疏漏和错误,欢迎指正。

环境准备

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.html;
  • nginx.conf可以采用默认的,建议参考生产环境的常用配置准备一个比较通用的;
  • nginx.service是系统服务文件,内容如下:
[Unit]
Description=nginx-The High-performance HTTP Server
After=network.target

[Service]
Type=forking
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
PrivateTmp=true

[Install]
WantedBy=multi-user.target

nginx-1.24.0-el9.spec内容

和专栏内RHEL8的相比,仅date命令格式中的日期后缀少了%S,其它相同

Name:           nginx
Version:        1.24.0
Release:        custom%{?dist}
Summary:        www.nginx.org
 
Group:          GNU Linux Nginx Product
License:        GPLv3+
URL:            https://nginx.org/en/download.html
Source0:        https://nginx.org/download/%{name}-%{version}.tar.gz
 
BuildRequires:  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} \
--user=www --group=www \
--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.13

make %{?_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 ];then
    groupadd www -g 319 2> /dev/null
    useradd -s /sbin/nologin -M www -u 319 -g 319 2> /dev/null
    mkdir /home/www 2> /dev/null
    chown www:www /home/www 2> /dev/null
    chown www:www -R /opt/web/eg
    
    systemctl daemon-reload
    systemctl enable nginx
fi

 



#卸载前执行的命令
%preun
if [ "$1" = 0 ]
then
    systemctl disable nginx
    systemctl stop nginx
    # userdel -r www
    cp -r %{_prefix}/conf /opt/nginx_conf.rpmsave-`date +"%Y%m%d-%H%M"`
fi






%postun
if [ "$1" = 0 ]
then
    systemctl disable nginx
    rm -f /usr/lib/systemd/system/nginx.service
    rm -rf /opt/nginx
    echo "%{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

构建后的主要文件:
[error] 9620#9188: *151 createfile()

安装

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查询文章来源地址https://www.toymoban.com/news/detail-818410.html

到了这里,关于构建基于RHEL9系列(CentOS9,AlmaLinux9,RockyLinux9等)的Nginx1.24.0的RPM包的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 基于RHEL9,ORACLE LINUX 9安装Oracle 19c 数据库

    要基于RHEL9,ORACLE LINUX 9 或RHEL分支,安装ORACLE 19C 数据库,在一年前,没有人会告诉你能够成功,都会告诉你说19C只支持 RHEL7/8,在RHEL9上不支持, 如果你非要安装,在安装到11%时,就会报以下错误: Error in invoking target \\\' libasmclntsh19.ohso libasmperl19.ohso client_sharedlib \\\' of makefile \\\'/u

    2024年02月03日
    浏览(43)
  • Almalinux9 Rocky Linux 9 修改静态ip 安装 MongoDB

    almalinux9.x 放弃了 老的网络配置方式。 先备份默认配置文件 ens33.nmconnection 然后修改内容 备注下:有小伙伴不懂 解释下: address中 前面1.3是机器ip 1.1是当前网络的网关 重启网络 远程修改一定要成对出现 否则网络起不来 查看ip 重新加载网卡 安装mongodb 更新系统 配置源 6.0 配

    2023年04月26日
    浏览(43)
  • 构建基于RHEL7(CentOS7)的OpenSSH9.5p1的RPM包和升级回退方案

    本文适用:RHEL7系列,或同类系统(CentOS7等) 文档形成时期:2023年 因软件世界之复杂和个人能力之限,难免疏漏和错误,欢迎指正。 yum install rpmdevtools #创建目录 rpmdev-setuptree #或手动创建目录: yum install rpm-build gcc make wget openssl-devel krb5-devel pam-devel libX11-devel xmkmf libXt-devel 准备

    2024年01月21日
    浏览(45)
  • AlmaLinux 9.2 正式版发布 - RHEL 兼容免费发行版

    AlmaLinux 9.2 正式版发布 - RHEL 兼容免费发行版 由社区提供的免费 Linux 操作系统,RHEL 兼容发行版。 请访问原文链接:https://sysin.org/blog/almalinux-9/,查看最新版。原创作品,转载请保留出处。 作者主页:sysin.org 由社区提供的免费 Linux 操作系统 一个开源、社区拥有和管理、永远

    2024年02月05日
    浏览(39)
  • Linux rhel9 配置本地yum源和国内yum源(适合新手小白体质)

    镜像源指的是一个服务器,它存储了另一个服务器上的某些或全部内容的副本。这些内容可以是操作系统、软件包、文档、音视频等等。镜像源的主要目的是加速下载和分发,特别是在面对大量用户的时候,通过镜像源可以避免单个服务器的负载过高和带宽瓶颈的问题。 在软

    2024年03月13日
    浏览(48)
  • linux 基于 RHEL 的 Linux 发行版(例如 CentOS 和 Fedora)上用 shell 脚本安装 elasticsearch 指南

    使用基于 RHEL 的 Linux 发行版(例如 CentOS 和 Fedora)操作系统。 拥有root权限或者sudo权限。 1.首先,创建一个名为install_elasticsearch.sh的文件,并打开该文件以编辑 2.然后,将以下内容粘贴到install_elasticsearch.sh文件中 3.保存并关闭文件 4.运行安装脚本 5.等待脚本执行完成,这可能

    2024年02月01日
    浏览(32)
  • centos9的界面安装

    centos9最新的centos版本,在近期的使用中发现它的操作界面与以往的centos7/8更加舒适,界面优化更加精细 https://centos.org/download/ 输入地址后跳出下面界面,在centosLINUX和centos Stream中选择后者,并点击x86_64即可 新建虚拟机 打开安装好的VMware,点击文件,或者在主页新建虚拟机(

    2023年04月25日
    浏览(35)
  • mac m1安装Centos9

    先看结果(在mac M1 安装centos8 安装不成功的原因大部分是没有找到正确的系统) 由于Cnetos8 停服,现有mac m1 上能够按照的Centos8 并非由官方发布,因此寻找官方发布的能够在mac m1上安装的centos版本。 在YouTuBe上找到一个视频Install CentOS on MacBook M1 Chip - YouTube 视屏中有虚拟机和

    2024年02月15日
    浏览(43)
  • CentOS升级内核-- CentOS9 Stream/CentOS8 Stream/CentOS7

    官方文档在此 当我们安装一些软件(对,我说的就是Kubernetes),可能需要新内核的支持,而CentOS又比较保守,不太升级,所以需要我们手工升级. # 看下目前是什么版本内核 uname -a # 安装公钥 rpm --import https://www.elrepo.org/RPM-GPG-KEY-elrepo.org # 添加仓库,如果不执行该指令后面无法找到elrep

    2023年04月22日
    浏览(38)
  • CentOS 8 安装 oracle 23c CentOS9 Error deal

    软件准备 序号 软件 下载地址 1 VirtualBox 2 CentOS Stream 8 3 oracle-database-free-23c 4 oracle-database-preinstall-23c 5 rlwrap 操作系统使用virtualbox虚拟机安装的centos8服务器,该步骤省略,教程很多的。 该环境是有网的,所以不设置yum源,如果是没网的内网环境,自行挂载镜像包作为yum源。 服

    2024年02月12日
    浏览(29)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包