SVN自助更新:运维利器Puppet实例讲解(一)(1)(3)
B、puppet-client上的配置
a) 登录到app198-vhost-192-55这台主机上,yum安装puppet,然后在命令行执行
puppetd --server app-21-199.wenzizone.cn –test
由于我们是做的自动签名,并且在服务器上配置了puppet-client的配置文件,所以执行完过后puppet自动会以守护进程的方式启动
b) 配置svn更新主目录,及web页面项目的主目录,在我这个案例中的主目录是/var/www/html/www.51cto.com/zf,进入到这里使用svn co svn_source ./将初始的项目导入出来。这样就为了svn up命令执行做好了对应的环境。
通过简单的两步,就已经把puppet-client上的准备工作都完成了,是不是很简单。
那么下面就是perl-cgi部分了。
C、部署svn自助更新web脚本
这里可以将脚本部署在和puppet-master同一台主机上,当然也可以考虑分布式的,那样就需要调整这个脚本。现在先以同一台机器为例。
a)安装apache,配置cgi目录
因为我们的访问量不会很大,我直接用yum安装了。所以cgi目录使用的是默认的cgi-bin目录。
b)编写对应的脚本pjupdate.cgi
#! /bin/env perl use CGI; my $query = CGI->new(); #初始化cgi实例 my $file_name = $query->param('pjname'); #将url中pjname的值赋给$file_name变量 my $up_time = `date +%s`; #获得从1970-01-01 00:00:00 UTC到现在的秒数
my $dst_dir = "/etc/puppet/modules/svn/files/"; #目标文件的目录
my $success = open FH,">".$dst_dir.$file_name; #开的目标文件,即触发svn的文件
if(!$success) {
print "Content-type:text/html\n\n";
print "不能更新此项目,请联系管理员!"; #如果打开不成功进行提示,通常是权限问题,文件属主改成apache执行用户 } else { print FH"$up_time"; #更新文件内容,为了达到变更此文件md5值的效果 print "Content-type:text/html\n\n"; print "更新已经开始,请5~10分钟后查看页面"; } close(FH);
评论暂时关闭