1.1 搭建yum仓库
1.1.1 服务端部署流程:
1. 创建rpm包保存的目录
[root@m01 application]# mkdir yum
2. 部署nginx服务
此处忽略安装过程,但nginx主配置文件如下:
[root@m01 yum]# cat /application/nginx/conf/nginx.conf
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 /application/yum;
autoindex on;
index index.html index.htm;
}
error_page 500 502 503 504 /50x.html;
location = /50x.html {
root html;
}
}
}
重启nginx服务即可
3. 挂载光盘到mnt目录
[root@m01 yum]# mount /dev/sr0 /mnt
[root@m01 yum]# cp –a /mnt/* /application/yum 将所有rpm包复制到本地仓库目录中
4. 安装createrepo软件
[root@m01 yum]# yum -y install createrepo
5. 初始化本地yum仓库
[root@m01 yum]# createrepo -pdo /application/yum/ /application/yum/
Spawning worker 0 with 3240 pkgs
Workers Finished
Gathering worker results
Saving Primary metadata
Saving file lists metadata
Saving other metadata
Generating sqlite DBs
Sqlite DBs complete
说明:首次部署yum仓库不用执行,以后每次更新rpm包时需要更新
[root@m01 yum]# createrepo --update /application/yum/
访问本地ip地址 出现次页面证明服务端部署成功
1.1.2 客户端部署:
1. 备份原有的repo源
[root@web01 ~]# cd /etc/yum.repos.d
[root@web01 ~]# mkdir /yum_bak
[root@web01 ~]# mv * /yum_bak
2. 创建本地yum文件
[root@web01 yum.repos.d]# cat local.repo
[local]
name=Server
baseurl=http://10.0.0.61
enabled=1
gpgcheck=0
3. 清空之前的缓存
[root@web01 yum.repos.d]# yum clean all
查看可以安装的软件包
[root@web01 yum.repos.d]# yum --enablerepo=local-disablerepo=base,extras,updates,epel list
可以安装软件了 如果安装不上检查服务端是否有rpm软件包或者清空客户端的yum缓存尝试
1.2 定制rpm包
准备工作: 在那台服务器进行rpm打包就在那台机器上进行如下操作
[root@web01 yum.repos.d]# yum -y install ruby rubygems ruby-devel
查看当前使用的rubygems仓库
[root@web01 yum.repos.d]# gem sources list
*** CURRENT SOURCES ***
http://rubygems.org/
添加淘宝的Rubygems仓库,外国的源慢,移除原生的Ruby仓库
[root@web01 yum.repos.d]# gem sources -a http://mirrors.aliyun.com/rubygems/ --remove http://rubygems.org/
http://mirrors.aliyun.com/rubygems/ added to sources
http://rubygems.org/ removed from sources
一下步骤不用操作,仓库有fpm的软件包的话直接安装fpm命令即可进行打包
安装fpm,gem从rubygem仓库安装软件类似yum从yum仓库安装软件。首先安装低版本的json,高版本的json需要ruby2.0以上,然后安装低版本的fpm,够用
[root@web01 yum.repos.d]# gem install json -v 1.8.3
[root@web01 yum.repos.d]# gem install fpm -v 1.3.3
以上两个软件安装一个即可,然后安装fpm,这里fpm安装没有成功,同学给的fpm的软件包然后我添加到yum仓库中安装成功的,下面可以进行rpm打包了
fpm一些常用参数
-s 指定源类型
-t 指定目标类型,即想要制作为什么包
-n 指定包的名字
-v 指定包的版本号
-C 指定打包的相对路径 Change directory to here before searching forfiles
-d 指定依赖于哪些包
-f 第二次打包时目录下如果有同名安装包存在,则覆盖它
-p 输出的安装包的目录,不想放在当前目录下就需要指定
--post-install 软件包安装完成之后所要运行的脚本;同--after-install
--pre-install 软件包安装完成之前所要运行的脚本;同--before-install
--post-uninstall 软件包卸载完成之后所要运行的脚本;同--after-remove
--pre-uninstall 软件包卸载完成之前所要运行的脚本;同--before-remove
1.2.1 定制nginx rpm包
1. 编写安装rpm软件后执行的脚本
[root@web01 scripts]# vim nginx_rpm.sh
#!/bin/bash
useradd www -M -s /sbin/nologin
ln -s /application/nginx-1.12.2/ /application/nginx
2. 用fpm命令进行rpm软件打包
[root@web01 ~]# fpm -s dir -t rpm -n nginx -v 1.12.2 -d 'pcre-devel,openssl-devel' --post-install /server/scripts/nginx_rpm.sh -f /application/nginx-1.12.2/
3. 将软件包上传到管理端yum仓库目录中即可
说明:discuz站点目录中有很多需要注意权限的目录,在web02服务器上安装好nginx后,需要执行两条命令才可以访问bbs网站
[root@web02 ~]# cd /application/nginx/html/bbs/data/cache
[root@web02 cache]# chmod 777 *
[root@web02 ~]# cd /application/nginx/html/bbs/data/template
[root@web02 template]# chmod 777 *
1.2.2 定制php软件包:
1. 编写安装软件后执行的脚本:
[root@web01 conf]# cat /server/scripts/php_rpm.sh
#!/bin/bash
ln -s /application/php-5.5.32 /application/php
2. 用fpm命令进行打包
[root@web01 conf]# fpm -s dir -t rpm -n php -v 5.5.32 -d 'zlib-devel,libxml2-devel, libjpeg-turbo-devel,freetype-devel,libpng-devel,gd-devel,libcurl-devel,libxslt-devel,libmcrypt-devel,mhash,mcrypt' --post-install /server/scripts/php_rpm.sh -f /application/php-5.5.32
1.2.3 定制mysql软件包:
1. 编写安装后的执行脚本:
[root@db01 scripts]# cat mysql_rpm.sh
#!/bin/bash
ln -s /application/mysql-5.6.34 /application/mysql
useradd -M -s /sbin/nologin mysql
chown -R mysql.mysql /application/mysql/data/
cp /application/mysql/support-files/mysql.server /etc/init.d/mysqld
chmod +x /etc/init.d/mysqld
sed -i 's#/usr/local/mysql#/application/mysql#g' /application/mysql/bin/mysqld_safe /etc/init.d/mysqld
\cp /application/mysql/support-files/my-default.cnf /etc/my.cnf
2. 进行打包:
[root@db01 yum.repos.d]# fpm -s dir -t rpm -n mysql -v 5.6.34 --post-install /server/scripts/mysql_rpm.sh -f /application/mysql-5.6.34/
Created package {:path=>"mysql-5.6.34-1.x86_64.rpm"}
下载依赖关系:
[root@web02 application]# vim /etc/yum.conf
[main]
cachedir=/jiang ---这是仓库的目录,它会把依赖的软件包下载到这个目录中
keepcache=1 ---设置为1 表示下载所有依赖包
[root@web02 ~]# mkdir /jiang
[root@web02 ~]# cd /jiang/
[root@web02 jiang]# find ./ -name "*.rpm"
./base/packages/libxml2-devel-2.7.6-21.el6_8.1.x86_64.rpm
./base/packages/pcre-devel-7.8-7.el6.x86_64.rpm
./base/packages/zlib-devel-1.2.3-29.el6.x86_64.rpm
./base/packages/expat-devel-2.0.1-13.el6_8.x86_64.rpm
以上就是安装某一个软件需要的所有依赖关系
有了自己的yum仓库后,可以说ansible批量部署的技能是更上一层楼啊!
要想提高自动化运维的能能力,yum仓库只是一个小小的开始