上篇文章说到了,在不能上网的情况下用光盘搭建本地yum源,但是当我们有一群服务器也不能上网,这时候要安装东西如果每台服务器都挂载一个光盘的话那就恶心死了。
原创博文来自:www.51niux.com 博主:忙碌的柴少
这时候我们有两种选择,一种是搭建简易版的集群本地yum源,另一种就是搭建真正的跟公网yum源做同步的本地yum源服务器。这时候就要看我们的需求了,如果我们这群服务器就是安装完某一个环境,比如说就是都搭建完lnmp环境就不会再安装其他软件了(就如我上家公司,我们公司有公网的APP,其中的一个大客户想要一个内部局域网使用的环境用于公司内部办公用,他们那边服务器不能上外网,如果想连通外网就要申请很麻烦,环境部署完毕以后也不会装其他软件了。),这时候我们就可以考虑简易版的本地yum源服务器。
另一种情况就是我们的服务器集群庞大,偶尔不定期的可能要装一些其他的东西,这时候就要考虑高大上的跟公网做同步的本地yum源方案了。
说了那么多废话,我们这里先结合上一篇光盘yum源,做一个简易版的集群yum源服务器。
我的系统环境还是Centos 6.4 64位的操作系统,现在是一个崭新的环境了哈,就让他能上外网吧,为啥子要上网呢,是我加入了一些自己的想法。
我们的yum源服务器端位192.168.1.105,客户端为192.168.1.109。
一、 服务端操作:
1. 安装nginx作为HTTP服务器共享系统光盘内的文件(跟ftp共享差不多)
[[email protected] tools]# wget ftp://ftp.csx.cam.ac.uk/pub/software/programming/pcre/pcre-8.35.tar.gz
[[email protected] tools]# tar zxf pcre-8.35.tar.gz #安装pcre使nginx支持正则
[[email protected] tools]# cd pcre-8.35
[[email protected] pcre-8.35]# ./configure -prefix=/usr/local/pcre && make && make install
[[email protected] tools]# wget nginx.org/download/nginx-1.2.9.tar.gz #下载编译安装包
[[email protected] tools]# tar zxf nginx-1.2.9.tar.gz
[[email protected] tools]# cd nginx-1.2.9
[[email protected] nginx-1.2.9]#./configure --prefix=/usr/local/nginx --with-http_stub_status_module --with-pcre=/tools/pcre-8.35 #如果是搭建web环境就不能这样安装了,编译的时候是要加参数的,不过我们这里就是要让其起到一个共享的功能。
[[email protected] nginx-1.2.9]# make && make install
2.2 创建站点目录并配置nginx文件
[[email protected] nginx-1.2.9]# mkdir /data/yum_repo/ #创建站点目录
[[email protected] /]# mkdir /data/yum_repo/Centos-6 #创建以不同linux版本命令的目录
注:如果想让yum服务器为不同版本的linux服务,可在站点目录下面创建不同版本的目录,然后将光盘内的所有的文件拷贝到对应的目录便可。
[[email protected] yum_repo]# vim /usr/local/nginx/conf/nginx.conf #修改为下面的部分
server {
listen 80; #默认端口80端口
server_name 192.168.1.105; #网站名称192.168.1.105
index index.html index.htm index.php;
root /data/yum_repo/; #自定义站点目录为/data/yum_repo
#error_page 502 = /502.html;
autoindex on; #开启nginx的目录浏览功能
autoindex_exact_size off; #文件大小从kb开始显示
autoindex_localtime on; #显示文件的修改时间为服务器的本地时间
location ~ .*\.(php|php5)?$ {
#fastcgi_pass unix:/tmp/php-cgi.sock;
fastcgi_pass 127.0.0.1:9000;
fastcgi_index index.php;
include fastcgi.conf;
}
location ~ .*\.(gif|jpg|jpeg|png|bmp|swf|mp3)$ {
expires 30d;
}
location ~ .*\.(js|css)?$ {
expires 12h;
}
}
log_format access ‘$remote_addr - $remote_user [$time_local] "$request" ‘
‘$status $body_bytes_sent "$http_referer" ‘
‘"$http_user_agent" $http_x_forwarded_for‘;
access_log /data/logs/access.log access;
[[email protected] nginx-1.2.9]# /usr/local/nginx/sbin/nginx -t #检测一下是否配置成功
nginx: the configuration file /usr/local/nginx/conf/nginx.conf syntax is ok
nginx: configuration file /usr/local/nginx/conf/nginx.conf test is successful #这是表示成功的意思。
[[email protected] nginx-1.2.9]# /usr/local/nginx/sbin/nginx #启动nginx服务
下面是页面效果图:
二、客户端的配置
2.1 客户端的yum配置文件修改
[[email protected] ~]# cd /etc/yum.repos.d/ #进入客户端的yum配置文件目录
[[email protected] yum.repos.d]# cp CentOS-Base.repo CentOS-Base.repo.bak20150308 #操作前备份
[[email protected] yum.repos.d]# vi CentOS-Base.repo
[base]
name=CentOS-$releasever - Base
#mirrorlist=http://mirrorlist.centos.org/?release=$releasever&arch=$basearch&repo=os
baseurl=http://192.168.1.105/Centos-6
gpgcheck=1
enable=1
gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-CentOS-6
#released updates
[updates]
name=CentOS-$releasever - Updates
#mirrorlist=http://mirrorlist.centos.org/?release=$releasever&arch=$basearch&repo=updates
baseurl=http://192.168.1.105/Centos-6
gpgcheck=1
gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-CentOS-6
#additional packages that may be useful
[extras]
name=CentOS-$releasever - Extras
#mirrorlist=http://mirrorlist.centos.org/?release=$releasever&arch=$basearch&repo=extras
baseurl=http://192.168.1.105/Centos-6
gpgcheck=1
gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-CentOS-6
#additional packages that extend functionality of existing packages
[centosplus]
name=CentOS-$releasever - Plus
mirrorlist=http://mirrorlist.centos.org/?release=$releasever&arch=$basearch&repo=centosplus
#baseurl=http://mirror.centos.org/centos/$releasever/centosplus/$basearch/
gpgcheck=1
enabled=0
gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-CentOS-6
#contrib - packages by Centos Users
[contrib]
name=CentOS-$releasever - Contrib
mirrorlist=http://mirrorlist.centos.org/?release=$releasever&arch=$basearch&repo=contrib
#baseurl=http://mirror.centos.org/centos/$releasever/contrib/$basearch/
gpgcheck=1
enabled=0
gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-CentOS-6
#基本上就是将mirrorlist注释掉,然后把baseurl的链接地址换一下。[centosplus][contrib]不用改,因为enabled=0,表示模块没有启用。
2.2 测试
[[email protected] yum.repos.d]# ping 202.106.0.20 #我把网关去掉了现在网上不去了
connect: Network is unreachable
[[email protected] yum.repos.d]# ping 192.168.1.105 #能ping通内网yum源服务器
PING 192.168.1.105 (192.168.1.105) 56(84) bytes of data.
64 bytes from 192.168.1.105: icmp_seq=1 ttl=64 time=0.805 ms
^C
--- 192.168.1.105 ping statistics ---
1 packets transmitted, 1 received, 0% packet loss, time 556ms
rtt min/avg/max/mdev = 0.805/0.805/0.805/0.000 ms
我们下载个时间服务器试一试,网上的帖子不管成功不成功都会搞得成功一样,其实真实环境哪有那么理想化,你看我就没成功,其实这些包是有的,只不过版本有些细微的差别,所以不成功。
2.3 巧用yum缓存功能
[[email protected] yum_repo]# vim /etc/yum.conf
keepcache=1 #这里变为1,以后yum安装软件后,软件也会保留到目录/var/cache/yum/x86_64
现在我们在192.168.1.105上面yum下载一下ntp服务:
[[email protected] packages]# yum install ntp -y
[[email protected] packages]# cd /var/cache/yum/x86_64/6/updates/packages/
[[email protected] packages]# ll #看到没我们yum的关联rpm包找到了
total 672
-rw-r--r--. 1 root root 607020 Dec 20 11:01 ntp-4.2.6p5-2.el6.centos.x86_64.rpm
-rw-r--r--. 1 root root 76952 Dec 20 11:01 ntpdate-4.2.6p5-2.el6.centos.x86_64.rpm
[[email protected] packages]# cp * /data/yum_repo/Centos-6/Packages/ #将所有的关联包拷贝到对应的站点目录中去。
现在我们回到客户端继续测试:
第一次失败了,但是我们在yum服务器端稍微操作了一下,客户端也实现了在不能上网的情况下可以yum安装软件了。
下面是个人的一些见解:
1.思想是活的,照搬照抄是不行的,拿这篇文件举例,你去网上找前半部分应该会找到类似的,但是这最后的第三部分,网上应该找不到,是我从实际的工作中,思考出来的一个简单的小方案。可能在大规模的集群场景中并不适用,但是在某些场景中还是启动简化快速部署的作用的。
2.工具是给人用的,灵活运用就能给我们带来便捷,效率。
3. 第三句话是留给自己的,关于第三部要灵活运用,基本上搞一个可以的机器单独当yum源就行了,如果版本相同客户端不闲的蛋疼update的话,基本在yum服务器上面yum一下然后把软件包拷贝到对应的站点目录中就行了。如果服务器已经yum过软件包了,而客户端yum软件包版本失败,可以试着在服务器端yum remove 软件名称,然后重新yum,然后把软件包拷贝到对应的站点目录中去。
原创博文来自:www.51niux.com 博主:忙碌的柴少