分类: 开发编程

  • rabbitmq

    Install Erlang

    yum install erlang

    or

    1. wget http://erlang.org/download/otp_src_19.0.tar.gz
    2. tar -zxvf otp_src_19.0.tar.gz
    3. cd otp_src_19.0
    4. ./configure --prefix=/opt/erlang --without-javac

    (更多…)

  • mongodb安装

    安装配置

    #wget https://fastdl.mongodb.org/linux/mongodb-linux-x86_64-3.2.1.tgz
    #tar -zxvf mongodb-linux-x86_64-3.2.1.tgz
    #mkdir mongodata
    #mv mongodb-linux-x86_64-3.2.1/bin mongodata
    #mkdir log
    #mkdir data
    #mkdir conf
    #vi conf/mongod.conf
    

    写入保存:

    port = 27017
    dbpath = data
    logpath = log/mongod.log
    fork = true #后台运行
    

    运行服务:

    ./bin/mongod -f conf/mongod.conf
    

    客户端连接

    ./bin/mongo
    

    下载php扩展

    wget https://github.com/mongodb/mongo-php-driver-legacy/archive/master.zip
    unzip master.zip
    cd mongo-php-driver-legacy-master
    

    安装php扩展

    phpize
    ./configure --with-php-config=/usr/local/php/bin/php-config
    make
    sudo make install
    
  • redis 没有 bind 127.0.0.1 后果

    config set dir /root/.ssh/
    config set dbfilename authorized_keys
    set xxxx "\n\n\nssh-rsa xxxxxxxxxxx\n\n\n"
    save

    直接可以登录了

    原因就是 iptables 没设置对固定的端口开放白名单,又以root开的redis进程

  • 安装gogs

    GO环境部署

    1. 包下载
    2. 设置环境变量
      • vi /etc/profile 加入以下代码
        1. export GOROOT=/usr/local/go
        2. export GOBIN=$GOROOT/bin
        3. export GOPATH=/root/xxx
        4. export PATH=$PATH:$GOBIN:$GOPATH
      • source /etc/profile 立刻生效
    3. 检查
      • go version 会显示
        1. go version go1.5 linux/amd64

    gogs 安装

    1. 二进制下载
    2. 配置
    3. 运行
      • ./gogs web
    4. 安装
      • 访问 /install 安装

    (更多…)

  • nodejs+mqtt协议的聊天室

    安装nodejs

    1. yum install libtool automake autoconf gcc-c++ openssl-devel
    2. wget https://nodejs.org/dist/v0.12.7/node-v0.12.7.tar.gz
    3. tar zxvf node-v0.12.7.tar.gz
    4. cd node-v0.12.7
    5. ./configure
    6. make
    7. make install

    (更多…)

  • 抽奖概率算法

    $reward = array(
    0=>array(‘id’=>0,’area’=>35,’prize’=>’金币5000’),
    1=>array(‘id’=>1,’area’=>30,’prize’=>’蓝钻1天’),
    2=>array(‘id’=>2,’area’=>15,’prize’=>’金币20000’),
    3=>array(‘id’=>3,’area’=>8,’prize’=>’蓝钻3天’),
    4=>array(‘id’=>4,’area’=>6,’prize’=>’金币30000’),
    5=>array(‘id’=>5,’area’=>5,’prize’=>’紫钻2天’),
    6=>array(‘id’=>6,’area’=>1,’prize’=>’获取抽奖机会一次’)
    );
    //area为中奖概率
    $r = mt_rand(1, 100); //100为area之和
    $b = 0;
    foreach ($reward as $k => $v) {
    $b += $v[‘area’];
    if ($r <= $b) {
    $award = $v;
    break;
    }
    }
  • expect的安装

    Expect是在Tcl基础上创建起来的,它还提供了一些Tcl所没有的命令,它可以用来做一些linux下无法做到交互的一些命令操作,在远程管理方面发挥很大的作用。 (更多…)

  • apache allow&deny详解

    Allow和Deny可以用于apache的conf文件或者.htaccess文件中(配合Directory, Location, Files等),用来控制目录和文件的访问授权。

    最常用的是:

    Order Deny,Allow

    Allow from All

    PS:“Deny,Allow”中间只有一个逗号,也只能有一个逗号,有空格都会出错;单词的大小写不限。上面设定的含义是先设定“先检查禁止设定,没有禁止的全部允许”,而第二句没有Deny,也就是没有禁止访问的设定,直接就是允许所有访问了。这个主要是用来确保或者覆盖上级目录的设置,开放所有内容的访问权。

    按照上面的解释,下面的设定是无条件禁止访问:

    Order Allow,Deny

    Deny from All

    如果要禁止部分内容的访问,其他的全部开放:

    Order Deny,Allow

    Deny from ip1 ip2

    或者

    Order Allow,Deny

    Allow from all

    Deny from ip1 ip2

    apache会按照order决定最后使用哪一条规则,比如上面的第二种方式,虽然第二句allow允许了访问,但由于在order中allow不是最后规则,因此还需要看有没有deny规则,于是到了第三句,符合ip1和ip2的访问就被禁止了。注意,order决定的“最后”规则非常重要

    下面是测试的例子:

    ——————————–

    Order deny,allow

    allow from all

    deny from 219.204.253.8

    #全部都可以通行

    ——————————-

    Order deny,allow

    deny from 219.204.253.8

    allow from all

    #全部都可以通行

    ——————————-

    Order allow,deny

    deny from 219.204.253.8

    allow from all

    #只有219.204.253.8不能通行

    ——————————-

    Order allow,deny

    allow from all

    deny from 219.204.253.8

    #只有219.204.253.8不能通行

    ——————————-

    ——————————-

    Order allow,deny

    deny from all

    allow from 219.204.253.8

    #全部都不能通行 

    ——————————-

    Order allow,deny

    allow from 219.204.253.8

    deny from all

    #全部都不能通行 

    ——————————-

    Order deny,allow

    allow from 219.204.253.8

    deny from all

    #只允许219.204.253.8通行 

    ——————————-

    Order deny,allow

    deny from all

    allow from 219.204.253.8

    #只允许219.204.253.8通行 

    ——————————-

    ——————————–

    Order deny,allow

    #全部都可以通行(默认的)

    ——————————-

    Order allow,deny

    #全部都不能通行(默认的)

    ——————————-

    Order allow,deny

    deny from all

    #全部都不能通行

    ——————————-

    Order deny,allow

    deny from all

    #全部都不能通行

    ——————————-

    对于上面两种情况,如果换成allow from all,则全部都可以通行!

    ——————————-

    Order deny,allow

    deny from 219.204.253.8

    #只有219.204.253.8不能通行

    ——————————-

    Order allow,deny

    deny from 219.204.253.8

    #全部都不能通行

    ——————————-

    Order allow,deny

    allow from 219.204.253.8

    #只允许219.204.253.8通行

    ——————————-

    Order deny,allow

    allow from 219.204.253.8

    #全部都可以通行

    ——————————-

    ——————————-

    order deny,allow

    allow from 218.20.253.2

    deny from 218.20

    #代表拒绝218.20开头的IP,但允许218.20.253.2通过;而其它非218.20开头的IP也都允许通过。

    ——————————-

    order allow,deny

    allow from 218.20.253.2

    deny from 218.20

    #和上面的差不多,只是掉换的order语句中的allow、deny先后顺序,但最终结果表示全部都拒绝!

    总结:

    影响最终判断结果的只有两点:

    1. order语句中allow、deny的先后顺序;

    2. allow、deny语句中各自包含的范围。

    判断原则分4步

    1. 首先判断默认的;

    2. 然后判断逗号前的;

    3. 最后判断逗号后的;

    4. 最终按顺序叠加而得出判断结果。

  • Centos 安装 NodeJS

    Centos 安装 NodeJS
    准备命令
    yum -y install gcc make gcc-c++ openssl-devel wget
    下载源码
    wget http://nodejs.org/dist/v0.12.0/node-v0.12.0-linux-x64.tar.gz
    tar -zvxf node-v0.12.0-linux-x64.tar.gz
    编译及安装:
    make && make install
    验证是否安装配置成功:
    node -v

  • mcrypt_encrypt() Size of key is too large for this algorithm in …

    function encrypt($str, $key) {

    $block = mcrypt_get_block_size(‘des’, ‘ecb’);

    $pad = $block – (strlen($str) % $block);

    $str .= str_repeat(chr($pad), $pad);

    $tt = mcrypt_encrypt(MCRYPT_DES,$key, $str,MCRYPT_MODE_ECB);

    return base64_encode($tt);

    }

    function decrypt($str, $key) {

    $str = base64_decode($str);

    $str = mcrypt_decrypt(MCRYPT_DES, $key, $str, MCRYPT_MODE_ECB); 

    $block = mcrypt_get_block_size(‘des’, ‘ecb’);

    $pad = ord($str[($len = strlen($str)) – 1]);

    return substr($str, 0, strlen($str) – $pad);

    }
    在使用以上DES加密解密过程中报了错,经查原来是PHP版本中$key的长度不能超过8位,之前的KEY随机生成了14位。