Category: Tech

  • 封掉垃圾搜索引擎

    一般来讲,很多人都喜欢自己的网站有很大的流量,但有时候很多流量其实是垃圾流量,有选择性的过滤掉搜索引擎,很有必要,比如Sogou,每个月抓得比Google还要勤奋,但是在它里面搜来搜去居然一个结果都没有?简直让人莫名惊诧,比之于Sogou和Google带来的人流量,封掉它就显得很有现实意义了。

    针对上述情况,要封掉的其实不止Sogou一家,那么我们确定,只留下Google和百毒,其它搜索引擎都不让访问,然后呢,我们不允许这两只爬虫索引图片文件,MP3文件,还有其它多媒体文件,这一步我们在robots.txt里面设置:

    User-agent: *
     Disallow: /
    User-agent: Googlebot
     Disallow: /*.jpg$
     Disallow: /*.png$
     Disallow: /*.mp3$
     Disallow: /*.wmv$
     Disallow: /*.gif$
     Disallow: /*.cgi$
     Disallow: /*.gz$
     Disallow: /*.js$
     Disallow: /*.css$
    User-agent: Baiduspider
     Disallow: /*.jpg$
     Disallow: /*.png$
     Disallow: /*.mp3$
     Disallow: /*.wmv$
     Disallow: /*.gif$
     Disallow: /*.cgi$
     Disallow: /*.gz$
     Disallow: /*.js$
     Disallow: /*.css$

    很显然,这样的设置,对于病(bing.com)这种国际搜索引擎是很有效果的,但对于Sogou这样的垃圾搜索引擎,效果不大,它依旧是我行我素,所以,我们需要通过甄别其User-Agent,然后在web服务器上过滤。

    那么,我们可以在Nginx中设置如下,对于符合Sogou机器人UA的访问,一律给它返回400错误,一般来讲,我们见到的web服务器错误有404,403,500,502,503等等,但这些错误都是临时性的,会导致机器人间隔持续访问,返回400错误,可以告知机器人,除非你改变client端请求,否则你无法得到正确结果。

    location / {
                    if ($http_user_agent ~ Sogou) {
                    return 400;
                            }
    这段的意思很明显,我就不解释了。
    然后,所有Sogou的访问都会被400掉:
    123.126.50.70 - - [28/Nov/2011:22:45:23 +0800] "GET /2011/04/26/ HTTP/1.1" 400 172 "-" "Sogou web spider/4.0(+http://www.sogou.com/docs/help/webmasters.htm#07)"
  • 在CentOS上安装Oracle11g

    1,修改centos 的release文件以便oracle识别,现在好像不改也是可以安装的,并关闭SElinux
    vi /etc/redhat-release
    Red Hat Enterprise Linux AS release 5 (Taroon)
    2,安装没有默认安装的一些包,有些在Oracle安装过程中会提示,但最好先装上。
    yum install binutils compat-libstdc++ elfutils-libelf elfutils-libelf-devel gcc gcc-c++ glibc glibc-common glibc-devel glibc-headers libaio libaio-devel libgcc libstdc++ libstdc++-devel make sysstat unixODBC-devel -y
    3,创建系统用户:
    /usr/sbin/groupadd oinstall
    /usr/sbin/groupadd dba
    /usr/sbin/useradd -g oinstall -G dba oracle
    passwd oracle
    4,创建数据库安装目录,赋权:
    mkdir -p /home/oracle/product/ //设置oracle的安装目录
    chown -R oracle:oinstall /home/oracle //设置安装目录所属的用户和组
    chmod -R 775 /home/oracle
    5,修改系统参数:
    vi /etc/sysctl.conf
    在最末尾的地方加上:
    kernel.shmall = 2097152 //固定大小为2M
    kernel.shmmax = 2147483648 //一般设置为物理的一半
    kernel.shmmni = 4096
    kernel.sem = 250 32000 100 128
    net.ipv4.ip_local_port_range = 1024 65000
    net.core.rmem_default = 4194304
    net.core.rmem_max = 4194304
    net.core.wmem_default = 262144
    net.core.wmem_max = 262144

    sysctl -p
    6,修改系统limits.conf文件:
    vi /etc/security/limits.conf 在末尾添加
    oracle soft nproc 2047
    oracle hard nproc 16384
    oracle soft nofile 1024
    oracle hard nofile 65536
    7,修改login配置
    vi /etc/pam.d/login 在末尾添加
    session required /lib/security/pam_limits.so
    session required pam_limits.so
    8,修改/etc/profile文件,在末尾添加

    if [ $USER = "oracle" ]; then
    if [ $SHELL = "/bin/ksh" ]; then
    ulimit -p 16384
    ulimit -n 65536
    else
    ulimit -u 16384 -n 65536
    fi
    fi

    9,修改Oracle用户的/home/oracle/.bash_profile 注意路径必须和安装目录一样

    # User specific environment and startup programs
    
    PATH=$PATH:$HOME/bin
    
    export PATH
    export ORACLE_BASE=/home/oracle
    export ORACLE_HOME=$ORACLE_BASE/product/11.2.0/dbhome_1
    export ORACLE_HOME_LISTNER=$ORACLE_HOME
    export ORACLE_SID=jmj
    export PATH=$PATH:$HOME/bin:$ORACLE_HOME/bin
    export LD_LIBRARY_PATH=$ORACLE_HOME/lib:/lib:/usr/lib

    10,解压缩文件,./runInstaller 即可

  • Apache and PHP-FastCGI

    虽然Nginx加上php有相当优秀的表现,但是有时候,基于业务需要,不得不用ApachephpApache下有两种运行方式,一种是编译成Apache的模块,一种是以cgi方式运行,cgi则可细分为fastcgi,以模块方式运行,无论Apache还是php出现安全漏洞,需要升级软件版本,都需要同时重新编译二者,这是一个很没有统筹科学的态度,以普通cgi方式运行,配置简单,但比之于fastcgi效率不高,每个脚本执行都需要reload script和php.ini,基本上,这个意思就是说,脚本缓存是无效的,所以,我们需要fastcgi。

    需要说明的是,在当前php5.3.6版本中,php-fpm已经包含在源代码中,只需要在编译的时候加入相应参数: –enable-fpm,安装完成后,拷贝/src/php-5.3.6/sapi/fpm/init.d.php-fpm 到/usr/local/bin/,然后chmod +x 就可以了

    Usage: /usr/local/bin/init.d.php-fpm {start|stop|force-quit|restart|reload}

    当然,你知道配置文件默认放在/usr/local/etc/php-fpm.conf,修修改改就可以start了!

    php的配置很简单,但Apache的mod_fastcgi是需要单独下载编译的:
    1,下载mod_fastcgi:http://www.fastcgi.com/dist/mod_fastcgi-current.tar.gz
    解压缩了来安装到Apache里面去,例如,我们把Apache安装在了/usr/local/httpd:

    tar zxf mod_fastcgi-current.tar.gz
    cd mod_fastcgi-2.4.6
    cp Makefile.AP2 Makefile
    make install top_dir=/usr/local/httpd

    2,在配置文件中启用mod_fastcgi,例如我们可以包含一个配置文件在extra目录中,起个名字叫httpd-fastcgi.conf,这个例子呢,我是把php-fpm的socket放在/tmp目录下的:

    LoadModule fastcgi_module modules/mod_fastcgi.so
    ScriptAlias /php-bin /usr/local/bin
    AddHandler application/x-httpd-php5 php
    Action application/x-httpd-php5 /php-bin/php-cgi
    FastCgiExternalServer /usr/local/bin/php-cgi -socket /tmp/php.sock

    当然,基于安全考虑,可以将配置文件单独放在不同的虚拟主机中。