nginx-1.22.1的rpm包,乱打。

环境准备

主机名 WanIP LanIP 应用 角色
web01 10.0.0.7 172.16.1.7 fpm 打包工具
web02 10.0.0.8 172.16.1.8 yumrepo yum仓库
web03 10.0.0.9 172.16.1.9 安装rpm包的客户端

web01安装fpm打包工具

# 0.安装依赖
[root@web01 ~]# yum install -y rpm-build

# 1.下载fpm打包工具(ruby)
[root@web01 ~]# wget http://test.driverzeng.com/other/fpm-1.3.3.x86_64.tar.gz

# 2.解压
[root@web01 ~]# tar xf fpm-1.3.3.x86_64.tar.gz

# 3.安装ruby环境
[root@web01 ~]# yum install -y ruby rubygems ruby-devel

gem ruby应用商店 .gem
yum CentOS应用商店 .rpm
pip python库应用商店

# 4.查看gem源
[root@web01 ~]# gem source --list
*** CURRENT SOURCES ***
https://rubygems.org/

# 5.删除官方源
[root@web01 ~]# gem sources --remove https://rubygems.org/

# 6.更换阿里云gem源
[root@web01 ~]# gem sources -a https://mirrors.aliyun.com/rubygems/
https://mirrors.aliyun.com/rubygems/ added to sources

[root@web01 ~]# gem source --list
*** CURRENT SOURCES ***
https://mirrors.aliyun.com/rubygems/

# 7.安装fpm
[root@web01 ~]# gem install *.gem

# 8.检查是否安装成功
[root@web01 ~]# fpm --version
1.3.3

nginx包和需要的依赖都拿出来

# 将nginx需要的依赖下载rpm包下来
yum install -y pcre-devel zlib-devel openssl-devel --downloadonly --downloaddir=/root

# 安装nginx的依赖包
yum localinstall -y *.rpm

源码安装一下自己想要的nginx版本

# 0.安装依赖
[root@web01 nginx-1.22.1]# yum install -y pcre-devel zlib-devel openssl-devel
# 1.下载nginx源码包
[root@web01 ~]# wget https://nginx.org/download/nginx-1.22.1.tar.gz
# 2.解压
[root@web01 ~]# tar xf nginx-1.22.1.tar.gz
# 3.生成
[root@web01 ~]# cd nginx-1.22.1/
[root@web01 nginx-1.22.1]# ./configure --prefix=/app/nginx-1.22.1 --with-http_ssl_module
# 4.编译,安装
[root@web01 nginx-1.22.1]# make && make install

fpm
-s dir # 指定将目录、文件打包成rpm
-t rpm # 打包成rpm包
-n nginx # name rpm包的名字
-v 1.6.3 # rpm包的版本
-d 'pcre-devel,openssl-devel' # 指定依赖
--post-install /server/scripts/nginx_rpm.sh # 安装之后,需要执行的命令(脚本)
-f /application/nginx-1.6.3/ # 指定打包的目录

# yum命令可以帮你自动解决依赖关系
## 编写脚本
[root@web01 nginx-1.22.1]# vim /root/install_nginx.sh

#!/bin/bash

groupadd www -g 666
useradd www -u 666 -g 666 -s /sbin/nologin -M

ln -s /app/nginx-1.22.1 /app/nginx

echo 'export PATH="$PATH:/app/nginx/sbin"' > /etc/profile.d/nginx.sh
source /etc/profile

# 打rpm包的命令
fpm -s dir -t rpm -n nginx -v 1.22.1 -d 'pcre-devel,openssl-devel,zlib-devel' --post-install /root/install_nginx.sh -f /app/nginx-1.22.1
-----------------------------------------------------

-s, --source: 指定打包源,支持以下源:gem, deb, rpm, python, nodejs, osxpkg, zip等。
-t, --target:指定打包目标,支持以下目标:rpm, deb, pacman, solaris, tar, etc。该选项还可用于指定目标软件包的名称和版本。
-n, --name:指定软件包的名称。
-v, --version:指定软件包的版本号。
-a, --architecture:指定软件包所针对的 CPU 架构,如 x86_64、i386 等。
-m, --maintainer:指定软件包负责人的信息。
-d, --depends:指定软件包所依赖的其他软件包的名称和版本。
-C, --chdir:指定打包时的工作目录。
-p, --package:指定输出的软件包文件名或者目录。
--post-install  软件包安装完成之后所要运行的脚本;同--after-install
--pre-install  软件包安装完成之前所要运行的脚本;同--before-install

web02制作yum仓库

### 先在这个机器里安装nginx,就是上面刚打包的。

# 安装createrepo软件(创建存储库)
yum install createrepo -y

# 创建yum仓库目录
mkdir -p /app/nginx/html/yumcache/

## 将保存好的rpm包放入/app/nginx/html/yumcache/
[root@web01 ~]# cp ./*.rpm /app/nginx/html/yumcache/

#初始化yum仓库
createrepo -pdo /app/nginx/html/yumcache/ /app/nginx/html/yumcache/

-p, --pretty: 指定在生成 repomd.xml 元数据时使用漂亮的格式。这将使元数据更易于阅读和编辑,但也会增加文件的大小。
-d, --database: 执行额外的数据库检查,以确保所有软件包都已正确索引。如果添加新软件包,或者有软件包因其他原因而改变,则需要运行此选项。
-o, --outputdir: 指定输出目录,即用于存储生成的 repodata 目录和 repomd.xml 文件的目录。

## 当有新的rpm放到/application/nginx/html/yumcache里时,执行更新
createrepo --update /app/nginx/html/yumcache/

#修改nginx配置文件,让它默认访问浏览器找到html/yumcache/目录

cat  >/app/nginx/conf/nginx.conf<<EOF
worker_processes  1;
events {
    worker_connections  1024;
}
http {
    include       mime.types;
    default_type  application/octet-stream;
    sendfile        on;
    keepalive_timeout  65;
    server {
        listen       80;
        server_name  localhost;
        location / {
            root   html/yumcache;
            autoindex on;         ##开启目录
            index  index.html index.htm;
        }
        error_page   500 502 503 504  /50x.html;
        location = /50x.html {
            root   html;
        }
    }
}
EOF

#检查语法重启nginx服务
/app/nginx/sbin/nginx -t
/app/nginx/sbin/nginx

#访问ip可以查看yum仓库内容,下面会多个一个repodata/目录,是createrepo生成的。

web03配置yum源

##客户端部署
gzip /etc/yum.repos.d/*

# 自己新建一个yum源文件
vim /etc/yum.repos.d/nginx.repo
[ttthhh]
name=Repo Name
baseurl=http://10.0.0.8
gpgcheck=0
enabled=1

#清空之前的缓存
yum clean all
错误排查
Error: Package: nginx (myyum)
           Requires: libxslt-develpcre
           
# 在提示类似错误的时候,是缺少某个依赖包,下来放到yum仓库即可。
# 仓库执行update的命令;客户端执行yum clean all

#如果确认仓库有包,但是客户端没有,排查思路
#1、yum仓库createrepo --update /application/nginx/html/yumcache/
#2、客户端,yum clean all;
#3、如何还不可以,服务端删除生成的repodata目录,重新createrepo -pdo /application/nginx/html/yumcache/ /application/nginx/html/yumcache/,然后执行第二步;
#在客户机安装的时候总提示没有可用的安装包,最后发现是/etc/yum.repos.d/下的文件名后缀写错了。
在客户机安装的时候总是提示文件找不到,什么都不能安装
error was [Errno 2] Local file does not exist: /root/pdate/libiconv-devel-1.14-1.x86_64.rpm
  libxml2-devel-2.7.6-21.el6_8.1.x86_64: failed to retrieve libxml2-devel-2.7.6-21.el6_8.1.x86_64.rpm from m01
error was [Errno 2] Local file does not exist: /root/pdate/libxml2-devel-2.7.6-21.el6_8.1.x86_64.rpm
  libX11-devel-1.6.3-2.el6.x86_64: failed to retrieve libX11-devel-1.6.3-2.el6.x86_64.rpm from m01
error was [Errno 2] Local file does not exist: /root/pdate/libX11-devel-1.6.3-2.el6.x86_64.rpm
  libXt-1.1.4-6.1.el6.x86_64: failed to retrieve libXt-1.1.4-6.1.el6.x86_64.rpm from m01
error was [Errno 2] Local file does not exist: /root/pdate/libXt-1.1.4-6.1.el6.x86_64.rpm
  mhash-0.9.9.9-3.el6.x86_64: failed to retrieve mhash-0.9.9.9-3.el6.x86_64.rpm from m01
error was [Errno 2] Local file does not exist: /root/pdate/mhash-0.9.9.9-3.el6.x86_64.rpm
  libmcrypt-2.5.8-9.el6.x86_64: failed to retrieve libmcrypt-2.5.8-9.el6.x86_64.rpm from m01
error was [Errno 2] Local file does not exist: /root/pdate/libmcrypt-2.5.8-9.el6.x86_64.rpm

## 解决方法:在服务端在/application/nginx/html/yumcache/下删除repodata    这个目录然后执行 createrepo --update /application/nginx/html/yumcache即可
posted @ 2023-06-22 22:00  普里莫  阅读(171)  评论(0)    收藏  举报