以rdo为例(http://openstack.redhat.com/Quickstart),介绍本地源制做方案: html
选择一台CentOS服务器,安装如下软件: web
1
2
|
yum install yum-utils createrepo yum-plugin-priorities
yum install httpd
|
设置httpd shell
1
2
|
chkconfig httpd on
service httpd start
|
获取repo文件并使用reposync同步源 centos
1
2
|
yum install -y http://rdo.fedorapeople.org/rdo-release.rpm
yum repolist #能够看到源的id列表
|
同步openstack-icehouse这个repo 安全
1
2
|
cd /var/www/html/
reposync --repoid=openstack-icehouse
|
第一次同步时间较长,同步结束后 bash
1
|
createrepo –update /var/www/html/openstack-icehouse
|
建立完成后,就可使用web测试:http://[ip]/openstack-icehouse/ 服务器
此处若使用其余目录下的文件夹的符号连接到/var/www/html处,须要关闭SELinux的安全选项 tcp
1
|
setenforce 0
|
测试若有问题多是80端口未开放 工具
1
|
vi/etc/sysconfig/iptables
|
添加如下内容到其中已有的22端口这条规则的下面 oop
1
2
|
-A INPUT -m state --state NEW -m tcp -p tcp --dport 80 -j ACCEPT
-A INPUT -m state --state NEW -m tcp -p tcp --dport 3306 -j ACCEPT
|
配置crontab定时任务进行按期reposync和createrepo
1
|
yuminstallcrontabs
|
添加执行reposync和createrepo的crontab命令
此次在公司直接作了不少经常使用源的镜像,写了个crontab按期半夜2点执行的脚本,完整以下:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
|
#!/bin/bash
BASE_PATH=/home/repo
cd$BASE_PATH
REPO_LIST=(base extras updates foreman foreman-plugins openstack-icehouse puppetlabs-deps puppetlabs-products epel)
forREPO_NAMEin${REPO_LIST[@]};do
echo-------$REPO_NAME--------
LOGFILE_PATH=$BASE_PATH/reposync_log/$REPO_NAME
mkdir-p $LOGFILE_PATH
reposync --repoid=$REPO_NAME 2>&1 |tee$LOGFILE_PATH/reposync_$(date+"%Y%m%d%H").log
if[ $REPO_NAME = base ] || [ $REPO_NAME = extras ] || [ $REPO_NAME = updates ];then
createrepo --update $REPO_NAME/Packages2>&1 |tee$LOGFILE_PATH/createrepo_$(date+"%Y%m%d%H").log
else
createrepo --update $REPO_NAME 2>&1 |tee$LOGFILE_PATH/createrepo_$(date+"%Y%m%d%H").log
fi
done
|
脚本完成了对REPO_LIST下源的镜像同步工做,并记录log(其中base等repo的rpm包在Packages文件夹下,因此createrepo的时候,路径多一层)
搞定了本地源,若是要使用的话就修改机器的/etc/yum.repos.d下的文件,将bashurl写成本地ip和路径,并把gpgcheck设置为0。
使用EMOS-1.5.ISO光盘制做本地 yum 仓库;
此外,咱们假设本次安装默认域是extmail.org,主机名为:mail.extmail.org
安装CentOS-5.3光盘中createrepo工具
shell
加载EMOS-1.5的光盘,请把emos的光盘放到光驱中
shell
备注:加载ISO的方法
shell
shell
加入如下内容:
[EMOS] name=EMOS baseurl=file:///mnt/ enabled=1 gpgcheck=0
从新获取最新的仓库信息:
shell
Bad id for repo: calamari server, byte = 8
错误是repo的【】中不能有空格。