apache安装Bandwidth Mod模块

下载模块解压后用apxs进行安装

wget http://ivn.cl/files/source/mod_bw-0.92.tgz
tar zxvf mod_bw-0.92.tgz
apxs -c -i -a mod_bw.c


安装好后在对应的VirtualHost下加入下面代码

BandWidthModule On 
ForceBandWidthModule On 
BandWidth     all 131072 

BandWidth的单位:BandWidth [From] [bytes/s]

df -h统计的信息与du -sh不一致的原因

有时候会遇到这样的问题:df -h统计一个目录,显示有约100M可用空间,使用了5G;而用du -sh统计该目录下的文件大小,却发现总共才占用了1G。也就是说,二者统计结果差距巨大。

例如:

df-h /tmp/

结果:

3.9G  3.5G  220M  95% /tmp

du-sh /tmp/

结果:

132K    /tmp/

结果差异巨大。

引用网上的一段话,原因是这样的:

(1)This section gives the technical explanation of why du and df sometimes report different totals of disk space usage.
When a program that is running in the background writes to a file while the process is running, the file to which this process is writing is deleted. Running df and du shows a discrepancy in the amount of disk space usage. The df command shows a higher value.
(2)The difference is that whenever an application has an open file, but the file is already deleted, then it is counted in the df output (because the space is certainly not free) but not in du (because it is not being used by a file).

如何查看是什么进程导致的问题?

假设你发现是 /tmp/ 目录不对劲,那么就这样就可以查看:

lsof| grep /tmp/

输出的结果中,注意某些含有“(deleted)”字样的记录,它们中的一部分就是罪魁祸首,将它们kill掉即可(如果可以重启这些进程所对应的服务的话,也有可能解决问题)。

MAC OS X连接3389端口远程桌面客户端中文版

上个月手淫同学给推荐安装office后可以顺带安装上远程桌面当时没当一回事丢脑后了,这几天遇上些问题不得不上服务器操作下就灰常土鳖的跑去下载了office才发现下了个更新包,

不经意搜索到原来微软有出OS X的远程桌面客户端,搜索到的是英文版顺藤摸瓜找到了中文版下载地址。

安装界面之许可协议

  rdcinstall.png

 

阅读剩余部分...

serverhub support too slow

月初3号在serverhub上的服务器到今天22号中间各种曲折搞得非常不爽。

大致进程如下

3号下单付款然后再工单里面附上交易号客服非常快的回复并处理了账单;

阅读剩余部分...

apache运行php5.2 5.3多个版本合集

有的时候一些程序比较挑php版本,一些稍微激进一点的程序都会对最新版本支持,如果嫌弃动手麻烦的话可以直接装个cpanel。

安装LAMP的环境配置大体流程如下

步骤一

首先必要条件安装好mysql和apache以及依赖环境包。

步骤二

安装php,5.2 5.3分开安装./configure的--prefix=路径分开指定成功编译完。

步骤三

前提说明mod_php模式有点戳上面安装php的时候记得fastcgi模式安装,如果是--with-apxs2参数安装的抱歉上去把参数调整好重新来过吧,到suphp官方下载编译安装好。

阅读剩余部分...

使用Nginx+Lua实现Web项目的灰度发布

1.问题:小团队,快速迭代开发,版本发布没有经过测试就要放出去,怎样在内网测试过后在外网能在真实环境让内部人员再过一次测试且不影响外网用户

2.实现思想:

a.至少要有两台机器

b.公司是统一出口IP

c.根据IP将请求转发到不同的机器

阅读剩余部分...

hostbill支付宝模块bug

用户支付账单后会出现重复入账,少则一两次多则七八次。。。。


不排除支付宝跳转返回的时候用户F5刷新导致重复入账。。


附bug截图

  host-alipay-bug.png

Windows 2003的登录取消CTRL+ALT+DEL和关机事件跟踪

运行“gpedit.msc”打开“组策略编辑器”

计算机配置 -> Windows 设置 -> 安全设置 -> 本地策略 -> 安全选项

“交互式登陆:不需要按 CTRL+ALT+DEL”改为“已启用”

显示“关闭事件跟踪程序”

计算机配置 ->管理模板 -> 系统

显示“关闭事件跟踪程序”改为“已禁用”


hostbill下kloxo接口模块源码

<?php

class Kloxo extends HostingModule {

   //Version

   protected $version ='1.00';

   //Description

   protected $description='Kloxo provisioning module';

   //Enable AJAX

   protected $ajaxLoadValues=true;

   //End INIT

                                                       

   //Translations

   protected $lang=array(

       'english'=>array(

           'acc-type'=>'Account Type',

           'resource-plan'=>'Plan Name',

           'dns-template'=>'DNS Template',

       ),

       'german'=>array(

           'acc-type'=>'Account-Typ',

           'resource-plan'=>'Plannamen',

           'dns-template'=>'DNS Schablone',

       )

   );

   //End Translations

//Server Settings APPprotected $options = array(

               'option1' =>array (

                       'name'=> 'acc-type',

                       'value' =>false,

                       'type'=> 'select',

                       'default'=> array("customer","reseller"),

               ),

               'option2' =>array (

                       'name'=> 'resource-plan',

                       'value' => false,

                       'type'=> 'input',

                       'default'=>false,

               ),

               'option3' =>array (

                       'name'=> 'dns-template',

                       'value' => false,

                       'type'=> 'input',

                       'default'=>false,

               ),

       );

       //account specific stuff below

       protected $details = array(

                                                       

                                                       

               'option6' =>array (

                       'name'=> 'domain',

                       'value' => false,

                       'type'=> 'input',

                       'default'=>false

               ),

               'option1' =>array (

                       'name'=> 'username',

                       'value' => false,

                       'type'=> 'input',

                       'default'=>false

               ),

               'option2' =>array (

                       'name'=> 'password',

                       'value' => false,

                       'type'=> 'input',

                       'default'=>false

               ),

       );

       //End User Specifics

       //Start Action Handler

    protected $commands = array(

               'Suspend','Terminate','ChangePackage','ChangePassword','Create','Unsuspend'//,'getResourcePlansInfo'

       );

                                                       

                                                       

                                                       

                                                       

   //connection

   private $server_username;

   private $server_password;

   private $server_hostname;

   private $server_ip;

   public function connect($connect) {

       $this->server_username = $connect['username'];

       $this->server_password = $connect['password'];

       $this->server_hostname = $connect['hostname'];

       $this->server_ip = $connect['ip'];

        if($connect['secure']) {

               $this->port = 7777;              

               $this->http = "https";

               }

           else {

               $this->port = 7778;

               $this->http = "http";

   }

   }//endconnection

                                                       

                                                       

                                                       

   //Default Kloxo JSON Processing

   public function lxlabs_get_via_json($protocol, $server, $port, $param) {

       $param = "login-class=client&login-name=admin&login-password=pass&output-type=json&$param";

       $url = "$protocol://$server:$port/webcommand.php";

       $ch = curl_init($url);

       curl_setopt($ch, CURLOPT_POST, true);

       curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);

       curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, false);

       curl_setopt($ch, CURLOPT_SSL_VERIFYHOST, false);

       curl_setopt($ch, CURLOPT_POSTFIELDS, $param);

       $totalout = curl_exec($ch);

       $totalout = trim($totalout);

       //Replace require JSON.php START X0001

       require_once('JSON.php');

       //end Replace X0001

       $json = new Services_JSON();

       $object = $json->decode($totalout);

                                                       

if (!is_object($object)) {

print("Fatal Error. Got a non-object from the server: $totalout\n");

exit;

}

                                                       

return $object;

}//end Kloxo's JSON

private function Send($type, $param) {

                                                       

                                                       

$http = "http";

if ( $http == "http" ) {

$port  = '7778';

}

else {

$port = '7777';

}//end SetDefaultPort

$adminpassword = $this->server_password;

$adminuser = $this->server_username;

$serverloc = $this->server_ip;

$builtparameter = "login-class=client&login-name=$adminuser&login-password=$adminpassword&output-type=json&". $param;

$get = $this->lxlabs_get_via_json($this->http, $serverloc, $this->port, $builtparameter);

return array(

   'success'=>true,

);

}//End Send

                                                       

                                                       

//CreateServer

public function Create() {

//Build the string

$string = "action=add";

$string .= "&class=client";

$string .= "&v-plan_name=". $this->options['option2']['value'] ."";

$string .= "&v-type=". $this->options['option1']['value'];

$string .= "&v-contactemail=". $this->client_data['email'];

$string .= "&send_welcome_f=off";

$string .= "&v-domain_name=". $this->details['option6']['value'];

$string .= "&v-dnstemplate_name=". $this->options['option3']['value'];

$string .= "&v-password=". $this->details['option2']['value'];

$string .= "&name=". $this->details['option1']['value'];

//Finish building string $string          

//send data

$type = null;

$senddata = $this->Send($type, $string);

if ($senddata['success']) {

$this->addInfo('Account has been created');

return true;

}

else {

return false;

}

}//End Create Server

                                                                                   

//Suspend

public function Suspend() {

//Prepare string

$string = "class=client";

$string .= "&name=". $this->details['option1'];

$string .= "&action=update";

$string .= "&subaction=disable";

//End Prepare String

$type = null;

//Send Data

$senddata = $this->Send($type, $string);

if ($senddata['success']) {

$this->addinfo('Account Suspended');

return true;

}

else {

return false;

}

                                                       

}

//End Suspend

//Unsuspend

public function Unsuspend() {

//Prepare string

$string = "class=client";

$string .= "&name=". $this->details['option1'];

$string .= "&action=update";

$string .= "&subaction=enable";

//End Prepare String

$type = null;

//Send Data

$senddata = $this->Send($type, $string);

if ($senddata['success']) {

$this->addInfo('Account has been unSuspended.');

return true;

}

else {

return false;

                                                       

}

                                                       

}

//End Suspend

//Kill Account

public function Terminate() {

$string = "action=delete";

$string .= "class=client";

$string .= "name=". $this->details['option1']['value'];

$type = null;

//Send Data

$senddata = $this->Send($type, $string);

if ($senddata['success']) {

return true;

}

else {

return false;

}

}

//Finish the murder

}//End Extension

?>



ssh踢除登陆的账户

第一种办法用用fuser,一般远程登陆的都可以直接喀嚓掉,但是如果遇上是在终端上直接登陆的就得用who找出pid然后kill。

[root@Server ~]# w
16:05:59 up 284 days, 1:47, 2 users, load average: 0.22, 0.07, 0.02
USER TTY FROM LOGIN@ IDLE JCPU PCPU WHAT
root xvc0 - 02Feb13 6.00s 0.00s 0.00s -bash
root pts/0 X.254.168.X 16:11 0.00s 0.00s 0.00s w

通过w命令查找出pts的ID,然后fuser对其可以下手除掉了。

fuser -k /dev/pts/0

终端上登陆的时候不会有pts,这就得直接对进程下手了.

[root@Server ~]# who -Hu 
NAME LINE TIME IDLE PID COMMENT
root xvc0 Feb 2 20:01 . 1313
root pts/0 Apr 28 16:11 . 24240 (X.254.168.X)

使用who -Hu就直接能定位出其PID,然后对其下黑手,

kill -9 1313

上面两种办法就能顺利干掉登陆的账号。

MacBook合盖不休眠解决方案

需要挂机/外出或者是只用外接显示器的时候合上盖子Mac会自动休眠,虽然带SSD系统休眠/恢复很快,系统自带没有相关的设置这时候打开sleepless就可以轻松搞定。

sleepless2.8.1下载点这里sleepless2.8.1.zip

sleepless2.8.3下载地址http://download.cnet.com/SleepLess/3000-18512_4-34360.html

解压文件后在选择“Prevent sleep with lid closed,display will NOT sleep” 就好了,未注册情况下会有一个小气泡广告,购买收费授权是9.5美元。

sleepsnap.png

苹果的Retina屏的确非常的清晰分辨率高得出奇,物理尺寸的局限还是让人捉急,在室内时间较多自然要找大显示器外接上这样自然感觉是好多了,也可以按F1将屏幕全黑,另外有种比较淫荡的方法是zai 显示器耳机孔和电源附加放一块磁盘 不用合盖就可以关闭显示器,不合盖的话通过键盘可以散热,各种利弊还是自行选择吧。

国内各种centos系统模板精简

yum groupremove "Mail Server" "Games and Entertainment" "X Window System" "X Software Development" "Development Libraries" "Development Tools" "Dialup Networking Support" "Games and Entertainment" "Sound and Video" "Graphics" "Editors" "Games and Entertainment" "Text-based Internet" "GNOME Desktop Environment" "GNOME Software Development"



有必要可以运行下yum grouplist看看装了那些,上面的一般能干掉一堆不怎么用的东西。

国内大多封装模板受win的习惯影响喜欢把各种东西安装进去,Linux系统做server丫不说LFS只要minimal安装就行了,节操呀.

Linux下LSI RAID卡管理

现在需求性能效率的服务器不论是做虚拟机还是跑SQL数据库,RAID是非常不错的捷径能满足容量和IO的需求


MegaRAID系列管理套件安装

cd /tmp
wget http://down.kvm.la/RAID/MegaCliLin.zip
unzip MegaCliLin.zip
rpm -Uvh *.rpm
cp /opt/MegaRAID/MegaCli/MegaCli64 /usr/bin/MegaCli

MegaRAID系列的命令可以查看《MegaCli 常见用法

3ware Inc系列的管理套件安装

阅读剩余部分...

买了几本书练英语音标

以前看过几个视频说中国人讲英语就像在案板上切菜一样。。。。
各种中式英语发音语法各种orz囧
现在和老外打交道的时间越来越多,有时候遇点复杂点的问题要花很多时间来沟通,老外很恼火,自己也窝火。。。
搞不好还容易整上矛盾。

Kvm关闭VNC后Guest下的Centos系统无法启动问题

Kvm虚拟化下如果关闭VNC的话Centos将无法启动
在启动进入了系统后我们修改一下grub再关闭VNC就可以启动guest的Centos系统了 附脚本
sed-i 's/hiddenmenu/#hiddenmenu/g' /boot/grub/grub.conf
sed-i 's/splashimage/#splashimage/g' /boot /grub/grub.conf