解决puppet的certificate verify failed错误

昨天蚊子我开始学习puppet,按照快速入门文档一步步的操作

先是master安装puppet和puppet-server,client上安装puppet,然后,master上启动puppetmaster进程,client上执行puppetd –server puppet-master –test,然后在master上执行puppetca -l能看到client发过来的验证请求,接着在master执行puppetca –s -a对client的验证进行签名,以上操作都可以正常的完成。 Continue reading “解决puppet的certificate verify failed错误”

使用ngx_slowfs_cache模块构建本地缓存

Nginx的Web缓存服务主要由proxy_cache相关指令集和fastcgi_cache相关指令集构成,前者用于反向代理时,对后端内容源服务器进行缓存,后者主要用于对FastCGI的动态程序进行缓存。两者的功能基本上一样。

蚊子下午在翻看nginx所有addone模块的是,发现了ngx_slowfs_cache,它扩充了Nginx的缓存功能,通过 ngx_slowfs_cache 可以实现本地站点静态文件缓存(配合root指令使用)。此功能为低速的存储设备创建快速缓存提供了可能。 Continue reading “使用ngx_slowfs_cache模块构建本地缓存”

web版清除squid缓存V1.2.2[原创]

在1.2.1版本中,蚊子增加了squid服务器分组功能,方便了清除在不同squid服务器上的url

但相对于维护squid服务器组的文件,就有点不方便了

于是蚊子在这个版本中增加了在线编辑squid组服务器配置文件的功能,方便管理人员在线就可以对squid组配置文件进行修改编辑操作。

温馨提示:由于蚊子的这套程序暂时没有做登陆认证什么的,所以任何web可以访问程序的人都可以编辑配置文件,建议放置在内网使用。

发张v1.2.2版本的截图:

1.2.2版本下载地址:

更新说明:

增加了css文件,将css文件夹放置到和purge_cache.php文件平级目录下
增加了editconfig.php文件,放置到和purge_cache.php平级目录下
其他文件覆盖更新即可

purge_cache程序转移到google-code

蚊子我也曾在google-code中搜过一些项目,没想到,今天我也要拥有自己的google-code空间了。

purge_cache到现在已经三个版本了,每次都是发送到sina的share空间中,但每次程序的地址都在更改,感觉不太方便,于是蚊子我也申请了一个google-code空间。

蚊子自认自己的写的这个程序不能称其为一个项目。当初想到写这个完全是为了想要图省事,把清除缓存的工作交给别人,解放自己的生产力。

同样,这个程序也没有什么技术含量,高手可以绕行了。我也是刚刚开始接触php,很多地方可能做的并不太好,还望各位海涵。

对于这个程序,各位在使用过程中有啥想法欢迎来我的博客上交流。

google-code地址:

目前,蚊子的google-code空间还很简陋,很多说明什么的都没有添加,我会慢慢的进行完善的。

web版清除squid缓存V1.2.1[原创]

晚上的时候,蚊子又对这个程序进行了小小的更新。

我相信很多公司的squid服务器都是按应用划分成组,每一组squid服务器提供着某一个或几个域名的cache服务,这样的话,如果用1.2版本就有点麻烦了,需要准备多个配置文件。

于是,蚊子在1.2版本的基础上进行的调整,增加了squid组的功能,这样可以通过下拉菜单选择不同的squid组进行不同域名的url的更新了。方便了更新操作。

config.ini文件的内容如下所示

[squid_group1]

squidhost1 = 192.168.28.130:3128
squidhost2 = 192.168.28.201:3128

[squid_group2]

squidhost1 = 192.168.28.202:3128
squidhost2 = 192.168.28.203:3128

[]中是组名

紧跟着的每行是squid服务器列表

组名和服务器名可自行更改,理论上可以使用中文,但蚊子没有对中文的配置测试过,所以不保证能正常使用。

来一张1.2.1版本的截图:

1.2.1版本下载地址:

更新没有啥注意事项,只需要下载后覆盖原来文件即可

web版清除squid缓存V1.2[原创]

今天蚊子又对这个程序进行了更新,更新变化不是很大,主要是增加了在多个squid上更新多个url地址这个功能。

另外目前我有一个想法,就是,是否需要每次都显示那么详细的什么url在什么squid上更新,是不是就给一个统一的提示说明就好,提示使用者请求都被更新,当有更新失败的再详细提示。这样是不是更人性化一些。

另外在网上看squid相关的资料,貌似官方也没出个按关键词或匹配所给字词的url的清除方法,看看有没有什么其他的折中的方式吧,又得啃文档了,估计还得尝试着去看看源码呢。

发张1.2版的截图:

 

1.2版本的下载地址:

更新没啥注意事项,直接覆盖原来文件就行了。

web版清除squid缓存V1.1[原创]

蚊子今天有时间,把这个程序更新了一下,变动不是很大,增加了一个config.ini的文件。通过这个文件来增加删减squid服务器,这个文件内容如下

[squid_host]

squidhost1 = 192.168.122.1:80

squidhost2 = 192.168.122.2:80

这样就可以对多台squid进行清除缓存。

对呀缓存的清除这块暂时没有变化,还是只能清除一个url

对于已经下载了1.0版的用户来讲,更新还是很方便的,只需要下载压缩包,解压后覆盖原来的php文件即可。

发张新版的截图:

下载地址:http://ishare.iask.sina.com.cn/f/9541707.html

使用中如有什么问题,欢迎交流。

web版清除squid缓存V1.0[原创]

一直以来蚊子就想解放自己,让想更新图片的人自己去刷新squid,然后看到图片的更新情况,现在终于实现了,我的第一版web方式刷新squid缓存的小应用诞生了,特别说明的是,这个版本的功能还非常的有限,每次只能清除一台squid上的一个url,不过蚊子坚信,之后我会逐渐完善这个小应用。

先来说说这个程序的实现原理吧。squid是用purge来清除缓存,purge是squid专有的一个http的header,默认情况下squid是禁止使用purge的,需要在squid.conf文件中进行配置才可以,配置方法如下

acl localhost src 127.0.0.1/32
acl purge method PURGE
http_access allow purge localhost
http_access deny purge

这样配置完之后就可以使用squidclient在squid本机进行清除缓存操作

squidclient –p port –m purge http_url

其实知道了清除squid缓存用的是purge header,那就可以通过telnet模仿squidclient命令了,方法如下

telnet 127.0.0.1 80
Trying 127.0.0.1…
Connected to localhost.localdomain (127.0.0.1).
Escape character is ‘^]’.
输入:
purge http://10.192.14.160/tupian/IMG_0303.JPG HTTP/1.0\r\n

回车后如果返回200 ok说明被刷新了,如果返回的是404 Not Found说明一开始就没缓存

蚊子的这个小应用基本就是遵照上面的这个原理实现的,程序的使用方法很容易,只需要lamp的环境就行,同时,需要授予运行purge_cache程序的机器有执行purge的权限,squid的配置方式和上面的基本相同

acl purge method PURGE
acl purge_host src ip/mask
acl localhost src 127.0.0.1/32
http_access allow purge localhost
http_access allow purge purge_host
http_access deny purge

其中purge_host是允许Purge Cache程序的机器的ip地址

下载了我的那个程序后,需要修改purge_cache.php文件中的

# 定义squid信息
define(“SQUID_HOST”        , “192.168.122.2”);  将这里的ip改成你实际的squid的ip地址
define(“SQUID_PORT”        , “80”);

上张截图吧:

程序可以到下载:http://ishare.iask.sina.com.cn/f/9517901.html

在使用的过程中如果大家有啥好的想法和建议,千万别不好意思说出来。

apache下的rewrite实例一则

蚊子前几天上线了个页面,程序员做的时候是把动态页面和静态页面分离开的放在了两个目录,同时呢,所用域名下又没有使用二级目录,目录结构是这样的

php文件:/data/webroot/php/cgi
html等静态文件:/data/webroot/html

访问情况是这样的(我用我自己的域名做举例):

d.wenzizone.cn/index.php或者d.wenzizone.cn—>/data/webroot/php/cgi/index.php
d.wenzizone.cn/index.html及所有静态文件 —>/ata/webroot/html
所有php的页面都 —>/data/webroot/php/cgi/

开发人员告诉我了这个结构之后,蚊子认为只能通过apache的url rewrite来实现了,apache的配置如下

<VirtualHost *:80>
    ServerAdmin webmaster@d.wenzizone.cn
    DocumentRoot /data0/webroot           #这里一定要设置到这级目录
    ServerName d.wenzizone.cn
    DirectoryIndex index.php
    ErrorLog logs/d.wenzizone.cn-error_log
    CustomLog logs/d.wenzizone.cn-access_log common
    <directory /data0/webroot>
        DirectoryIndex index.php
        rewriteengine on
        RewriteBase /      #将/data0/webroot设置为基准目录

        #将d.wenzizone.cn和d.wenzizone.cn/的访问转化成d.wenzizone.cn/index.php 

        rewritecond %{REQUEST_URI} ="" [OR]
        rewritecond %{REQUEST_URI} =/
        rewriterule ^(.*)$ index.php

        #将所有php的页面重定向到基准目录下的php/cgi目录下

        rewritecond %{REQUEST_FILENAME} !-f
        rewritecond %{REQUEST_FILENAME} \.php$
        rewriterule ^(.*)$ /php/cgi/$1 [L]

        #将所有非php的静态文件重定向到基准目录下的html目录下

        rewritecond %{REQUEST_FILENAME} !-f
        rewritecond %{REQUEST_URI} !\.php$
        rewriterule ^(.*)$ /html/$1 [L]
    </directory>

    #下面这两项是打开rewrite日志,当时蚊子为了调试打开了,成功之后关闭就好了,不然会增加apache负担
    #rewritelog /var/log/httpd/rewrite.log
    #RewriteLogLevel 3
</VirtualHost>

保存后重启apache就可以了。

另外补充一点的,对于上面这个需求来讲,在nginx下实现起来是非常容易的,下面蚊子也把nginx下的实现方式写出来

server {
    listen       80;
    server_name  d.wenzizone.cn;

    location = / {
        root /data1/webroot/php/cgi;
        index index.php;
    }

    location / {
        root /data1/webroot/html;
        index index.html index.htm;
        expires 30d;
    }

    location ~* \.php$ {
            root /data1/webroot/php/cgi;
            index index.php;
            fastcgi_pass   127.0.0.1:9000;
            include        fastcgi_params;
            fastcgi_param  SCRIPT_FILENAME          $document_root$uri;
            fastcgi_param  SCRIPT_NAME              $uri;
    }
}

对于蚊子的需求,基于apache如果哪位达人还有更好更简便的方法,还望告知,不胜感激