我大多数时候使用的是北京网通现联通的adsl,2M带宽.价格就不提了.

还记得二年前去台服玩魔兽世界的时候,还没有什么代理的概念,都是直连过去,延迟大体上在300~500站变动,300+比较常见.练个级,下个本,感觉上很流畅,这个曾让我迷惑了很久.那个时候国服还在9c手上,二区直连,延迟大体上在60~100间变动,但常出现lag现象,表现为拾取物品要几秒的时候,或者战场pk总提示目标不在眼前:虽然我眼前看到的的确就是目标.以前直以为是网络不太好.现在想想,网通是有点冤,要怪得怪那传说中的小霸王啊~

WLK之后,很明显直连台服已经不行了,于是N多专业或不专业,收费或不免费的WOW台服代理一下冒了出来.其中有比较长一段时间,小众大众的代理用起来效果都相当好.直到今天初,大部分代理都挂掉,无论用哪种代理,至少我的感觉是连接速度还是很糟糕.

在我手上有了一个香港VPS后,做了个简单测试,想了解下网络连接到底慢在哪里. <!--more--> 先从北京直接tracert台服的官网.已知台服的官网和wow服务器,都是放在hinet机房的,IP段是203.66.1xx.xxx的样子.

tracert www.wowtaiwan.com.tw
通过最多 30 个跃点跟踪
到 wowtaiwan.com.tw [203.66.142.57] 的路由:
~
  4    16 ms    24 ms    16 ms  bt-230-113.bta.net.cn [202.106.230.113]
  5    17 ms    15 ms    16 ms  61.148.152.117
  6    16 ms    16 ms    16 ms  202.96.12.9
  7    38 ms    38 ms    37 ms  219.158.4.62
  8    37 ms    37 ms    37 ms  219.158.4.238
  9   101 ms   100 ms   101 ms  r4036-s2.tp.hinet.net [211.72.233.190]
 10    80 ms    82 ms    81 ms  r4142-s2.tp.hinet.net [210.65.255.12]
 11   231 ms   232 ms   232 ms  TPDT-3012.hinet.net [220.128.4.66]
 12   229 ms   229 ms   229 ms  TYFO-3012.hinet.net [220.128.4.105]
 13   230 ms   230 ms   231 ms  TYFO-3402.hinet.net [220.128.9.141]
 14   232 ms   233 ms   234 ms  211-22-39-225.HINET-IP.hinet.net [211.22.39.225]
 15   231 ms   231 ms   231 ms  203.66.220.137
 16   296 ms   242 ms   333 ms  203.66.142.57
 17   242 ms   249 ms   241 ms  203.66.142.57
 18   314 ms   241 ms   242 ms  203.66.142.57
从这上面看.网通的adsl路由走向还算是比较简洁的,第8跳应该是网通的出口路由(备注:也许应该说是国际出口路由,不过在什么什么一家的情况下,省这二字免得麻烦),第9跳就已经到了hinet的接入路由上,延迟也不过区区100ms左右.第8跳到第9跳从30+的延迟,上升到100左右,显然是一个比较长的网络连接,猜测应该是连到TW的海底光缆.那么9跳后,就进入了hinet,又得知wow的服务器就存放在hinet机房,理论上不会再有太大的延迟波动,但第10跳还蛮正常,第11跳延迟马上彪升一倍多,达到了230+.之后一直到wow所在服务器,延迟都是高高的230+到300+波动,严重的时候会到600+.

由这个数据,猜测第11跳路由存在以下几个问题: 1.如果11没有问题,应该是10的路由指向错误,本应该指向一个更优化的下级路由去,结果被错误指定了一个比较远的路由,结果就是延迟直线上升. 2.11是正确的10的下级路由,但由于hinet的成本规划或者采购回扣什么什么的原因,用的是一个性能比较差的硬件,从而严重影响到响应时间以及处理速度. 3.表瞎说了,11是个高性能路由,且工作状况相当正常,而正因为工作正常,才发现来源IP是属于中国网通现联通的IP,优先级别是可以最后处理从那边来的数据包...这个工作也许是10跳在做,但不管10还是11,都是在hinet里面做的.

然后从香港做同样的功能的tracepath

-bash-3.2# tracepath www.wowtaiwan.com.tw
~
 4:  061238230106.static.ctinets.com (61.238.230.106)     asymm  5   1.377ms
 5:  061238225133.static.ctinets.com (61.238.225.133)     asymm  6   5.998ms
 6:  061238225137.static.ctinets.com (61.238.225.137)     asymm  7   1.526ms
 7:  061244232217.static.ctinets.com (61.244.232.217)       1.641ms
 8:  061244232106.static.ctinets.com (61.244.232.106)     asymm  9   2.158ms
 9:  211-22-33-150.HINET-IP.hinet.net (211.22.33.150)     asymm 11   3.435ms
10:  r01-mgi-hk.hinet.net (220.128.3.217)                 asymm  9   3.987ms
11:  TPDT-3011.hinet.net (220.128.1.181)                    asymm 10  87.844ms
12:  TYFO-3011.hinet.net (220.128.1.57)                     asymm 14  59.563ms
13:  TYFO-3012.hinet.net (220.128.2.57)                     asymm 14  59.511ms
14:  TYFO-3402.hinet.net (220.128.9.141)                    asymm 12  59.480ms
15:  211-22-39-225.HINET-IP.hinet.net (211.22.39.225)     asymm 13  59.759ms
16:  203.66.220.137 (203.66.220.137)                      asymm 14  59.619ms
17:  no reply
哎,看这了网速,真的觉得香港很好.很好,虽然那的楼高了些,人口密度大了些...

这里也是第9跳接入了hinet,然后不争气的hinet也是在第11条延迟突然上升了20倍之多.文字游戏玩不得的,这20倍之后的效果,明显没有上面一倍的效果给力啊,20倍后才80+,这之后到达官网主机,延迟还降到50+.

由此也可以猜测: 1.hinet的路由性能的确是有点点问题,不然不会由80多降到后面几跳的50多,应该是处理不过来. 2.二条线路共同点都是到达hinet接入点的时候,速度还挺理想,进入hinet之后,会增加很高的延迟 3.增加的延迟,猜想是和来源IP有关系.想来不会故意设置性能低下的路由给谁谁谁用,那最可能的原因就是不同的接入商对应了不同的带宽.比如说北京联通接入hinet是10M,香港某机房接入是1000M,但联通得有多少人挤这10M的小路啊,于是对应的那个路由设备就忙得抽筋了,于是我们过去的连接也跟着抽筋了,于是我们副本战场累得手也抽筋了...

另外,从北京联通访问香港大部分机房的速度都是相当理想的,40~80ms的延迟居多.所以一个理想的代理,应该是从香港中转,然后走香港到TW的出口,这样连接TWOW的网络速度会理想很多.

大多数代理的延迟其实都算还好,不过用户一多,流量一上来,效果就和北京联通直连一样的现象了,大家都挤代理的那条私有小路,不抽筋才怪.所以更理想的代理,是自己在香港买个VPS,单独512K或1M带宽,自己一个人...自私了点...加上好友...这还行...三五人用完全没问题.

可能的问题: 为了验证,购买过几家香港的VPS,每月价格200左右,都是号称1M的独立带宽.白天用效果都相当好,但晚上效果只有一家还勉强过得去.这其中有二个可能,一是我买的vps都是从一些小商家手中拿的,不是从机房直接拿到,那1M的独立带宽,应该有很大的水分,导致晚上用的人一多,同样形成挤小路的情况,延迟马上高升.而从机房直接拿VPS,价格要高很多,可选的种类也少,还不如直接搬台机器跑香港机房去做主机托管.直接在机房托管一台主机,再租个2M,10M的带宽,这应该是最高级别的代理方式了,质量也有保障.二是台服虽然号称服务器升级过几次,不过现在移民过去的人口,应该远远超出了硬件的负载,这样晚上在线人口一多,除去挤带宽不说,只怕台服的服务器也会变成小霸王,处理不了那么多人口的吃喝拉撒.而对于是否升级硬件直接解决这个问题,智凡迪只怕纠结了不止一年二年了吧.

兄弟们,AFK先吧,拉几个酒肉朋友,一起来学三国杀...

以前曾偶然听到李家怡的原创歌曲:365,觉得很普通的同时又很动听.在网上查了下,youtube上保存的版本不错,有繁体中文字幕,包括歌词,特地记录在这里.

如果你也来到里,看到的却是一个大白框的话,那也是很正常的现象,因为youtube有时候是个不存在的网站,或者说是个看不见的网站.如果你有兴趣听这歌,或者是有兴趣围观下传说中的网站,那么,滚动鼠标到白框后面,做点技术层面上的事后,再刷新本页面吧.

歌词如下:

李家怡 - "365"
词/曲/演唱 李家怡

闷热的夏天 平淡的秋天 突然间在我的眼里都变特别 烦躁的春天 懒惰的冬天 都没关系 只要有你在我的身边 我开始发现 所谓的永远 原来远在天近在眼前

No matter day or night You are still my light You make me feel that all the things will be alright No matter how time flies You are still by my side I'll see the peace You know I need you be my guy

难过的阴天 无聊的雨天 幸福的感觉满溢心里 没改变 失去的昨天 未知的明天 都没关系 因为我们有的是今天 你终於出现 我的生命线 从此甜蜜的继续蔓延

No matter day or night You are still my light You make me feel that all the things will be alright No matter how time find You are still by my side I'll see the peace You know I need you be my guy

Oh~ Da da, da da, da da, da da Oh da da da da da

不管白天黑夜 离不开的视线 答应我一直到白头都不改变

仍然强烈建议你用firefox访问本站,一是因为本站访问效果没有在IE下进行调整测试,二是有些活在firefox下方便得多.当然还有更多的理由,就不多说了. 首先你可以在这里获取一个免费的国外ssh帐号:

美国免费SSH账户|美国免费SSH账号

或者你在twitter follow@freesshus也许能要到一个, BTW,那个twitter也是个看不到的网站,如果你能正常访问,下面的内容就可以跳过了.

然后从这里下载个小工具(windows类操作系统,如果你用linux,直接使用ssh命令,打开监听并指定端口即可)

plink.exe

放桌面上,做一个快捷方式,将属性中的目标改为

~\plink.exe -pw 密码 用户名@主机名 -N -C -D 127.0.0.1:7070
其中~为plink.exe所在目录,保持原样,假如从freessh.us取得的密码为 JuR3K2,主机为一号主机,那么plink.exe的参数如下面的样子
~\plink.exe -pw JuR3K2 freessh@a.freessh.us-N -C -D 127.0.0.1:7070
第一次运行会提示保存证书,确认就行.连接成功会显示形如
Using username "freessh".
这样就ok了.

Firefox推荐安装AotoProxy插件,代理服务器选择默认的SSH -D就行,然后刷新本页. IE要在Internet选项里,把套接字代理服务器设置为127.0.0.1,端口7070,然后刷新本页.

可能有的问题: 最近freessh相当火爆,如果服务器状态显示繁忙,密码就拿不到了.如果你有耐心,评论里留下email,我会发送一个最长一个月有效的香港ssh帐号给你试用,限额前五名. 现在还能用的ssh国外帐号申请网站 http://www.cjb.net/ add一个新的free ssh提供网站 http://ssh.daili.vc/

很闲的时候,找东西找发时间,无聊就玩了会verycd上的魔塔世界.有时候杀10来只怪更无聊,何况更要爬100多层的塔,全是重复劳动.不由想起很久以前用过的按键精灵,做这事最合适了.于是顺手写了个简单的前台脚本,放虚拟机里用蛮方便.后台那块还没看,以后看看会不会加进去.

记得最早用按键精灵好象还是2.x还是3.x来着,现在已经到了8.0,用起来是更方便了,广告也更多了......

脚本不长,100多行,就直接贴在下面,懒人也可以下载能直接运行的小精灵版本.下载压缩文件,全部放在c:\mt下就好.放别的目录则在代码或小精灵里修改下picPath参数.

小精灵版本下载 只下载脚本用到的图片

脚本:

//todo
//1.加入修理
//2.加入统计显示
//3.智能判断所处场景

Dim findFlag    //是否找到的标志
Dim stepX       //X偏移量
Dim stepY       //Y偏移量
Dim picPath     //图片所在目录
Dim varGWWZ     //怪物位置
Dim varScreen   //场景,取值为 副本,冲塔,野外杀怪
Dim varLoopNum  //脚本运行次数
Dim varPicsim   //图片相似度
Dim adjX        //x adjust
Dim adjY        //y adjust

//初始设置
UserVar varPicsim=0.8 "图片相似度,0,5~1"
UserVar stepX=20 "查找图片时的偏移量x"
UserVar stepY=20 "查找图片时的偏移量y"
UserVar picPath="c:\mt\" "图片所在目录,以结束" 
UserVar varGWWZ=1 "设置怪物位置,取值为1,2,3"
UserVar varLoopNum=100 "脚本运行次数"
UserVar varScreen=DropList{"副本":"副本"|"冲塔":"冲塔"|"野外杀怪":"野外杀怪"}=2 "场景,取值为 副本,冲塔,野外杀怪"
UserVar adjX=208 "x adjust"
UserVar adjY=84 "Y adjust"

varGWWZ=varGWWZ*60-60

findFlag=false

Delay 500

For varLoopNum
    if varScreen="野外杀怪" then
        Call 野外杀怪
    ElseIf varScreen="冲塔" then
        Call 冲塔
    ElseIf varScreen="副本" then
        Call 副本
    End If
Next

//冲塔主程序
Sub 冲塔
    Call 继续探险()
    Delay 1000
    Call 确定打怪()
    Delay 500
    Call 关闭战斗()
    Delay 1000  
End Sub
//野外杀怪主程序 
Sub 野外杀怪
    Call 找到怪物()
    Delay 1000
    Call 确定打怪()
    Delay 500
    Call 关闭战斗()
    Delay 1000
End Sub

//副本主程序
Sub 副本
    Call 副本攻击()
    Delay 1000
    Call 确定打怪()
    Delay 500
    Call 关闭战斗()
    Delay 1000
End Sub

Sub 副本攻击
    If 试图查找点击图片(801,407,870,432,"攻击.bmp",35,14)=false then
        //没有找到则退出
        MessageBox "没有找到<攻击>哦,我先休息会儿~~"
        EndScript
    End If
End Sub

Sub 继续探险
    If 试图查找点击图片(566,484,643,513,"继续探险.bmp",40,15)=false then
        //没有找到则退出
        MessageBox "没有找到<继续探险>哦,我先休息会儿~~"
        EndScript
    End If
End Sub

Sub 找到怪物
    //光标移动到第一个怪位置
    If 试图查找点击图片(1106,365+varGWWZ,1136,383+varGWWZ,"怪物.bmp",15,9)=false then
        //没有找到则退出
        MessageBox "没有找到怪物哦,我先休息会儿~~"
        EndScript
    End If
End Sub

//查找指定的图片并点击,返回true
//如果没查找,返回false
//参数分别为
//左上x,左上y,右下x,右下y,图片名,点击时偏移x,偏移y
//偏移用于尽量将鼠标移动到图片中间
//查找图片的范围偏移由全局变量决定
Function 试图查找点击图片(sX,sY,eX,eY,picName,mX,mY)
    FindPic sX-stepX-adjX,sY-stepY-adjY,eX+stepX-adjX,eY+stepY-adjY,picPath+picName,varPicsim,intX,intY
    If intX>0 and intY>0 then
        MoveTo intX+mX,intY+mY        
        LeftClick 1
        Delay 500
        //确认点击成功,检查三次
        FindPic sX-stepX-adjX,sY-stepY-adjY,eX+stepX-adjX,eY+stepY-adjY,picPath+picName,varPicsim,intX,intY
        For 3
            if intX>0 and intY>0 then
                //MoveTo intX+mX,intY+mY
                LeftClick 1
                Delay 500
            Else
                Exit For
            End If
        Next
        试图查找点击图片=true
    Else
        试图查找点击图片=false    
    End If
End Function

//查找指定的图片并点击
//如果没查找,延迟一秒后继续查找,找到为止
//参数分别为
//左上x,左上y,右下x,右下y,图片名,点击时偏移x,偏移y
//偏移用于尽量将鼠标移动到图片中间
//查找图片的范围偏移由全局变量决定
Sub 查找点击图片(sX,sY,eX,eY,picName,mX,mY)
    findFlag=false
    While findFlag=false
        FindPic sX-stepX-adjX,sY-stepY-adjY,eX+stepX-adjX,eY+stepY-adjY,picPath+picName,varPicsim,intX,intY
        If intX>0 and intY>0 then
            MoveTo intX+mX,intY+mY
            LeftClick 1
            Delay 500
            //确认点击成功,检查三次
            FindPic sX-stepX-adjX,sY-stepY-adjY,eX+stepX-adjX,eY+stepY-adjY,picPath+picName,varPicsim,intX,intY
            For 3
                if intX>0 and intY>0 then
                    //MoveTo intX+mX,intY+mY
                    LeftClick 1
                    Delay 500
                Else
                    Exit For
                End If
            Next
            findFlag=true
        End If
    Wend
End Sub

Sub 确定打怪
    Call 查找点击图片(626,558,713,596,"确定.bmp",41,17)
End Sub
Sub 关闭战斗
    Call 查找点击图片(712,604,794,636,"关闭.bmp",41,15)
End Sub
Sub 关闭战场
    Call 查找点击图片(720,560,804,593,"关闭战场.bmp",42,16)
End Sub

备注一:不做任何改动,能在1024x768下运行,ie or ff最大化,只显示一行地址栏及一行标签栏.

备注二:UserVar adjX=208 "x adjust"及UserVar adjY=84 "Y adjust"设置为0.能在1440x900的本本上运行.其他则要修改下这二个的值.原始图是在1440x900下取的,以攻击第一个野外怪位置为例,"攻击"二个字的图片位置是1104,363.其他分辨率下取这处图边左上角坐标与原始坐标的差值.1024x768下,这二字的左上角坐标为896,279,差值就是现在在用的208,84.以后有空再改为简单点的标识.

可能存在的问题:

我在按键精灵8时进行调试,发现有时候Uservar定义的变量取值会不正常,后来发现是保存代码后,脚本里所有定义的Uservar值都会被保存下来,放在按键精灵8的安装目录根下,名为uservar.txt文件中.这时候如果只改动脚本里的值,调试运行里仍会读取这个文件里保存的值.理论上按键精灵8在调试里,应该先读取脚本里的值,并更新到uservar.txt中,或者调试里不使用这个文件. 临里办法是每次调试都删除这个文件,或者直接先在编辑器里的GUI中选择确定新值,并先保存,再调试.

Syntax Highlighter ComPress语法加亮插件在我用的模板中不能自动换行.改了下CSS先用着.可惜这个插件在IE下有小部分不能正常显示,FF下大部分正常.

查找syntax-highlighter-compress/styles/shCoreEclipse.css中的

.syntaxhighlighter .line {
  white-space: pre !important;
}
改为
.syntaxhighlighter .line {
 white-space: pre-wrap;
white-space: -moz-pre-wrap; white-space: -pre-wrap;
white-space: -o-pre-wrap; word-wrap: break-word; }
保存就ok了.

WP-DBManager是个不错的数据库管理插件,功能之一是把备份好的数据库打包发送到指定的邮箱.

VPS因为没有配置smtp服务,这样php的mail函数不能正常工作,更加考虑到用Gmail信箱用来备份是个很好的选择,于是下载了WP-Mail-SMTP插件,设置WP用SMTP发信.安装设置好后,测试邮件能发送成功,但WP-DBManager的邮件发送显示OK,Gmail里面却收不到东西.

换了Configure SMTP再试,这个插件更智能点,配置Gmail的信箱很容易.一样安装设置好后,测试邮件能发送成功,但WP-DBManager的邮件发送显示OK,Gmail里面却收不到东西.

于是估计大概可能也许是WP-DBManager的问题.查看了一下,与wp-dbmanager/wp-dbmanager.php及wp-dbmanager/database-manage.php二个文件有关.前者用于配置参数,其中有自动备份并发送邮件功能;后者用于管理备份文件,其中有将备份文件发送到指定信箱功能.果然这二个文件里都将邮件发送部分写成死死的php的mail函数,这样无论WP-Mail-SMTP还是Configure SMTP有多强大,它都不知道啊~~

修改很简单,查找wp-dbmanager/wp-dbmanager.php中的 <!--more-->

mail($backupemail, $mailsubject, $mailmessage, $mailheader);
改为
wpmail($backupemail, $mailsubject, $mailmessage, $mailheader);
查找wp-dbmanager/database-manage.php中的
mail($mailto, $mailsubject, $mailmessage, $mailheader);
改为
wpmail($mailto, $mailsubject, $mailmessage, $mailheader);

啊,没错,前面加wp就好,wpmail的相关信息可以参考 http://phpdoc.wordpress.org/trunk/WordPress/wp-includes---pluggable.php.html#functionwpmail 这样修改后,wp_mail会使用WP-Mail-SMTP或Configure SMTP的配置SMTP发送邮件.这二个插件在wp3中都正常工作.

WP-DBManage现在能成功发送打包后的数据库备份文件到指定的Gmail信箱了,8过标题是乱码,好在正文是全E文的,能看清. 修正标题乱码,在前面所说的二个php文件中,查找

$mailsubject = sprintf(('%s Database Backup File For %s', 'wp-dbmanager'), getbloginfo('name'), $filedate);
均在后面加入下面这一行进行base64编码
$mailsubject = '=?UTF-8?B?'.base64encode($mailsubject).'?=';

再试一次发送邮件,万事大吉了~

可能的问题: WP-DBManager的设置页面,Path To mysqldump:以及Path To mysql:在自动检测失败时,要手动填入包含程序名的绝对路径,比如

Path To mysqldump:/usr/local/mysql/bin/mysqldump
Path To mysql:/usr/local/mysql/bin/mysql
或者在大多数机器上,是在/usr/bin下的.

wp-content/backup-db放有备份文件,确保使用.htaccess进行保护,或者修改这个目录名.

WP-Mail-SMTP或Configure SMTP配置时,都最好使用ssl加密连接,端口为465.使用Gmail时,也最好用https方式,这样你的网站数据,基本上都在加密通道跑来跑去,还算是比较安全的.

参考地址

修改loop.php 查找第二处"continue reading",该行改为

<?php the_content("......点此阅读<span class=\"widget-title\">t " . get_the_title('', '', false) . "</span> 全文......"); >

function.php底部加入脚本,用于跳转到文章开头.

function remove_more_jump_link($link) { 
    $offset = strpos($link, '#more-');
    if ($offset) {
        $end = strpos($link, '"',$offset);
    }
    if ($end) {
        $link = substr_replace($link, '', $offset, $end-$offset);
    }
    return $link;
}
add_filter('the_content_more_link', 'remove_more_jump_link');

博客架设前,试用了很多相关程序,包括drupal,dedecms,wordpress等,甚至单文件的TiddlyWiki. 个人觉得TiddlyWiki在本地使用是很方便的,只是放在网上管理上会比较麻烦.drupal在定制一番后,也蛮好用,麻烦就麻烦在要定制不少东西.最后决定用wordpress,相对drupal来说,wordpress上手要容易得多,特别是新版本的wordpress 3的menu很好用.

WP3计划放在安装了centos5的VPS上,使用源代码编译安装apache,mod_php以及mysql三大件.Nginx要下次再换了,因为现在最新版本的php5.3.2编译成fpm方式比较麻烦.好在fpm已经进入PHP的SVN了,不久就应该有官方的fpm出来.

安装过程写在下面,方便以后重个装,查个找什么的.

  1. 安装apache

    从官方网站 http://httpd.apache.org/ 下载 httpd-2.2.15.tar.gz 把所有扩展功能都编译成模块,用--enable-modules=all与--enable-mods-shared=all二个参数.把all替换成most,则只编译大部分模块,或者指定模块名.懒人用all吧,编译完成后再去配置文件里,去掉不要的功能.

    tar vzxf httpd-2.2.15.tar.gz
    cd httpd-2.2.15
    ./configure --prefix=/usr/local/apache2 \
    --enable-modules=all \
    --enable-mods-shared=all
    

    apache的配置文件在PHP安装完成后再修改.

  2. 安装mysql

    从官方网站http://mysql.com下载mysql-5.1.35.tar.gz 其实mysql的安装,用yum最方便,我自己编译安装,是yum update时省点流量.虽然这个VPS流量挺多...

    tar -vzxf mysql-5.1.35.tar.gz
    cd mysql-5.1.35
    ./configure --prefix=/usr/local/mysql \
    --enable-assembler \
    --with-charset=utf8 \
    --enable-thread-safe-client \
    --with-extra-charsets=all \
    --with-big-tables \
    --with-readline \
    --with-ssl \
    --with-embedded-server \
    --enable-local-infile
    
    make &amp;&amp; make install
    groupadd mysql
    useradd -g mysql mysql
    cp /usr/local/mysql/share/mysql/my-medium.cnf /etc/my.cnf /usr/local/mysql/bin/mysql_install_db --user=mysql
    chown -R mysql /usr/local/mysql/var
    chgrp -R mysql /usr/local/mysql/.
    cp /usr/local/mysql/share/mysql/mysql.server /etc/init.d/mysql
    chmod 755 /etc/init.d/mysql
    echo "/usr/local/mysql/lib/mysql" &gt;&gt; /etc/ld.so.conf
    echo "/usr/local/lib" &gt;&gt;/etc/ld.so.conf
    ln -s /usr/local/mysql/lib/mysql /usr/lib/mysql
    ln -s /usr/local/mysql/include/mysql /usr/include/mysql
    ldconfig
    

    安装完成后,修改/etc/my.cnf文件.用#注释掉skip-networking,开启TCP监听.

    #skip-networking
    

    并在之后插入下面这行,只在本机监听:

    bind-address=127.0.0.1
    
  3. 安装PHP

    centos没有现成的libiconv包,所以在编译PHP之前要手动编译下libiconv. 要用最新的1.13.1才行,1.13我这里编译后PHP死活找不到.

    wget http://ftp.gnu.org/pub/gnu/libiconv/libiconv-1.13.1.tar.gz
    tar -zxvf libiconv-1.13.1.tar.gz
    cd libiconv-1.13.1
    ./configure --prefix=/usr/local/libiconv
    make
    make install
    

    从http://php.net上下载php-5.3.2.tar.gz 现在可以编译PHP子,有一个老长老长的编译参数:

    tar vzxf php-5.3.2.tar.gz
    cd php-5.3.2.tar.gz
    ./configure \
    --with-apxs2=/usr/local/apache2/bin/apxs \
    --with-mysql \
    --with-mysqli=/usr/local/mysql/bin/mysql_config \
    --with-iconv=/usr/local/libiconv \
    --with-freetype-dir \
    --with-jpeg-dir \
    --with-png-dir \
    --with-zlib \
    --with-libxml-dir=/usr \
    --enable-xml \
    --disable-rpath  \
    --enable-magic-quotes \
    --enable-safe-mode \
    --enable-bcmath \
    --enable-shmop \
    --enable-sysvsem \
    --enable-inline-optimization \
    --with-curl \
    --with-curlwrappers \
    --enable-mbregex \
    --enable-mbstring \
    --with-mcrypt \
    --enable-ftp \
    --with-gd \
    --enable-gd-native-ttf \
    --with-openssl \
    --with-mhash \
    --enable-pcntl \
    --enable-sockets \
    --with-xmlrpc \
    --enable-zip \
    --enable-soap \
    --without-pear \
    --with-gettext
    make
    make install
    

    安装后php说是会自动修改/usr/local/apache/conf/httpd.conf文件,检查了下,发现

    LoadModule php5_module        modules/libphp5.so
    

    会被自动加入,但还是要手工添加

    AddType application/x-httpd-php .php
    

    把这行放到任意一个AddType行之后就行.

    再次修改apache的配置文件/usr/local/apache/conf/httpd.conf,去掉所有不必要模块(用#注释掉相应的LoadModule行),只保留下面几个:

    LoadModule log_config_module modules/mod_log_config.so
    LoadModule mime_module modules/mod_mime.so
    LoadModule dir_module modules/mod_dir.so
    LoadModule rewrite_module modules/mod_rewrite.so
    LoadModule php5_module        modules/libphp5.so
    

    查找

    <IfModule dir_module>
        DirectoryIndex index.php index.html index.htm
    </IfModule>
    

    加入index.php作为默认页面. 用#注释所有以Order用Deny开头的行:

    #Order deny,allow
    #Deny from all
    

    查找

    #Include conf/extra/httpd-mpm.conf
    

    去掉前面的#,并修改httpd-mpm.conf,考虑到现在来我这的客人会比较少,数字填写小点,省点内存.要想过好日子,能省点就省点吧...

    <IfModule mpm_prefork_module>
        StartServers          3
        MinSpareServers       3
        MaxSpareServers       5
        MaxClients            50
        MaxRequestsPerChild   500
    </IfModule>
    

    其中MaxRequestsPerChild默认值为0.最好改为非0值,500,1000都可.这样一个apache子进程在做完500个份内工作后,会光荣退休,换新鲜血液上来,防止他一直霸占工作岗位.

  4. 启动mysql及apache

    麻烦的东西都安装好了,现在可以启动mysql和apache了.

    /etc/init.d/mysql start
    /usr/local/apache2/bin/apachectl start
    
  5. 安装wordpress3 从http://wordpress.org下载最新版本的wordpress,我下载的是3.0

    wget http://wordpress.org/latest.tar.gz
    tar vzxf latest.tar.gz
    mv wordpress/* /usr/local/apache2/htdocs
    

    这样就把wp3放到apache默认网站的根目录了

    安装wp3前,要先安装phpmyadmin,用来操作mysql数据库.yum install phpmyadmin 或者直接官网下载解开就好.放在htdocs/db下. 默认mysql root口令为空,如果是新版本的phpmyadmin,要修改一下其配置文件config.inc.php,才能正常login.

    $cfg['Servers'][$i]['AllowNoPassword'] = true;
    

    默认为false,改为true就好.没有这行就不用管.

    先在firefox打开 http://站点ip或域名/db ,首先修改root口令,然后在mysql里单独建立一个新用户如wp及新库如wp,并将库wp的所有权限授予新用户wp.完成后刷新下权限表.

    再打开 http://站点ip或域名 就可以正常安装wordpress了,数据库地址填写localhost 或127.0.0.1,最好mysql新用户wp对应的host字段也是localhost. 

  6. 可能存在的问题 安装程序如果提示配置文件wp-config.php无法创建,大部分原因是因为htdocs目录的权限问题. 先查找用户名

    cat /usr/local/apache2/conf/httpd.conf | grep -1 Group
    #
    # User/Group: The name (or #number) of the user/group to run httpd as.
    # It is usually good practice to create a dedicated user and group for
    --
    User daemon
    Group daemon
    

    可见apache是以daemon的身份运行的,更改用户并查看结果

    chown -R daemon.daemon /usr/local/apache2/htdocs
    ls -ld /usr/local/apache2/htdocs/
    drwxr-xr-x 6 daemon daemon 4096 Jul 15 22:33 /usr/local/apache2/htdocs/
    

再运行wordpress安装程序就能自动建立配置文件了.以后也不会出现wordpress安装插件或升级时,要输入连接信息的错误.

到这里安装就差不多完成了.接下来就是配置插件等内容了.有空再慢慢写.

Welcome to WordPress. This is your first post. Edit or delete it, then start blogging!