鹰击长空yuetao.org

9月 27

svnUpdate.sh

 
线上服务器使用的版本更新的工具
 
主要功能有:
 
1. 更新之前会记录当前版本和更新之后的版本,万一更新错了,可以查日志还原。
2. 每次更新都会产生详细的日志存放到/home/svnlogs/下面,每天一个独立文件
 
 
用法:
 
svnUpdate.sh 要更新的路径 [使用哪个版本]
 
默认是更新到最新版本,如果指定了版本就更新哪个版本的
 
更新的路径是相对于网站的根路径开始算的
 
代码开始
----------------------------------------------------------------------------------------
 
if [ "$1" == "" ]; then
       echo "Error: You must input dir."
       exit 1
fi
if [ "$1" == "/" ]; then
       echo "Error: You can not input /."
       exit 1
fi
 
logfile=`date +"%Y%m%d"`
logpath="/home/svnlogs/${logfile}.log"
tfile=`echo $1 | awk -F'www/' '{print $2}'`
 
if [ ! -f "$logpath" ]; then
        touch $logpath
fi
 
 
 
#echo $1
logcontent1=`date -d "today" +"%Y%m%d %H:%M:%S svn update /home/wwwroot/www/${tfile};"`
version1=`svn status -v "/home/wwwroot/www/${tfile}" | awk '{print $1,$3}'`
logcontent2="before version:${version1};"
r_version=""
if [ "$2" != "" ]; then
        r_version="-r $2"
fi
sudo -u www svn $r_version update "/home/wwwroot/www/${tfile}"
version2=`svn status -v "/home/wwwroot/www/${tfile}" | awk '{print $1,$3}'`
logcontent3="after version: ${version2}"
 
-------------------------------------------------------------------------------------
代码结束
Tags:
5月 27
【把目标IP地址的tcp入站数据丢弃】
#/sbin/iptables -I INPUT -p tcp -s 113.134.164.162 -j DROP

----------------------------------------------------------------------------------

【开放21端口入站】
#iptables -A INPUT -p tcp --dport 21 -j ACCEPT

-----------------------------------------------------------------------------------

【显示当前输入、输出、转发链的列表(带规则链的序列号)】
iptables -nvL --line-numbers

Chain INPUT (policy ACCEPT 0 packets, 0 bytes)
num   pkts bytes target     prot opt in     out     source               destination
1        0     0 DROP       tcp  --  *      *       113.134.164.162      0.0.0.0/0
2       29  1984 ACCEPT     icmp --  *      *       0.0.0.0/0            0.0.0.0/0
3    2380K  142M ACCEPT     all  --  lo     *       0.0.0.0/0            0.0.0.0/0
4        0     0 ACCEPT     tcp  --  *      *       0.0.0.0/0            0.0.0.0/0           tcp dpt:9733
5        0     0 ACCEPT     tcp  --  *      *       0.0.0.0/0            0.0.0.0/0           tcp dpt:9734
6        0     0 ACCEPT     tcp  --  *      *       0.0.0.0/0            0.0.0.0/0           tcp dpt:9735
7      541 31472 ACCEPT     tcp  --  *      *       0.0.0.0/0            0.0.0.0/0           state NEW tcp dpt:22
8     895K   50M ACCEPT     tcp  --  *      *       0.0.0.0/0            0.0.0.0/0           tcp dpt:80
9    259K   13M ACCEPT     tcp  --  *      *       0.0.0.0/0            0.0.0.0/0           tcp dpts:20000:30000
10    583K   31M ACCEPT     tcp  --  *      *       0.0.0.0/0            0.0.0.0/0           tcp dpt:3306
11   1782K  185M REJECT     all  --  *      *       0.0.0.0/0            0.0.0.0/0           reject-with icmp-host-prohibited

Chain FORWARD (policy ACCEPT 0 packets, 0 bytes)
num   pkts bytes target     prot opt in     out     source               destination
1        0     0 REJECT     all  --  *      *       0.0.0.0/0            0.0.0.0/0           reject-with icmp-host-prohibited

Chain OUTPUT (policy ACCEPT 1280 packets, 3590K bytes)
num   pkts bytes target     prot opt in     out     source               destination

-------------------------------------------------------------------------------

【删除链序列号为1的规则】
#iptables -D INPUT 1

--------------------------------------------------


【linux 查看 ip并发数 排行】


netstat -na | grep ESTABLISHED | awk '{print$5}' | awk -F : '{print$1}' | sort | uniq -c | sort -r 


【统计80端口连接数】
 
netstat -nat | grep -i "80" | wc -l
 
1
 
【统计httpd协议连接数】
 
ps -ef | grep httpd | wc -l
 
1
 
【统计已连接上的,状态为“established'】
 
netstat -na | grep ESTABLISHED | wc -l



【限制与80端口连接的IP最大连接数为10,可自定义修改。】


iptables -I INPUT -p tcp --dport 80 -m connlimit --connlimit-above 10 -j DROP



【使用recent模块限制同IP时间内新请求连接数,recent更多功能请参考:Iptables模块recent应用。】

iptables -A INPUT -p tcp --dport 80 --syn -m recent --name webpool --rcheck --seconds 60 --hitcount 10 -j LOG --log-prefix 'DDOS:' --log-ip-options
#60秒10个新连接,超过记录日志。

iptables -A INPUT -p tcp --dport 80 --syn -m recent --name webpool --rcheck --seconds 60 --hitcount 10 -j DROP
#60秒10个新连接,超过丢弃数据包。

iptables -A INPUT -p tcp --dport 80 --syn -m recent --name webpool --set -j ACCEPT
#范围内允许通过。


Tags:
1月 15

1.下载安装程序
2.解压安装程序

#mkdir /usr/local/obm
#cd /usr/local/obm
#tar zxvf obm-nix.tar.gz

3.安装java runtime (jre) 1.6以上 到 /usr/java
#yum search java
#yum install java-1.7.0-openjdk.x86_64(这里根据搜索到的结果进行选择,我选的是1.7  64位)

4.配置环境变量$JAVA_HOME
#export JAVA_HOME=/usr/lib/jvm/jre

5.创建文件链接 
#ln -sf /usr/lib/jvm/jre /usr/local/obm/jvm

6.安装ahsayObm
cd /usr/local/obm
./bin/install.sh > install.log

7.启动 obmaua 和 obmscheduler 服务
/etc/init.d/obmaua start
/etc/init.d/obmscheduler start


8.登录obm管理系统设置备份集和计划任务设置好以后回到linux

9.执行配置脚本
./bin/Configurator.sh

Create a new Configuration file at directory
[/root/.obm/config]

Login Name : xxxx
Password: ****************

Backup Server URL : www.xxx.com:8080
Which Protocol ? (1) Http (2) Https : 1
Use proxy ? (Y)es or (N)o : n


Please wait while verifying user account with server...

Your account (xxxx) is found on server (http://www.xxx.com:8080).
New configuration file has been created

Found new backup set 'file'
Please enter the following values for this backup set:

Encrypting Algorithm ? (1) Twofish (2) AES (3) Triple DES (4) No encryption : 4
Run scheduled backup on this computer ? (Y)es or (N)o : Y

Found new backup set 'mysql'
Please enter the following values for this backup set:

Encrypting Algorithm ? (1) Twofish (2) AES (3) Triple DES (4) No encryption : 4
Run scheduled backup on this computer ? (Y)es or (N)o : Y



---完成----


一些命令

显示已经设置的备份集列表
./bin/ListBackupSet.sh


手工启动备份集
./bin/RunBackupSet.sh 备份集名称


Tags: ,
11月 30
linux 下 亚势备份系统文件恢复


vi /usr/local/obm/bin/Restore.sh


修改以下几处设置

BACKUP_SET="1119083740107"        //备份集的序号,可以通过登录obs管理系统在备份日志里面找到

RESTORE_TO="/tmp"            //文件还原到何处


RESTORE_FROM="/backup_source/folder"  //选择要从备份文件里面还原的目录,可以通过档案总管查看所有已备份的目录

POINT_IN_TIME="Current"          //Current 为当前快照


SETTING_HOME="/root/.obm"        //设定root的家目录,


修改完以后执行还原,即可自动链接备份服务器,还原文件到指定的目录



/usr/local/obm/bin/Restore.sh
Tags:
11月 28
php mysql lock tables 使用有感


mysql 的 表锁 lock tables 感觉就像一个 封闭的空间


mysql发现 lock tables 命令的时候,会将带有锁标记的表(table) 带入封闭空间,直到 出现 unlock tables 命令 或 线程结束, 才关闭封闭空间。

----------------------------------------------------------------------

进入封闭空间时 , 仅仅只有锁标记的表(table) 可以在里面使用,其他表无法使用。


----------------------------------------------------------------------

锁标记 分为 read 和 write 下面是 两种 锁的区别

--------------------------------------------------------------------

//如 将 table1 设为read锁, table2 设为write锁, table3 设为read锁

lock tables [table1] read,[table2] write,[table3] read;
----------------------------------------------------------------------

//执行到这里时,进入封闭空间。

1. table1 仅允许[所有人]读,[空间外]如需写、更新要等待[空间退出],[空间内]如需写、更新会引发mysql报错。
2. table2 仅允许[空间内]读写更新,[空间外]如需写、更新要等待[空间退出]。
3. table3 仅允许[所有人]读,[空间外]如需写、更新要等待[空间退出],[空间内]如需写、更新会引发mysql报错。

............
............
............
............
............
............
............
............
............
............

----------------------------------------------------------------------
//执行到这里时,退出封闭空间,释放所有表锁
unlock tables
----------------------------------------------------------------------

当前线程关闭时,自动退出封闭空间,释放所有表锁,无论有没有执行 unlock tables
分页: 1/5 第一页 1 2 3 4 5 下页 最后页 [ 显示模式: 摘要 | 列表 ]