博客

  • 安装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位。

  • SSH认证免密码登录

    客户端:

    #ssh-keygen -t rsa

    Generating public/private rsa key pair.

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

    Enter passphrase (empty for no passphrase):

    Enter same passphrase again:

    Your identification has been saved in /Users/hisway/.ssh/id_rsa.

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

    The key fingerprint is:

    0d:24:c6:8d:f0:d9:b2:01:08:67:89:8a:5f:20:8e:b7 hisway@hisway.lan

    The key’s randomart image is:

    +–[ RSA 2048]—-+

    |.ooooooo.        |

    |oo+  +o=.        |

    |=. .  = o        |

    |+.. .  + o       |

    | o o  . S .      |

    |  E              |

    |                 |

    |                 |

    |                 |

    +—————–+

    #scp /Users/hisway/.ssh/id_rsa.pub  root@162.243.*.*:/home/root/id_rsa.pub

    服务端:

    #cat id_rsa.pub >>/root/.ssh/authorized_keys

    # vi /etc/ssh/sshd_config

    RSAAuthentication yes

    #RSA认证

    PubkeyAuthentication yes

    #开启公钥验证

    AuthorizedKeysFile    .ssh/authorized_keys

    #验证文件路径

    PasswordAuthentication no

    #禁止密码认证

    PermitEmptyPasswords no

    #禁止空密码

    UsePAM no

    #禁用PAM

    最后保存,重启

    #

    service sshd restart

     

  • 在 Ubuntu 中安装 Laravel

    安装 Composer

    curl -sS https://getcomposer.org/installer | php 

    下载完成之后将它放在系统 PATH 中,供全局调用。

    mv composer.phar /usr/local/bin/composer

    安装 Larave

    composer create-project laravel/laravel /home/wwwroot/laravel/

    执行下面的命令来授予 storage 文件夹的读写操作权限

    chgrp -R www /home/wwwroot/laravel/

    chmod -R 775 /home/wwwroot/laravel/app/storage

    建立网站域名指向/home/wwwroot/laravel/public(略)

    输入域名若提示:

    open_basedir restriction in effect. File() is not within the allowed path(s):XXX

    open_basedir可将用户访问文件的活动范围限制在指定的区域,通常是当前网站根目录的路径。

    在Apache的httpd.conf中VirtualHost的相应设置方法: 

    php_admin_value open_basedir “/home/wwwroot/laravel:/home/wwwroot/laravel/public:/tmp/:/var/tmp/:/proc/“

    重启apache解决

  • Namecheap买的PositiveSSL证书的激活使用

    网购星期一剁手的六块钱ssl证书一直放着没动,今天有空去激活了,给9块钱的curl.xyz域名加上了https,囧~
    PositiveSSL认证是Comodo的入门级产品,PositiveSSL只对你的域名所有权进行认证,PositiveSSL已经被几乎所有流行的浏览器支持,只要你的PositiveSSL认证正常,用浏览器打开你提供的https网页就像普通的http网页一样,浏览器不会弹出安全警告。
    ox01 
    在帐户的ssl列表中选择未曾使用过的SSL认证服务,点击右边的Active链接,开始申请激活你的SSL认证,接下来我们要发送一个认证签名请求文件给namecheap来完成激活过程,通常情况下,选择apache+openssl类型的签名即可,如果网络服务器不是apache或者apache兼容的服务器,可以在列表里面选择适合的认证类型。
    ox02
    ssh 到域名所在的服务器,Namecheap SSL要求是生成2048位的密钥文件:
    openssl genrsa -out privkey.key 2048
    生成证书请求文件:
    openssl req -new -key privkey.key -out cert.csr
    执行以上命令后,会要求你填写基本信息,例如国家、邮箱等。其中有个需要特别注意到地方是Common Name,必须填写你的域名,而且不能有大写字母,否则认证申请会失败。另外在制作CSR文件和私钥的时候,会有一步询问你私钥的密码,可以不输入。
    用命令:cat cert.csr和cat privkey.key 能看到刚刚生成的CSR和Key文件内容了。其中SCR文件内容就是我们刚刚要激活SSL证书要用到的。
    ox03
    把这个csr文件的内容复制到Namecheap刚才申请时页面上的文本输入框里面,并且点击next,进行下一步。
    接下来要求你提供一个能表明你是域名所有者的邮箱来进行验证,你可以从他提供的选项中选择一个,确保你的邮箱可以正常接收邮件。选择一个邮箱后,点击next,你的申请就算提交了,下面需要等授权公司Comodo来验证你是域名所有者身份。
    收到邮件后点击邮箱里面的 here 链接,并且输入下面的验证码,提交给Comodo即可。接着继续等,comodo会将生成的ssl证书文件发送给你。
    ox04
    将自己Key文件,外加刚刚收到的.crt,共两个文件一同上传到VPS主机的某一个文件夹当中。编辑Nginx配置文件,在Server中主要是添加以下代码:
    listen 443;
    ssl on;

    ssl_certificate /root/curl_xyz.crt;

    ssl_certificate_key /root/privkey.key;

    ssl_session_timeout 5m;
    重启Nginx完成。