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');         #urlpjname的值赋给$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);


相关内容