• svn数据备份,还原检出到其他目录

    hooks目录下的post-commit 是上传钩子脚本
    即你从本地上传文件到svn服务器的时候触发该脚本
    注意post-commit 文件权限为root可执行
    vi  /var/svn/project-name/hooks/post-commit
    #!/bin/sh
    export LANG=zh_CN.UTF-8
    REPOS=”$1″
    REV=”$2″
    svn checkout –username 用户名 –password 密码 svn://127.0.0.1/test /var/www/test
    ##从svn版本库中检出源文件到新的目录  /var/www/test
  • apache端口转发

    在某些时候,可能需要将发到apache某个端口的请求转发到另外一个端口. mod_proxy模块可以方便的完成这个需求.
    ubuntu中配置apache2比较方便.  下面以lucid中apache2为例介绍如何使用 mod_proxy
    1. 首先配置mod_proxy模块
    将/etc/apache2/mods-available中的
    proxy_http.load
    proxy.load
    proxy.conf
    proxy_connect.load
    ln -s 到 /etc/apache2/mods-enabled
    注意需要适当的修改 proxy.conf
    2. 在 /etc/apache2/sites-enabled中建立一个文件(或一个连接 ln -s 到一个文件)
    <VirtualHost *:80>
    ProxyPreserveHost On
    ServerName www.example.com
    ProxyPass / http://www.example.com:8000/
    ProxyPassReverse / http://www.example.com:8000/
    ServerAdmin webmaster@localhost
    </VirtualHost>
    这样, 所有http://www.example.com 请求实际上都是到了其 8000端口. 80端口实际上成了 8000端口的一个代理
    当然 mod_proxy能够完成的任务不止这些. 例如, 它可以将请求转发到别的服务器上(配置合适的话).
    使用该模块应该注意 proxy.conf的配置.
  • debian操作系统安装记录

    1.安装sudo  编辑/etc/sudoers
    2.安装配置apt源
    vim /etc/apt/source.list
    然后进行更新源
    apt-get -s upgrade
    apt-get update
    3.安装ssh(openssh-server)
    4.安装rcconf(服务管理器)管理需要启动的服务
  • scp命令:两台服务器文件传输,进阶-设置两台服务器不需要密码直接复制

    scp 命令是 SSH 中最方便有用的命令了,试想,在两台服务器之间直接传送文件,仅仅用 scp 一个命令就完全解决了。 你可以在一台服务器上 以 root 身份运行 #scp servername:/home/ftp/pub/file1 . 这样就把另一台服务器上的文件 /home/ftp/pub/file1 直接传到本机器的当前目录下,当然你也可以用 #scp /tmp/file2 servername:/boot 把本机上的文件 /tmp/file2 送到另一台机器的 /boot 目录下。而且整个传送过程仍然是用 SSH 加密的。
    scp 就是 secure copy, 是用来进行远程文件拷贝的 . 数据传输使用 ssh1, 并且和 ssh1 使用相同的认证方式 , 提供相同的安全保证 . 与 rcp 不同的是 ,scp 会要求你输入密码如果需要的话 .
    案例:
    copy 本地的档案到远程的机器上
    scp /etc/lilo.conf my@www.upsdn.net:/home/my

    scp 命令是 SSH 中最方便有用的命令了,试想,在两台服务器之间直接传送文件,仅仅用 scp 一个命令就完全解决了。 你可以在一台服务器上 以 root 身份运行 #scp servername:/home/ftp/pub/file1 . 这样就把另一台服务器上的文件 /home/ftp/pub/file1 直接传到本机器的当前目录下,当然你也可以用 #scp /tmp/file2 servername:/boot 把本机上的文件 /tmp/file2 送到另一台机器的 /boot 目录下。而且整个传送过程仍然是用 SSH 加密的。
    scp 就是 secure copy, 是用来进行远程文件拷贝的 . 数据传输使用 ssh1, 并且和 ssh1 使用相同的认证方式 , 提供相同的安全保证 . 与 rcp 不同的是 ,scp 会要求你输入密码如果需要的话 .
    案例:
    copy 本地的档案到远程的机器上

    scp /etc/lilo.conf my@www.upsdn.net:/home/my/123.conf

    copy远程机器上的档案到本地来

    scp my@www.upsdn.net:/etc/lilo.conf /etc

    进阶—————-

    最近在编写定时自动执行的shell脚步中遇到一个问题。在该脚步中,需要使用scp命令将本地的文件复制到另一台机器中备份。但通常执行scp命令后都需要输入用户密码,这样在定时自动执行的shell脚步中就不适用了。

    本人的第一直觉就是建立无密码用户,在scp命令中使用该用户就不需要输入用户密码了。

    以下是在机器Client的root和机器Server的root之间建立安全信任关系的步骤:

    1. 在机器Client上root用户执行ssh-keygen命令,生成建立安全信任关系的证书。

    [root@Client root]# ssh-keygen -b 1024 -t rsa

    Generating public/private rsa key pair.

    Enter file in which to save the key (/root/.ssh/id_rsa):

    Enter passphrase (empty for no passphrase):            <– 直接输入回车

    Enter same passphrase again:                           <– 直接输入回车

    Your identification has been saved in /root/.ssh/id_rsa.

    Your public key has been saved in /root/.ssh/id_rsa.pub.

    The key fingerprint is:

    49:9c:8a:8f:bc:19:5e:8c:c0:10:d3:15:60:a3:32:1c root@Client

    [root@Client root]#

    注意:在程序提示输入passphrase时直接输入回车,表示无证书密码。

    上述命令将生成私钥证书id_rsa和公钥证书id_rsa.pub,存放在用户家目录的.ssh子目录中。

    2. 将公钥证书id_rsa.pub复制到机器Server的root家目录的.ssh子目录中,同时将文件名更换为authorized_keys。

    [root@Client root]# scp -p .ssh/id_rsa.pub root@192.168.3.206:/root/.ssh/authorized_keys

    root@192.168.3.206’s password:          <– 输入机器Server的root用户密码

    id_rsa.pub           100% |**************************|   218       00:00

    [root@Client root]#

    在执行上述命令时,两台机器的root用户之间还未建立安全信任关系,所以还需要输入机器Server的root用户密码。

    经过以上2步,就在机器Client的root和机器Server的root之间建立安全信任关系。

  • crontab应用

    wiki备份
    #! /bin/sh
    rm /var/www/dokuwiki_bak.tar.gz
    tar -cvzf /var/www/dokuwiki_bak.tar.gz /var/www/dokuwiki
    rq=`date +%Y%m%d`
    scp /var/www/dokuwiki_bak.tar.gz root@211.157.136.46:/var/wiki_copy/dokuwiki$rq.tar.gz
    延深:系统环境 debian5.0
    方法1:
    在linux平台上如果需要实现任务调度功能可以编写cron脚本来实现。
    以某一频率执行任务
    linux缺省会启动crond进程,crond进程不需要用户启动、关闭。
    crond进程负责读取调度任务并执行,用户只需要将相应的调度脚本写入cron的调度配置文件中。
    cron的调度文件有以下几个:均在/etc/目录下
    crontab
    cron.d
    cron.daily
    cron.hourly
    cron.monthly
    cron.weekly
    如果用的任务不是以hourly monthly weekly方式执行,则可以将相应的crontab写入到crontab 或cron.d目录中。
    示例内容为
    分钟 小时 天 月 星期 用户 命令
    */2 * * * * root  /opt/bin/test-cron.sh #每两分钟就执行……..
    0 6,12,18   *   *   *    root      ……………      #每天6点、12点、18点执行……..
    启动cron进程的方法:/etc/init.d/crond start
    方法二:
    把cron加入到启动脚本中:
    # rc-update add vixie-cron default
    crontab -l #查看你的任务
    crontab -e#编辑你的任务(debian系统crontab默认编辑器不是vi,需要修改环境变量EDITOR,(命令:export EDITOR=vim)
    crontab -r#删除用户的crontab的内容
    收获:可以把经常要做的一些事放到其中,简化工作量,如每周一检查服务器的运行状态,查看报告,杀掉一些进程等等……
  • jquery应用:鼠标移动到表格tr变色

    /*
    *@param tabID 表格名称
    *@param oveClass 鼠标进入时的样式
    *@param outClass 鼠标离开时的样式(为样式名称)
    */
    function altrow(tabID,oveClass,outClass) {
    var rowObj = $(“#” + tabID).find(“tr”);
    $.each(rowObj, function (i, obj) {
    var tr = $(obj);
    tr.mousemove(function () {
    tr.addClass(oveClass);
    });
    tr.mouseout(function () {
    tr.removeClass(oveClass);
    tr.addClass(outClass);
    });
    });
    }
    网页加载
    $(document).ready(function(){
    altrow(传入参数);
    });
  • Js压缩加密工具 (PHP版)

    下载地址:
    http://www.codebit.cn/packer/packer.php-1.0.zip

  • get_magic_quotes_gpc() get_magic_quotes_runtime()

    GPC 过滤Get Post Cookie 而 RUNTIME 是过滤对数据库执行查询时的过滤。
    作用:检测php.ini中的magic_quotes_runtime的值
    magic_quotes_gpc 设置是否自动为GPC(get,post,cookie)传来的数据中的\’\”\\加上反斜
    线。
    set_magic_quotes_runtime(0)
  • debian专题

    LAMP安装  http://www.silentstreet.net/archives/2218.html

    debian开发环境安装 http://blogold.chinaunix.net/u/20581/showart_1098627.html

  • Amavisd参数

    前言
    amavisd-new为一新的amavis perl module,它具有高效能、检查信件内容(SpamAssasin)、VirusScanners(可结合28种之多的扫毒程式)。它是由perl所写成的,所以效能有大幅的成长。它可与MTA使用SMTP、LMTP协定来沟通。
    postfix+amavisd-new的流程:
    (1)信件由Internet(smtpd)或是由Local(pickup)接收要传送的信件
    (2)信件传送至cleanup
    (3)信件传送至qmgr
    (4)因content_filter的设定,会将信件传送至smtp-amavis
    (5)amavisd-new执行content file及scanvirus的动作
    (6)amavisd-new将信件传送至smtpd 10025(127.0.0.1:10025)
    (7)信件传送至cleanup
    (8)信件传送至qmgr
    (9)信件传送至Internet(smtp)或是Local(local)
    ———————————————————————————————————————
    版本
    系统为debian/linux 4.0,amavisd-new 2.4.2-5
    配置文件
    Amavisd-new的主要配置文档在/etc/amavis/conf.d/目录中;
    还有些变量需在amavisd-new的可执行脚步中查看,为/usr/sbin/amavisd-new。
    1./etc/amavis/conf.d/配置文档
    在/etc/amavis/conf.d/目录中,主要配置文件有:
    /etc/amavis/conf.d/15-content_filter_mode
    /etc/amavis/conf.d/20-debian_defaults
    ⑴在15-content_filter_mode中:
    查杀病毒功能块,把下面代码前的“#”去掉便可。
    #@bypass_virus_checks_maps = (
    # \%bypass_virus_checks, \@bypass_virus_checks_acl, \$bypass_virus_checks_re);
    垃圾邮件功能块:
    @bypass_spam_checks_maps = (                 #让amavisd-new启动spamassassin
    \%bypass_spam_checks, \@bypass_spam_checks_acl, \$bypass_spam_checks_re);
    1;  # insure a defined return
    ⑵在20-debian_defaults中(此文件相当于其他版本中的amavisd.conf):
    use strict;
    #将$QUARANTINEDIR设定为刚刚建立的病毒隔离目录
    $QUARANTINEDIR = “$MYHOME/virusmails”;
    $log_recip_templ = undef;    # disable by-recipient level-0 log entries
    $DO_SYSLOG = 1;              # log via syslogd (preferred)
    $syslog_ident = ‘amavis’;    # syslog ident tag, prepended to all messages
    $syslog_facility = ‘mail’;     # Syslog facility as a string
    $syslog_priority = ‘debug’;  # switch to info to drop debug output, etc
    $enable_db = 1;              # enable use of BerkeleyDB/libdb (SNMP and nanny)
    $enable_global_cache = 1;    # enable use of libdb-based cache if $enable_db=1
    $inet_socket_port = 10024;   # 默认amavisd-new监听端口t
    #设定评分规则
    #变量以$sa开头的均为spamassassin中的,在这进行设置后,在 /etc/spamassassin/local.cf 所#设定的將失去效用
    $sa_spam_subject_tag = ‘***SPAM*** ‘;  # 对垃圾邮件主题添加’***SPAM*** ‘
    $sa_tag_level_deflt  = -10;  # 超过这个分数标准者,才视为垃圾邮件打分数。
    $sa_tag2_level_deflt = 20; # 超过这个分数标准者,才允许在邮件标题加入Spam 信息。加入#X-Spam-Flag:YES 及改写主题
    $sa_kill_level_deflt = 6.31;  # 超过这个分数标准者,就直接將信件备份后删除
    $sa_dsn_cutoff_level = 10;   # 超过这个分数标准者,將不会送出 DSN 信息
    $sa_mail_body_size_limit = 200*1024; # 超过某个特定大小的邮件就不经过SpamAssassin 的扫#描,此大小不包括附件大小。
    #让sa可以和外部连线
    $sa_local_tests_only = 0;    # only tests which do not require internet access?
    $sa_auto_whitelist = 1;  # 启用自动学习白名单 White List
    #启用 SpamAssassin 的 Debug。在正式上线时请记得去掉
    # Turn on SpamAssassin debugging (output to STDERR, use with ‘amavisd debug’)
    $sa_debug = 1;            # defaults to false
    # 设定 White List
    # 注意:在 /etc/spamassassin/local.cf 所设定的將失去效用!
    @whitelist_sender_maps = ( [“.cc17121.com”] );#添加白名单,对大附件仍然进行解压缩,但不打分
    #map { $whitelist_sender{lc($_)}=1 } (qw(    #同上功能
    #  *@cc17121.com
    #  *@*.edu.tw
    #));
    # 或指定为某个档案。注意:这些档案必须存在,否则Amavisd-new 將无法启动!
    read_hash(\%whitelist_sender, ‘/var/amavis/whitelist’);
    #指定黑名单
    read_hash(\%blacklist_sender, ‘/var/amavis/blacklist’);
    #若收件人名列其中,则不进行垃圾邮件检测
    read_hash(\%spam_lovers, ‘/var/amavis/spam_lovers’);
    ###以下几个变量在执行脚本/usr/sbin/amavisd-new中均可找到######################
    # Quota limits to avoid bombs (like 42.zip)
    $MAXLEVELS = 1;    #扫描压缩包时,解压几层
    $MAXFILES = 150;     #最多扫描压缩包内1500个文件
    $MIN_EXPANSION_QUOTA = 100*1024;  # 单位bytes,最小邮件限额,包括附件
    $MAX_EXPANSION_QUOTA = 200*1024*1024;  # bytes , 最大邮件大小,为200K
    $MIN_EXPANSION_FACTOR =   1;  #可扫描邮件大小的最小倍数
    $MAX_EXPANSION_FACTOR =   500; #可扫描邮件大小的最大倍数#
    #最大扫描压缩包大小为($MAX_EXPANSION_QUOTA)×($MAX_EXPANSION_FACTOR),#当解压缩后的文件达到此值时,系统会结束解压缩进程。
    #
    #
    #########################################################
    $undecipherable_subject_tag = ‘ ‘;   #取消对未检查的信件主题添加“UNCHECK”,也可以在
    #执行脚本/usr/sbin/amavisd-new中修改”UNCHECK”
    # Use D_DISCARD  邮件不传送给发件人及收件人。
    #Use D_BOUNCE  不传送给收件人。除了定义在 $viruses_that_fake_sender_re 病毒名称#  #                #外的信件,amavisd-new 皆会传送 DSN 讯息给发件人。
    # Use D_REJECT   不传送给收件人,发件人会收到拒绝传送的信息。
    # Use D_PASS   不做任何处理,直接传送给收件人。
    $final_virus_destiny = D_DISCARD;
    $final_banned_destiny = D_PASS;
    $final_spam_destiny = D_DISCARD;
    $final_bad_header_destiny = D_PASS;
    $MAX_EXPANSION_FACTOR测试结果:
    a.        附件为257M,$MAX_EXPANSION_FACTOR为500倍,先添加好附件:
    点击发送:11:16:00     发送页面完成:11:19:20         耗时:3m 20s
    Bzip进程开始时间:11:23:45   结束时间:11:28:00       耗时:4m 15s   (bzip为解压缩进程)
    发送完成时间:11:30:40                             共耗时:14m40s
    b.        附件为257M,$MAX_EXPANSION_FACTOR为1倍,先添加好附件:
    点击发送:12:31:30     发送页面完成:12:34:40         耗时:3m 10s
    Bzip进程开始时间:12:39:05   结束时间:12:39:55       耗时:50s   (bzip为解压缩进程)
    发送完成时间:12:42:30                             共耗时:11m00s
    2./usr/sbin/amavisd-new 执行文件
    $MIN_EXPANSION_FACTOR =   1;  # times original mail size
    $MAX_EXPANSION_FACTOR =   500;  # times original mail size
    $spam_lover           #发送垃圾邮箱至
    # timeout for our processing:  超出设置时间后会断开连接
    $child_timeout = 8*60; # abort child if it does not complete a task in n sec
    # $child_timeout的值則須小於/etc/postfix/main.cf裡smtp_data_dome_timeout的值
    # Net::Server pre-forking settings – defaults, overruled by amavisd.conf
    $max_servers  = 2;   # number of pre-forked children
    $max_requests = 10;  # retire a child after that many accepts
    # serves only as a quick default for other configuration settings
    $MYHOME   = ‘/var/amavis’;
    $mydomain = ‘!change-mydomain-variable!.example.com’;#intentionally bad default
    $virus_admin = “administrator\@$mydomain”;
    $spam_admin = “administrator\@$mydomain”;
    $mailfrom_notify_admin     = “administrator\@$mydomain”;
    $mailfrom_notify_recip     = “administrator\@$mydomain”;
    $mailfrom_notify_spamadmin = “administrator\@$mydomain”;