Redis打包(FPM工具)

1.下载redis源码包

wget https://download.redis.io/releases/redis-6.2.5.tar.gz

2.下载编译工具和依赖(gcc版本要9以上,默认安装gcc版本为4.8.5)

#1、安装scl,它可以在不覆盖原有软件包的情况下与其共存,缺点就是仅支持64位
yum -y install centos-release-scl
 
#2、安装gcc,其中的9表示大版本号,默认安装大版本下的最新稳定版本
yum -y install devtoolset-9-gcc devtoolset-9-gcc-c++ devtoolset-9-binutils
 
#3、使用以下命令临时启动gcc,这种方式适用于临时切换系统的gcc版本,即开即用,仅在当前bash中有效,重启虚拟机就又变成4.8.5了
scl enable devtoolset-9 bash
 
#4、使用以下命令永久启动gcc,这种方式适用于长期使用该版本进行编译,切换bash依然有效
echo "source /opt/rh/devtoolset-9/enable" >>/etc/profile
 
#查看gcc环境
gcc -v

3.解压源码包

tar -zxvf redis-6.2.5.tar.gz -C ~/

4.进入解压后的目录,进行编译

cd ~/redis-6.2.5/
make

5.编译安装

make PREFIX=/opt/redis install

6.配置redis

将conf文件复制到编译完成的bin目录下

cp ~/redis-6.2.5/redis.conf /opt/redis/bin/

修改redis的conf文件

vim /opt/redis/bin/redis.conf

修改以下内容:

#daemonize no 改为yes,开启后台运行,默认是前台运行
daemonize yes
 
#把这一行注释,监听所有IP
#bind 127.0.0.1
 
#protected-mode yes 如果改为no,则是关闭保护模式,这种模式下不能配置系统服务,建议还是开启
protected-mode yes
 
#requirpass,保护模式开启的时候要配置密码或者bind ip
requirepass 123456
 
#修改本参数,指定数据目录
dir /opt/redis/data/
 
#修改本参数,指定日志目录
logfile /opt/redis/logs/redis_6379.log

7.安装RAM密钥

command curl -sSL https://rvm.io/mpapis.asc | gpg2 --import -
command curl -sSL https://rvm.io/pkuczynski.asc | gpg2 --import -

8.安装RAM

curl -L get.rvm.io | bash -s stable

9.更新RAM的配置文件

source /etc/profile.d/rvm.sh

10.安装Ruby2.6

rvm install 2.6

11.查看ruby是否安装成功

ruby -v

12.安装fpm依赖模块

yum -y install rubygems ruby-devel

13.更换rubygems仓库

gem sources -a  http://mirrors.aliyun.com/rubygems/
gem sources --remove https://rubygems.org/
gem source list

14.安装fpm工具

gem install fpm

15.检查fpm是否正确安装

fpm --help

16.编写shell文件

根据自己的需要编写shell文件
如:注册redis文件

vim ~/redis_RPM_Building.sh
#!/bin/bash
cat>/lib/systemd/system/redis.service<<-EOF
[Unit]
Description=Redis
After=network.target
 
[Service]
Type=forking
PIDFile=/var/run/redis_6379.pid
ExecStart=/opt/redis/bin/redis-server /opt/redis/bin/redis.conf
ExecReload=/bin/kill -s HUP $MAINPID
ExecStop=/bin/kill -s QUIT $MAINPID
PrivateTmp=true
 
[Install]
WantedBy=multi-user.target
EOF
systemctl daemon-reload

17.打包

打包格式:
fpm -s 源文件类型 -t 目标文件类型 -n 打包后名称 -v 打包后版本号 -d 所需要依赖 --post-install 安装完后执行的脚本 -f 源文件地址

fpm -s dir -t rpm -n redis -v 1.0.0 --post-install ~/redis_RPM_Building.sh -f /opt/redis

这代码意思是将dir文件类型打包成rpm类型,生成名字为redis,版本号1.0.0,打包完成后执行redis_RPM_Building.sh脚本,打包后当前目录存在同名的rpm包,进行强制覆盖,打包文件来源为/opt/redis目录。

参数说明:

1.-s 指定源类型
2.-t 指定目标类型,即想要制作为什么包
3.-n 指定包的名字
4.-v 指定包的版本号
5.-d 指定依赖于哪些包
6.-f 第二次打包时目录下如果有同名安装包存在,则覆盖它
7.–post-install 软件包安装完成之后所要运行的脚本;同–after-install

可能会出现的错误:
●Need executable ‘rpmbuild’ to convert dir to rpm {:level=>:error}
解决办法:安装rpm-build

yum install rpm-build -y

猜你喜欢

转载自blog.csdn.net/u013611126/article/details/124429895