月份:2011年8月

Ngnix出现高危漏洞,可远程执行代码

Ngnix出现高危漏洞,可远程执行代码:http://t.cn/am3yDl

Ngnix在遇到%00空字节时与后端FastCGI处理不一致,导致可以在图片中嵌入PHP代码然后通过访问xxx.jpg%00.php来执行其中的代码。影响版本:0.5.*, 0.6.*, 0.7 <= 0.7.65, 0.8 <= 0.8.37。请各位站长检查服务器版本,尽快升级!!


写个php脚本监控buyvm的vps是否有货

目前博客运行在buyvm的openvz的15$/Y 的vps,还有二个月就要到期了,准备换buyvm的 256m kvm vps ,价格不贵,5$/m .

buyvm用过的这段时间里,非常稳定,速度不错,放个博客还是不错的。但货比较少,经常缺货。所以就写个脚本监控buyvm是否有货,网上已有热心网友提供了货源的json数据源,只要每小时获取后分析一下有没货就ok了。

如果有货的话,通过email的方式发送到我的gmail邮箱 ,因为手机是android系统,gmail邮箱可以实时的push邮件,当一有货就知道了,找台电脑就可以抢货了!

通知到有货后,脚本就自动在脚本文件头部加上exit,以后就不会再发邮件了,防止脚本不停的发信!

vim /home/sh/buyvm.php

<?php
$c=file_get_contents("http://doesbuyvmhavestock.com/automation.php?format=json");
$c=json_decode($c,true);
if($c[6]['qty'] > 0){
exitsh();
mail('phpd.cn@gmail.com','buyvm kvm 256m',$c[6]['name'].' : '.$c[6]['qty']."\r\nhttp://buyvm.net");}
function exitSh()
{
$file=file("/home/sh/buyvm.php");
$file[0].="\nexit;";
file_put_contents("/home/sh/buyvm.php",$file);
}

crontab -e

添加 一条crontab记录,让脚本每小时执行一次

01 * * * * root  /usr/local/php/bin/php /home/sh/buyvm.php


mysql 主从同步实例-从同步备份步骤

环境:
A、B的MySQL 数据库 版本同为5.0.24

A:主服务器
操作系统:Windows xp
IP地址:192.168.0.81
B:从服务器
操作系统:Windows xp
的IP地址:192.168.0.82

配置过程:
1、在A的数据库中建立一个备份帐户,命令如下:
GRANT REPLICATION SLAVE,RELOAD,SUPER ON *.*
TO test@’192.168.0.82 ‘
IDENTIFIED BY ‘1234’;

建立一个帐户test,并且只能允许从192.168.0.82这个地址上来登陆,密码是1234。

在B Slave上做连接测试:

mysql -h 192.168.0.81 -u test -p

2、对A服务器的配置进行修改,打开mysql/my.ini文件,在[mysqld]下面添加如下内容:
server-id=1
log-bin=D:\server2\mysql\log-bin.log

server-id:为主服务器A的ID值
log-bin:二进制变更日值


cornerstone2.0永久试用的方法

open  ~/Library/Preferences/ByHost/.GlobalPreferences.6F1617DF-DDD5-5F2D-ACA0-F7F3EE5F7B41.plist, 或者是.GlobalPreferences.*.plist类似格式的文件。

打开之后,删除com.zennaware.Cornerstone:2.0这条记录即可。

重新打开cornerstone,就又可以重新试用15天了


centos 6.0 64位编译php出错的解决方法

同样适用于lnmp0.7等一键安装脚本

经分析,是由于gcc无法找到libjpeg和png等库引起的,把lib64目录下的库文件放到lib下就ok了

cp -frp /usr/lib64/libjpeg* /usr/lib/
cp -frp /usr/lib64/libpng* /usr/lib/
cp -frp /usr/lib64/libldap* /usr/lib/

图片服务器开发

网站按功能进行分割,采用API方式对应用服务器提供服务

图片服务器,主要的作用是图片的保存、切图、缩放等操作。

后期网站访问量比较大的情况下,采用rsync,使多台图片服务器图片数据同步做集群。前台通过crc32计算调用不同的图片服务器,分摊图片服务器的压力。当数据量比较大的情况下也可以做分布式处理!

流程:

1 应用服务器接收到用户上传的图片

2 使用php的curl函数通过http把图片原封不动的传输到图片服务器。

3 通过参数,告诉图片服务器是否保留源图、切割缩放多大的尺寸等。

4 图片服务器接收到图片后,按参数进行图像操作,同时,把生成的图像放入年月日目录

5 file_md5得到图像文件的md5值,去数据库中搜索,看是否存在已有图片

6 如果存在的话,删除刚刚保存的文件,从数据库中直接返回真实的图片url地址(例:http://img.sm.com/2011/08/2/dfadfa.jpg)。

7 如果是新图片的话,把图片信息写入数据库 ,图像的md5做为ID号,通过hash id号分表保存。

8 图片服务器返回一个数组,数组中保存了处理了的图片的全部图片ID 及 url信息,借应用服务器使用及保存