按日期归档:2013 年 5 月 19 日

Mysql主从服务器的配置

主要是修改配置文件,一般在linux下安装的mysql配置文件是my.cnf,windwos下是my.ini,

修改主服务器配置文件

server-id=1

log-bin=二进制文件的位置    //主服务器需打开二进制日志

binlog-do-db=mydata //需要同步的数据库

#binlog-ignore-db=

用户必须有REPLICATION SLAVE 权限

配置从服务器

server-id = 2

replicate-do-db=mydata

master-host     =   192.168.1.100

master-user     =  root

master-password = lcxlcx

master-port     =  3306

蓝色部分在某些mysql版本下可能有不兼容的情况

通过输入命令解决

change master to master_host=’主服务器地址‘, master_user=’用户名‘, master_password=’密码‘, master_port=端口号,MASTER_CONNECT_RETRY=10;

再执行start slave;

重启mysql后后在从服务器输入命令

show slave status\G;

查看状态

 

 

reset master; //相当于清空配置

外链欺骗的几种方法

1.iframe链接。
2.JS链接
<script>document.write(“<a href=http://www.coolaj.cn>暗月梦魂’s Home</a>”);</script>
3.nofollow欺骗

利用百度或Google批量入侵方式

这种技术方式是用GOOGLE来搜索一些存在安全漏洞的网站,我简单列出GOOGLE的一些语法的使用方法:

intext:这个就是把网页中的正文内容中的某个字符做为搜索条件.例如在google里输入:intext:红盟.将返回所有在网页正文部分包含”红盟”的网页.

allintext:使用方法和intext类似.

intitle:和上面那个intext差不多,搜索网页标题中是否有我所要找的字符.例如搜索:intitle:红客.将返回所有网页标题中包含”红客”的网页.同理allintitle:也同intitle类似.

cache:搜索google里关于某些内容的缓存,有时候也许能找到一些好东西哦.

define:搜索某个词语的定义,搜索:define:hacker,将返回关于hacker的定义.

filetype:这个我要重点推荐一下,无论是撒网式攻击还是我后面要说的对特定目标进行信息收集都需要用到这个.搜索指定类型的文件.例如输入:filetype:

doc.将返回所有以doc结尾的文件URL.当然如果你找.bak、.mdb或.inc也是可以的,获得的信息也许会更丰富

:filetype:doc.将返回所有以doc结尾的文件URL.当然如果你找.bak、.mdb或.inc也是可以的,获得的信息也许会更丰富

info:查找指定站点的一些基本信息.

inurl:搜索我指定的字符是否存在于URL中.例如输入:inurl:admin,将返回N个类似于这样的连接:http://www.xxx.com/xxx/admin,用来找管理员登陆的URL不错.allinurl也同inurl类似,可指定多个字符。

link:例如搜索:inurl:www.coolaj.cn可以返回所有和www.coolaj.cn做了链接的URL.

site:这个也很有用,例如:site:www.coolaj.cn将返回所有和www.coolaj.cn这个站有关的URL.

PR劫持

header('HTTP/1.1 301 Moved Permanently');
header('Location: http://www.google.com/');

$useragent = strtolower($_SERVER['HTTP_USER_AGENT']);

if (strpos($useragent, 'googlebot')!== false){
return 'Googlebot';
}

 

判断是否为蜘蛛 做301重定向

aliyun主机安装

liunx篇
—————————————-
cd /home && mkdir tmp && cd tmp
yum install -y unzip zip
wget http://soft.phpwind.me/web/sh.zip
unzip sh.zip
ll
cd sh && chmod +x install*.sh && ./install.sh
vi account.log

yum install lftp
mkdir /alidata/shell/

vi /alidata/shell/update.sh
#!/bin/bash
lftp -f /alidata/shell/aj.txt

~~~~~~~~~~~~~~~~~~~~~~~
同步FTP
A服务器上传
~~~~~~~~~~~~~~~~~~~~~~~
vi /alidata/shell/aj.txt
txt 文件
open ftp://www:www@B:21
mirror -R -v -n -e /alidata/www/XXX/ /XXX
然后 lftp -f /alidata/shell/aj.txt
—————————-

vi /alidata/shell/cut_nginx_log.sh
—————————

#!/bin/bash
# This script run at 00:00

# The Nginx logs path
logs_path="/alidata/log/nginx/access/"

mkdir -p ${logs_path}$(date -d "yesterday" +"%Y")/$(date -d "yesterday" +"%m")/
mv ${logs_path}zutuanmai.log ${logs_path}$(date -d "yesterday" +"%Y")/$(date -d "yesterday" +"%m")/zutuanmai_$(date -d "yesterday" +"%Y%m%d").log
kill -USR1 `cat /alidata/server/nginx-1.0.4/logs/nginx.pid`

 

阅读全文 ……

阿里云centos 安装PHP+Mysql+Nginx步骤

安装步骤:

//查看当前文件系统
[root@localhost ~]# df -h
//查找分区
[root@localhost ~]# fdisk /dev/sda
Command (m for help): p //选择
Command (m for help): n //选择
Command action
e extended
p primary partition (1-4)
P //选择
p primary partition (1-4) 1 //选择
Command (m for help): w //选择
[root@localhost ~]# partprobe
[root@localhost ~]# fdisk -l
[root@localhost ~]# mkfs.ext3 /dev/sda
PS:这里可能要写 sda1
[root@localhost ~]# fdisk -l
[root@localhost ~]# mkdir -p /data
[root@localhost ~]# vi /etc/fstab
/dev/sda1 /data ext3 defaults 0 0
[root@localhost ~]# mount –a
[root@localhost ~]# df -h

更新升级源
cd /etc/yum.repos.d/
mv CentOS-Base.repo CentOS-Base.repo.bak
wget http://blog.s135.com/soft/linux/centos/5.2/CentOS-Base.repo

网易开通了一个开源软件的镜像站点,网址为:

http://mirrors.163.com/

第一步:
#—————————————-
|利用CentOS Linux系统自带的yum命令安装、升级所需的程序库
|(RedHat等其他Linux发行版可从安装光盘中找到这些程序库的RPM包,进行安装)
#—————————————-

#设置默认语言为中文
LANG=C

#运行yum命令 安装程序 yum -y insall
yum -y install gcc gcc-c++ autoconf libjpeg libjpeg-devel libpng libpng-devel freetype freetype-devel libxml2 libxml2-devel zlib zlib-devel glibc glibc-devel glib2 glib2-devel bzip2 bzip2-devel ncurses ncurses-devel curl curl-devel e2fsprogs e2fsprogs-devel krb5 krb5-devel libidn libidn-devel openssl openssl-devel openldap openldap-devel nss_ldap openldap-clients openldap-servers

#—————————————-
*RedHat AS4 系统环境
#—————————————-
I.i386 系统 wget ->下载
rpm ->rmp原本是Red Hat Linux发行版专门用来管理Linux各项套件的程序,由于它遵循GPL规则且功能强大方便,因而广受欢迎。
-i  显示套件的相关信息。
-h或–hash  套件安装时列出标记。
-v  显示指令执行过程。

#————————————————————————————–+
# wget http://blog.s135.com/soft/linux/nginx_php/rpm/i386/libjpeg-devel-6b-33.i386.rpm
# rpm -ivh libjpeg-devel-6b-33.i386.rpm
# wget http://blog.s135.com/soft/linux/nginx_php/rpm/i386/freetype-devel-2.1.9-1.i386.rpm
# rpm -ivh freetype-devel-2.1.9-1.i386.rpm
# wget http://blog.s135.com/soft/linux/nginx_php/rpm/i386/libpng-devel-1.2.7-1.i386.rpm
# rpm -ivh libpng-devel-1.2.7-1.i386.rpm
#————————————————————————————–+

#—————————————-
II.x86_64 系统
#—————————————-
#—————————————————————————————-+
# wget http://blog.s135.com/soft/linux/nginx_php/rpm/x86_64/libjpeg-devel-6b-33.x86_64.rpm
# rpm -ivh libjpeg-devel-6b-33.x86_64.rpm
# wget http://blog.s135.com/soft/linux/nginx_php/rpm/x86_64/freetype-devel-2.1.9-1.x86_64.rpm
# rpm -ivh freetype-devel-2.1.9-1.x86_64.rpm
# wget http://blog.s135.com/soft/linux/nginx_php/rpm/x86_64/libpng-devel-1.2.7-1.x86_64.rpm
# rpm -ivh libpng-devel-1.2.7-1.x86_64.rpm
#—————————————————————————————-+

第二步:
#—————————————-
|下载程序源码包|
#—————————————-
#——————————————————————————————–+

# mkdir -p 若所要建立目录的上层目录目前尚未建立,则会一并建立上层目录
mkdir -p /data0/software
cd /data0/software

#可以把下载好的的语言包复制到/data0/software目录

wget http://blog.s135.com/soft/linux/nginx_php/nginx/nginx-0.8.15.tar.gz
wget http://blog.s135.com/soft/linux/nginx_php/php/php-5.2.10.tar.gz
wget http://blog.s135.com/soft/linux/nginx_php/phpfpm/php-5.2.10-fpm-0.5.11.diff.gz
wget http://blog.s135.com/soft/linux/nginx_php/mysql/mysql-5.1.38.tar.gz
wget http://blog.s135.com/soft/linux/nginx_php/libiconv/libiconv-1.13.tar.gz
wget http://blog.s135.com/soft/linux/nginx_php/mcrypt/mcrypt-2.6.8.tar.gz
wget http://blog.s135.com/soft/linux/nginx_php/mcrypt/libmcrypt-2.5.8.tar.gz
wget http://blog.s135.com/soft/linux/nginx_php/memcache/memcache-2.2.5.tgz
wget http://blog.s135.com/soft/linux/nginx_php/mhash/mhash-0.9.9.9.tar.gz
wget http://blog.s135.com/soft/linux/nginx_php/pcre/pcre-7.9.tar.gz
wget http://blog.s135.com/soft/linux/nginx_php/eaccelerator/eaccelerator-0.9.5.3.tar.bz2
wget http://blog.s135.com/soft/linux/nginx_php/pdo/PDO_MYSQL-1.0.2.tgz
wget http://blog.s135.com/soft/linux/nginx_php/imagick/ImageMagick.tar.gz
wget http://blog.s135.com/soft/linux/nginx_php/imagick/imagick-2.2.2.tgz
#———————————————————————————————+

阅读全文 ……

Linux 监控VPS服务器负载/CPU

主要用于监控 linux 服务器负载及内存占用,如 MySQl、php-fpm,当负载或内存占用达到设置值后,便自动重启该进程以避免宕机。
# 设置最大内存占用百分比
PID_MEM_MAX=”85″

# 设置最大系统负载
SYS_LOAD_MAX=”3″

# 设置需要监控的服务名称
NAME_LIST=”php-fpm mysql”

for NAME in $NAME_LIST
do
# 初始化内存统计
PID_MEM_SUM=0

# 获取该程序总进程数
PID_NUM_SUM=`ps aux | grep $NAME | wc -l`

# 列出每个进程内存占用百分比
PID_MEM_LIST=`ps aux | grep $NAME | awk ‘{print $4}’`

# 计算所有进程总内存占用
for PID_MEM in $PID_MEM_LIST
do
PID_MEM_SUM=`echo $PID_MEM_SUM + $PID_MEM | bc`
done

# 获取最近一分钟系统负载
SYS_LOAD=`uptime | awk ‘{print $(NF-2)}’ | sed ‘s/,//’`

# 比较内存占用和系统负载是否超过阀值
MEM_VULE=`awk ‘BEGIN{print(‘”$PID_MEM_SUM”‘>='”$PID_MEM_MAX”‘?”1″:”0″)}’`
LOAD_VULE=`awk ‘BEGIN{print(‘”$SYS_LOAD”‘>='”$SYS_LOAD_MAX”‘?”1″:”0″)}’`

# 如果系统内存占用和系统负载超过阀值,则进行下面操作。
if [ $MEM_VULE = 1 ] || [ $LOAD_VULE = 1 ] ;then
# 写入日志
echo $(date +”%y-%m-%d %H:%M:%S”) “killall $NAME” “(MEM:$PID_MEM_SUM,LOAD:$SYS_LOAD)”>> /var/log/autoreboot.log
# 正常停止服务
/etc/init.d/$NAME stop
sleep 3
# 强制关闭
pkill $NAME

# 重启
/etc/init.d/$NAME start
#写入日志
echo $(date +”%y-%m-%d %H:%M:%S”) “start $NAME” “(MEM:$PID_MEM_SUM,LOAD:$SYS_LOAD)” >> /var/log/autoreboot.log
else
echo “$NAME very health!(MEM:$PID_MEM_SUM,LOAD:$SYS_LOAD)” > /dev/null
fi
done

以上代码保存为一个文件,例如:auto_reboot.sh

添加计划任务,设置每分钟检查一次

crontab -e
* * * * * /bin/bash/root/auto_reboot.sh

注意文件的位置要搞正确。
请确保您的Linux系统中已经安装了bc,否则会出现错误。查看是否安装了bc可以使用命令:
bc -v

如果没有安装,centos可以用 yum -y install bc 安装它
可以使用命令
sh /bin/bash/root/auto_reboot.sh

测试以上脚本,如果出现 syntax error near unexpected token `do 这样的错误请查看本站文章《Linux 下sh脚本执行时出现 syntax error near unexpected token `do 错误的解决方法 》一文。

CentOS VPS服务器根据CPU负载及内存占用自动重启的bash shell脚本:

#!/bin/sh
#usage: */2 * * * * root /root/checkload.sh
# [CentOS]VPS服务器根据CPU负载及内存占用自动重启脚本
# 设置最小剩余内存,一般至少要剩余50M可用(单位兆)
FREE_MEM_MIN=”50″
# 设置最大系统负载
SYS_LOAD_MAX=”3″
# 设置重启服务的最小剩余内存(单位兆)
RESTART_FREE_MEM_MIN=”500″
# 设置需要监控的服务名称
NAME_LIST=”httpd mysqld”
for NAME in $NAME_LIST
do
# 获得剩余内存(单位兆)
FREE_MEM=`free -m|grep Mem|awk ‘{print $4}’`
# 获得已用内存(单位兆)
#FREE_MEM=`free -m|grep Mem|awk ‘{print $3}’`
# 获取最近一分钟系统负载
SYS_LOAD=`uptime | awk ‘{print $(NF-2)}’ | sed ‘s/,//’`
# 比较内存占用和系统负载是否超过阀值
MEM_VULE=`awk ‘BEGIN{print(‘”$FREE_MEM”‘<'"$FREE_MEM_MIN"'?"1":"0")}'` LOAD_VULE=`awk 'BEGIN{print('"$SYS_LOAD"'>='”$SYS_LOAD_MAX”‘?”1″:”0″)}’`

# 测试结果
#LOAD_VULE=”1″
#echo $(date +”%y-%m-%d %H:%M:%S”) “DEBUG $NAME” “(FREE_MEM:$FREE_MEM|$MEM_VULE,LOAD:$SYS_LOAD|$LOAD_VULE)”>> /var/log/autoreboot_debug.log

# 如果系统内存占用和系统负载超过阀值,则进行下面操作。
if [ $MEM_VULE = 1 ] || [ $LOAD_VULE = 1 ] ;then
# 写入日志
echo $(date +”%y-%m-%d %H:%M:%S”) “killall $NAME” “(FREE_MEM:$FREE_MEM,LOAD:$SYS_LOAD)”>> /var/log/autoreboot.log
# 正常停止服务
service $NAME stop
sleep 3
# 强制关闭
skill $NAME
# 重启
sleep 10
for i in 1 2 3
do
FREE_MEM=`free -m|grep Mem|awk ‘{print $4}’`
MEM_VULE=`awk ‘BEGIN{print(‘”$FREE_MEM”‘>='”$RESTART_FREE_MEM_MIN”‘?”1″:”0”)}’`
if [ `pgrep $NAME | wc -l` -le 0 ] && [ $MEM_VULE = 1 ]
then
service $NAME start
sleep 15
echo “AutoStart:” $(date +”%y-%m-%d %H:%M:%S”) “start $NAME” `ps -ef | grep $NAME | wc -l` > /var/log/autoreboot.log
fi
done

# 写入日志
echo $(date +”%y-%m-%d %H:%M:%S”) “start $NAME” “(FREE_MEM:$FREE_MEM,LOAD:$SYS_LOAD)” >> /var/log/autoreboot.log
else
MEM_VULE=`awk ‘BEGIN{print(‘”$FREE_MEM”‘>='”$RESTART_FREE_MEM_MIN”‘?”1″:”0″)}’`
if [ `pgrep $NAME | wc -l` -le 0 ] && [ $MEM_VULE = 1 ]
then
service $NAME start
sleep 15
echo “AutoStart:” $(date +”%y-%m-%d %H:%M:%S”) “start $NAME” `ps -ef | grep $NAME | wc -l` > /var/log/autoreboot.log
else
echo “$NAME very health!(FREE_MEM:$FREE_MEM,LOAD:$SYS_LOAD)” > /dev/null
fi
fi
done

PHP http抓取类 HttpRequest

static function HttpRequest($url, $data=array(), $abort=false) {
		if ( !function_exists('curl_init') ) { return empty($data) ? self::DoGet($url) : self::DoPost($url, $data); }
		$timeout = $abort ? 1 : 2;
		$ch = curl_init();
		if (is_array($data) && $data) {
			$formdata = http_build_query($data);
			curl_setopt($ch, CURLOPT_POST, true);
			curl_setopt($ch, CURLOPT_POSTFIELDS, $formdata);
		}
		curl_setopt($ch, CURLOPT_URL, $url);
		curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
		curl_setopt($ch, CURLOPT_CONNECTTIMEOUT, $timeout);
		curl_setopt($ch, CURLOPT_TIMEOUT, $timeout);
		$result = curl_exec($ch);
		return (false===$result && false==$abort)? ( empty($data) ? self:: DoGet($url) : self::DoPost($url, $data) ) : $result;
	}
	static public function DoGet($url){
		$url2 = parse_url($url);
		$url2["path"] = ($url2["path"] == "" ? "/" : $url2["path"]);
		$url2["port"] = ($url2["port"] == "" ? 80 : $url2["port"]);
		$host_ip = @gethostbyname($url2["host"]);
		$fsock_timeout = 2;  //2 second
		if(($fsock = fsockopen($host_ip, $url2['port'], $errno, $errstr, $fsock_timeout)) < 0){
			return false;
		}
		$request =  $url2["path"] .($url2["query"] ? "?".$url2["query"] : "");
		$in  = "GET " . $request . " HTTP/1.0\r\n";
		$in .= "Accept: */*\r\n";
		$in .= "User-Agent: Payb-Agent\r\n";
		$in .= "Host: " . $url2["host"] . "\r\n";
		$in .= "Connection: Close\r\n\r\n";
		if(!@fwrite($fsock, $in, strlen($in))){
			fclose($fsock);
			return false;
		}
		return self::GetHttpContent($fsock);
	}

	static public function DoPost($url,$post_data=array()){
		$url2 = parse_url($url);
		$url2["path"] = ($url2["path"] == "" ? "/" : $url2["path"]);
		$url2["port"] = ($url2["port"] == "" ? 80 : $url2["port"]);
		$host_ip = @gethostbyname($url2["host"]);
		$fsock_timeout = 2; //2 second
		if(($fsock = fsockopen($host_ip, $url2['port'], $errno, $errstr, $fsock_timeout)) < 0){
			return false;
		}
		$request =  $url2["path"].($url2["query"] ? "?" . $url2["query"] : "");
		$post_data2 = http_build_query($post_data);
		$in  = "POST " . $request . " HTTP/1.0\r\n";
		$in .= "Accept: */*\r\n";
		$in .= "Host: " . $url2["host"] . "\r\n";
		$in .= "User-Agent: Lowell-Agent\r\n";
		$in .= "Content-type: application/x-www-form-urlencoded\r\n";
		$in .= "Content-Length: " . strlen($post_data2) . "\r\n";
		$in .= "Connection: Close\r\n\r\n";
		$in .= $post_data2 . "\r\n\r\n";
		unset($post_data2);
		if(!@fwrite($fsock, $in, strlen($in))){
			fclose($fsock);
			return false;
		}
		return self::GetHttpContent($fsock);
	}
	static private function GetHttpContent($fsock=null) {
		$out = null;
		while($buff = @fgets($fsock, 2048)){
			$out .= $buff;
		}
		fclose($fsock);
		$pos = strpos($out, "\r\n\r\n");
		$head = substr($out, 0, $pos);    //http head
		$status = substr($head, 0, strpos($head, "\r\n"));    //http status line
		$body = substr($out, $pos + 4, strlen($out) - ($pos + 4));//page body
		if(preg_match("/^HTTP\/\d\.\d\s([\d]+)\s.*$/", $status, $matches)){
			if(intval($matches[1]) / 100 == 2){
				return $body;
			}else{
				return false;
			}
		}else{
			return false;
		}
	}

 

csshack

CSS hack:区分IE6,IE7,firefox
区别不同浏览器,CSS hack写法:
区别IE6与FF:
background:orange;*background:blue;
区别IE6与IE7:
background:green !important;background:blue;
区别IE7与FF:
background:orange; *background:green;
区别FF,IE7,IE6:
background:orange;*background:green;_background:blue;
background:orange;*background:green !important;*background:blue;
注:IE都能识别*;标准浏览器(如FF)不能识别*;
IE6能识别*;不能识别 !important;
IE7能识别*,能识别!important;
FF不能识别*,但能识别!important;
IE6 IE7 FF
* √ √ ×
!important √
√ √
浏览器优先级别:FF

postfix服务器创建

一、准备工作

1. 为邮件服务器添加DNS解析

虽然不加DNS解析也能把邮件发出去,但会被大多数邮件服务器当作垃圾邮件。根据我们的实际经验,需要添加三条DNS解析记录:A记录、MX记录、TXT记录。比如域名coolaj.cn,对应的DNS记录如下:
A mail
MX mail.xxx.com
TXT v=spf1 mx -all

2. 准备存放邮件的硬盘空间

如果用的是阿里云入门级Linux服务器,有一块20G的数据盘未挂载,需要格式化并挂载(假设这里挂载的目录是/data),具体操作步骤见之前的博文阿里云云服务器硬盘分区及挂载。

二、配置postfix

postfix是CentOS默认安装的邮件服务器软件。以下配置示例假设要配置的域名是coolaj.cn,邮件服务器主机名是mail.coolaj.cn。

1. 打开postfix的配置文件 阅读全文 ……