努力挣扎的生活 努力挣扎的生活
  • 前端文章

    • JavaScript
  • 学习笔记

    • 《JavaScript教程》
    • 《JavaScript高级程序设计》
    • 《ES6 教程》
    • 《Vue》
    • 《React》
    • 《TypeScript 从零实现 axios》
    • 《Git》
    • TypeScript
    • JS设计模式总结
  • 运维基础
  • 监控
  • 日志系统
  • gitlab安装
  • jenkins安装和管理
  • Jenkins工具集成
  • pipeline流水线
  • Docker
  • Kubernetes
  • Nexus
  • Rancher
  • Prometheus
  • ELK(EFK)
  • 虚拟化
  • Mysql
  • PostgreSQL
  • Redis
  • MongoDB
  • clickhouse
关于
  • 分类
  • 标签
  • 归档
  • 收藏
  • 更多
GitHub (opens new window)

yangfk

瑟瑟发抖的小运维
  • 前端文章

    • JavaScript
  • 学习笔记

    • 《JavaScript教程》
    • 《JavaScript高级程序设计》
    • 《ES6 教程》
    • 《Vue》
    • 《React》
    • 《TypeScript 从零实现 axios》
    • 《Git》
    • TypeScript
    • JS设计模式总结
  • 运维基础
  • 监控
  • 日志系统
  • gitlab安装
  • jenkins安装和管理
  • Jenkins工具集成
  • pipeline流水线
  • Docker
  • Kubernetes
  • Nexus
  • Rancher
  • Prometheus
  • ELK(EFK)
  • 虚拟化
  • Mysql
  • PostgreSQL
  • Redis
  • MongoDB
  • clickhouse
关于
  • 分类
  • 标签
  • 归档
  • 收藏
  • 更多
GitHub (opens new window)
  • 运维基础

    • nginx 安装
    • nginx-conf常用示例
    • rsync 服务pull与push
    • linux时间同步
    • 系统参数优化
    • ruby版本升级
    • fpm定制rpm
      • 安装RPM 工具
        • 安装方式一
        • 安装方式二
      • FPM命令参数介绍
      • FPM 实战打包
        • 打包Nginx
        • 打包PHP
        • 打包Mysql
      • Yum 私有仓库搭建
        • 安装createrepo包
        • 提供yum服务
        • 客户端修改,调整
        • yum命令参数
      • 个人存储下载地址。。。
    • php7_X安装
    • iptables规则
    • tcpdump抓包
    • 公司部署Pritunl-VPN
    • 需求shell脚本记录
    • openldap安装配置
    • Ldap集成常用开源服务示例图
    • ansible基础
    • ansible进阶playbook与Roles
    • centos安装python3
    • Firewalld防火墙
    • Linux配置jdk
    • ubuntu安装ftp
    • minio分布式文件存储
    • windows安装openssh
    • centos7安装系统检测不到网卡
    • docker运行一个bind9和常用的网络命令
    • nginx禁用真实IP
  • 监控

  • 日志系统

  • 安全记录

//
  • 运维
  • 运维基础
yangfk
2019-10-03

fpm定制rpm

//

N 作为一个运维,常做的工作就部署各种服务,搭建各种服务,而重复的工作要怎么样才能快速的完成好

就比如我们指定目录安装:Nginx,Mysql ,PHP ,如果用源码安装,配置高,就算用写好的shell 脚本安装,编译也要十来分钟,但如果有自己预先定制的 rpm 包,那就要不到一分钟就能解决,这篇文章告诉你怎么来定制 rpm 包

环境 CentOS 7

[root@fpm_server ~]# cat /etc/redhat-release 
 CentOS Linux release 7.4.1708 (Core) 
 
[root@fpm_server ~]# systemctl status firewalld.service 

 ● firewalld.service - firewalld - dynamic firewall daemon
    Loaded: loaded (/usr/lib/systemd/system/firewalld.service; disabled; vendor preset: enabled)
    Active: inactive (dead)
      Docs: man:firewalld(1)
      
[root@fpm_server ~]# getenforce 
Disabled
1
2
3
4
5
6
7
8
9
10
11
12

# 安装RPM 工具

提示:ruby 版本升级 2.4.0

安装ruby模块

yum install ruby rubygems ruby-devel -y

# 安装方式一

#添加国内源
gem sources -a http://mirrors.aliyun.com/rubygems/ 
#移除原生的Ruby仓库
gem sources --remove http://rubygems.org/
#安装fpm
gem install fpm                            
Building native extensions.  This could take a while...
ERROR:  Error installing fpm:
	childprocess requires Ruby version >= 2.4.0. #按照上面的博文进行升级

#安装fpm 指定版本
gem install fpm -v 1.4.0
1
2
3
4
5
6
7
8
9
10
11
12

# 安装方式二

test -d fpm ||mkdir -p fpm && cd fpm
wget http://download.yfklife.cn/blog/ops/fpm/fpm-1.3.3.x86_64.tar.gz
tar xf fpm-1.3.3.x86_64.tar.gz
gem install ./*.gem 
1
2
3
4

fpm_version.png

# FPM命令参数介绍

-s:指定源类型
-t:指定目标类型,即想要制作为什么包
-n:指定包的名字
-v:指定包的版本号
-C:指定打包的相对路径
-d:指定依赖于哪些包
-f:第二次包时目录下如果有同名安装包存在,则覆盖它
-p:输出的安装包的目录,不想放在当前目录下就需要指定
--post-install:软件包安装完成之后所要运行的脚本;同--offer-install
--pre-install:软件包安装完成之前所要运行的脚本;同--before-install
--post-uninstall:软件包卸载完成之后所要运行的脚本;同--offer-remove
--pre-uninstall:软件包卸载完成之前所要运行的脚本;同—before-remove
1
2
3
4
5
6
7
8
9
10
11
12

# FPM 实战打包

# 打包Nginx

fpm -s dir -t rpm -n nginx -v 1.20.2 -d 'pcre-devel,openssl-devel' --post-install /opt/nginx_rpm.sh -f /etc/nginx /usr/sbin/nginx
wget http://download.yfklife.cn/blog/ops/fpm/nginx_rpm.sh
1
2

# 打包PHP

fpm -s dir -t rpm -n php -v 7.2.6 -d 'zlib libjpeg freetype libpng gd curl zlib-devel libxml2-devel libjpeg-devel freetype-devel libpng-devel gd-devel curl-devel libjpeg-turbo-devel libcurl-devel libxslt-devel libmcrypt-devel mhash mcrypt' --post-install /root/soft/rpm-php.sh -f /usr/local/php/
wget http://download.yfklife.cn/blog/ops/fpm/rpm-php_7.2.sh
1
2

# 打包Mysql

fpm -s dir -t rpm -n mysql -v 5.7.20 -d 'ncurses-devel libaio-devel cmake' --post-install /server/scripts/mysql_rpm.sh /application/mysql-5.6.36 /etc/init.d/mysqld /etc/my.cnf
wget http://download.yfklife.cn/blog/ops/fpm/mysql_rpm-5.7.20.sh

1
2
3

下载打好包安装测试

yum localinstall nginx-1.20.2-1.x86_64.rpm -y

# Yum 私有仓库搭建

# 安装createrepo包

安装createrepo,安装yum源软件

yum install createrepo -y

创建yum仓库目录并初始化repodata索引文件

mkdir -p /application/yum/centos6.9/x86_64/ && cd /application/yum/centos6.9/x86_64/

拷贝rpm包到此目录

createrepo -pdo /application/yum/centos7.4/x86_64/ /application/yum/centos7.4/x86_64/

# 提供yum服务

python -m SimpleHTTPServer 80 &>/dev/null & #python的http模块

也可以用Nginx 做个代理

如果有新的rpm包放入必须更新

createrepo --update /application/yum/centos6.9/x86_64/

# 客户端修改,调整

客户端修改yum源


cat >/etc/yum.repos.d/local-1.repo<<OPO
[onlylady]
name=Server
baseurl=http://yum仓库IP        #如果不是80端口需要加端口
enable=1
gpgcheck=0
OPO
1
2
3
4
5
6
7
8

删除本地缓存

yum clean all

显示本地yum源列表

yum --enablerepo=local --disablerepo=base,extras,updates list

安装nginx为例

yum --enablerepo=local --disablerepo=base,extras,updates,epel install nginx -y

# yum命令参数

列出所有可更新的软件清单命令:yum check-update
更新所有软件命令:yum update
仅安装指定的软件命令:yum install <package_name>
仅更新指定的软件命令:yum update <package_name>
列出所有可安裝的软件清单命令:yum list
删除软件包命令:yum remove <package_name>
查找软件包命令:yum search <keyword>
1
2
3
4
5
6
7

# 个人存储下载地址。。。

点击,获取下面下载资源

fpm-1.3.3.x86_64.tar.gz
mysql_rpm-5.7.20.sh
rpm-php_7.2.sh
rpm-php_7.4.2.sh
1
2
3
4
//
如果此文章对您有帮助,点击 -->> 请博主喝咖啡 (opens new window)
上次更新: 2023/11/20, 16:23:11
ruby版本升级
php7_X安装

← ruby版本升级 php7_X安装→

最近更新
01
Linux Polkit 权限提升漏洞(CVE-2021-4034)
03-28
02
postgreSQL维护
03-17
03
trivy系统漏洞扫描
02-25
更多文章>
Theme by Vdoing | Copyright © 2019-2025 yangfk | 湘ICP备2021014415号-1
  • 跟随系统
  • 浅色模式
  • 深色模式
  • 阅读模式
×
//