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。

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

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

1
<p><span style="color:#ff0000;">fuser -k /dev/pts/0</span></p>

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

1
[root@Server ~]# <span style="color:#ff0000;">who -Hu </span><br />NAME     LINE         TIME              IDLE          PID       COMMENT<br />root     xvc0         Feb  2 20:01   .               1313<br />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系统模板精简

1
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系列管理套件安装

1
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系统了 附脚本
1
sed-i 's/hiddenmenu/#hiddenmenu/g' /boot/grub/grub.conf
sed-i 's/splashimage/#splashimage/g' /boot /grub/grub.conf

directadmin部分常用tips

虽然经常安装DirectAdmin但是时间长了事情多了很多东西都记不住,写好的东西都放自己电脑里面偶尔有时候还很难找到,在这儿记录一些

安装directadmin

yum -y install wget gcc gcc-c++ flex bison make bind bind-libs bind-utils openssl openssl-devel perl quota libaio libcom_err-devel libcurl-devel gd zlib-devel zip unzip libcap-devel cronie bzip2 db4-devel cyrus-sasl-devel perl-ExtUtils-Embed cd /tmp wget http://www.directadmin.com/setup.sh chmod 755 setup.sh ./setup.sh

阅读剩余部分...

Kloxo快速安装中文语言包

wget -c http://down.kvm.la/kloxo/kloxo_cn.tar.gz
tar zxf kloxo_cn.tar.gz -C /usr/local/lxlabs/kloxo/httpdocs/lang
/script/update --class=sp_specialplay --name=client-admin --subaction=skin --v-specialplay_b_s_language=cn

快速简洁,干净利落。

编译安装Mysql5.5

mysql5.5采用cmake代替了configure

groupadd mysql -g 27
useradd mysql -u 27 -g 27 -c "MySQL Server" -d /home/mysql -m
wget -c http://dev.mysql.com/get/Downloads/MySQL-5.5/mysql-5.5.19.tar.gz/from/http://mysql.he.net/
tar zxf mysql-5.5.19.tar.gz
cd mysql-5.5.19
CFLAGS="-O3" CXX=gcc
CXXFLAGS="-O3 -felide-constructors -fno-exceptions -fno-rtti"

阅读剩余部分...