环境准备
主机名 | 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
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即可
标签:--,root,nginx,yum,web01,1.22,rpm
From: https://www.cnblogs.com/xiutai/p/17498434.html