1,039 views 二月 26, 10 by Timothy
忙乎了一两天,俺的VPS算是上线了,基于Ubuntu Linux的,512MB内存,20G硬盘,1TB月流量,赠送2个IP,还不错。不过,现在还没有把博客迁移过去的打算,此VPS仅作为练手而用,只是建了一些ssh账号,供自己和同事跨栏用,还简单的搭建了基于Nginx+MySql+PHP+FastCGI的WordPress环境,并成功拉过来俺的一位同事在上面安了个blog,嘿嘿。
提到VPS,最重要的还是安全,毕竟你的系统是直接面向公网,如果不加强防范,很容易成为别人手里的肉鸡。Linux中的iptables,用过的同学都知道,是一个基于Linux内核的防火墙,功能比较强大,下面是iptable的一些常用的规则设置:
1
2
3
4
5
6
7
8
9
10
11
12
| /sbin/iptables -P INPUT DROP #禁止掉服务器所有入口请求,后面的规则只允许部分常用的服务端口
/sbin/iptables -P OUTPUT ACCEPT #允许服务器访问出口请求
/sbin/iptables -A INPUT -i lo -j ACCEPT #允许本地接口访问
/sbin/iptables -A INPUT -p icmp -m icmp --icmp-type 8 -j DROP #禁止ping,因为ping是基于icmp协议的
/sbin/iptables -A INPUT -p tcp -m tcp --dport 20 -j ACCEPT #允许部分常用端口入口请求访问
/sbin/iptables -A INPUT -p tcp -m tcp --dport 21 -j ACCEPT
/sbin/iptables -A INPUT -p tcp -m tcp --dport 25 -j ACCEPT
/sbin/iptables -A INPUT -p tcp -m tcp --dport 53 -j ACCEPT
/sbin/iptables -A INPUT -p udp -m udp --dport 53 -j ACCEPT
/sbin/iptables -A INPUT -p tcp -m tcp --dport 80 -j ACCEPT
/sbin/iptables -A INPUT -p all -m state --state ESTABLISHED,RELATED -j ACCEPT #允许所有已经连接端口请求
/sbin/iptables -A INPUT -p all -m state --state INVALID,NEW -j DROP #DROP掉所有失效或者新的请求 |
可以把上述脚本保存起来,执行,然后用命令/sbin/iptables -L -n查看规则是否生效
把上述脚本再完善一下:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
| PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:~/bin
export PATH
case "$1" in
start)
echo -n "Staring to write your Iptbales:..."
/sbin/iptables -P INPUT DROP
/sbin/iptables -P OUTPUT ACCEPT
/sbin/iptables -A INPUT -i lo -j ACCEPT
/sbin/iptables -A INPUT -p icmp -m icmp --icmp-type 8 -j DROP
/sbin/iptables -A INPUT -p tcp -m tcp --dport 20 -j ACCEPT
/sbin/iptables -A INPUT -p tcp -m tcp --dport 21 -j ACCEPT
/sbin/iptables -A INPUT -p tcp -m tcp --dport 25 -j ACCEPT
/sbin/iptables -A INPUT -p tcp -m tcp --dport 53 -j ACCEPT
/sbin/iptables -A INPUT -p udp -m udp --dport 53 -j ACCEPT
/sbin/iptables -A INPUT -p tcp -m tcp --dport 80 -j ACCEPT
/sbin/iptables -A INPUT -p all -m state --state ESTABLISHED,RELATED -j ACCEPT
/sbin/iptables -A INPUT -p all -m state --state INVALID,NEW -j DROP
echo "Ok"
;;
stop)
echo -n "Cleaning your Iptables:..."
/sbin/iptables -F
/sbin/iptables -X
/sbin/iptables -Z
/sbin/iptables -P INPUT ACCEPT
/sbin/iptables -P OUTPUT ACCEPT
echo "Ok"
;;
restart)
echo -n "Cleaning your Iptables:..."
/sbin/iptables -F
/sbin/iptables -X
/sbin/iptables -Z
echo "Ok"
echo -n "Staring to write your Iptbales:..."
/sbin/iptables -P INPUT DROP
/sbin/iptables -P OUTPUT ACCEPT
/sbin/iptables -A INPUT -i lo -j ACCEPT
/sbin/iptables -A INPUT -p icmp -m icmp --icmp-type 8 -j DROP
/sbin/iptables -A INPUT -p tcp -m tcp --dport 20 -j ACCEPT
/sbin/iptables -A INPUT -p tcp -m tcp --dport 21 -j ACCEPT
/sbin/iptables -A INPUT -p tcp -m tcp --dport 25 -j ACCEPT
/sbin/iptables -A INPUT -p tcp -m tcp --dport 53 -j ACCEPT
/sbin/iptables -A INPUT -p udp -m udp --dport 53 -j ACCEPT
/sbin/iptables -A INPUT -p tcp -m tcp --dport 80 -j ACCEPT
/sbin/iptables -A INPUT -p all -m state --state ESTABLISHED,RELATED -j ACCEPT
/sbin/iptables -A INPUT -p all -m state --state INVALID,NEW -j DROP
echo "Ok"
;;
*)
echo "Usage: $0 {start|stop|restart}"
esac
exit 0 |
这样,我们就可以用start/stop/restart的参数来启用、禁止iptables防护了,很方便。另外,可以把此脚本放入/etc/init.d,让它像系统服务一样,在VPS启动的时候自动运行。
PS:
1.此脚本参考自网上,并作了部分修改
2.搜狗云输入法,也有郁闷的时候,在写文章的时候,候选词半天不出来,很卡,囧rz 是我打字速度太快,还是网速很慢?……
797 views 二月 21, 10 by Timothy
这段时间对Linux相当痴迷,玩了下CentOS,现在又看上了Ubuntu。对Ubuntu偶早有所闻了,以前也在虚拟机上装过,那漂亮的UI是各个Linux版本中相当出众的,安装、维护的简单和方便,也是至今都Ubuntu拥有众多追随者的原因。正好,俺家中有一台老牛机(以前大学时候用的台式机),这机器历史算长久了,从大二一直跟随俺到现在,有7、8年历史了。毕业后把这台机器略升级了一下,到现在都一直闲置在书房中,完全成了摆设。自从用上了笔记本,老婆也用上了上网本,这台台式机更是没人用了。昨天突然心血来潮,决定在老牛机上装个Ubuntu玩玩,没事了还可以开着下下高清BT,充分利用下闲置资源。
老牛机配置如下:
CPU: Athlon 1700+
内存: KingSton 1.5GB(1G*1+256*2)
硬盘: 希捷80G IDE接口
显卡: Geforce 6200
主板: nForce2
开始行动
说干就干,首先在Ubuntu的老家拖了个最新的Ubuntu 9.10 32bit Desktop Edition的ISO。老牛机的光驱,经久失修,已经是个残废了。本来想扔掉的,但机箱面板那个挡板也被我搞掉了,扔掉光驱就有个缺口,不美观,只有留下了。主板支持4个USB接口,两个坏掉了,剩下两个还可用,刚好偶又有个2G的U盘(捡来的),所以打算通过U盘来安装系统。用U盘装系统好处多多,不用刻盘,并且速度比光驱快,嘿嘿。
用Ultra ISO利器,把安装镜像写入到U盘:
写完后的U盘驱动器图标:
安装系统
拔下U盘,插上老牛机器,一步一步安装,Ubuntu从此跑在了老牛机上,发现比以前的XP快不少。并且Ubuntu支持大部分硬件,无须驱动,显卡驱动可以用Ubuntu默认的,也可以自己单独安装。安装界面也相当的友好,即使是第一次使用的用户,也能根据向导来完成安装。
一点使用体验
1.5G的内存,运行Linux当然会快很多,从开机和系统加载的速度就可以感受到,比以前的XP快不少。装上显卡驱动后,能打开一些可视化特效,比较炫。
由于Ubuntu自带Firefox浏览器,于是立马装上了AutoProxy插件,再用Linux自带的ssh命令,加上一个国外的SSH帐号,立马实现了跨栏的效果……为了以后方便,做了个简单的shell脚本:
1
2
| echo "ssh -N -D 127.0.0.1:7070 ssh-account@server-address" > connect.sh
chmod +x connect.sh |
-N: 不需要shell登陆
-D: 建立本地端口映射,这里使用的7070端口,把这端口配置到AutoProxy里面去,就OK了
后面是ssh-username@server-ip
控制台运行此脚本后,会提示输入ssh密码,输入后,连接完毕,可以打开Firefox畅游了
关于BT下载工具,偶用Transmission,貌似Ubuntu已经自带了,没有的也可以单独安装。
关于中文输入法,偶一般是在浏览网页时输入中文,Firefox可以装一个搜狗的云输入插件,方便、绿色、环保,强烈推荐下。
小结一下
老牛机器装上Linux感觉挺赞,如同重新焕发了活力一般。家有闲置老牛机的同学不妨试一试。
1,170 views 二月 17, 10 by Timothy
为了Blog日后的改进和完善,偶越来越需要一个本地的测试环境。毕竟,直接在本地改程序,再上传到线上看修改后的效果,这是比较有风险的做法,并且也很不规范。由于WordPress是基于PHP的,而偶的操作系统又是Win7,首选的做法,就是用IIS+PHP+MySQL来搭建测试环境。并且,Windows下面配置起来没什么难度。不过我更倾向于Linux,所以选择了CentOS 5.4 + MySQL + PHP + Nginx,装在VirtualBox的虚拟机中。一来为了熟悉下Linux,二来是为了以后搞VPS先热点身,嘿嘿。
装好CentOS,没选择X Windows,直接用了Licess同学的一键安装包,非常方便。Licess同学为我们写好的Shell脚本里面,能自动完成下载、编译、安装的过程,省去很多繁琐的过程。安好后,需要根据自己的喜好更改一下设置即可。其中也遇到很多莫名其妙的问题,偶又是Linux新手,所以只有询问google老师,不过还好都找到了答案。待基础的几个软件都搞好之后,就可以安装WordPress了,然后将线上的博客内容通过PHPMyAdmin导出,再在虚拟机中导入即可,一个测试环境就OK了。另外,为了传文件的方便,还在CentOS上装了个vsftp,用以和Windows交换文件。经过这次折腾,发现原来Linux下面也这样好玩,打算以后多学习和折腾一下Linux,把家里那台N久没开过机的老台式机,也装个Ubuntu玩玩。


401 views 二月 13, 10 by Timothy
冬去春来,飞雪无痕,满目江山满目春;雪散雨淋,放歌高吟,满腔情愫咏新春;鞭炮炸鸣,灯红夜银,普天同乐闹新春!祝各位新老博友同学新春快乐! 送上自己拍的照片一张,献丑了~~

4,935 views 二月 12, 10 by Timothy
自从手机刷了WM6.5的最新版系统后,以前常用的短信聊天模式没了,变成了普通模式,感觉很是不习惯。于是请教了下Google老师,很快找到了答案。原来,WM6.5的短信聊天模式,是在注册表中设定的。二话不说,打开注册表编辑器,定位到注册表的如下路径:HKEY_CURRENT_USER\Software\Microsoft\Inbox\Settings ,将SMSavailable这个键的值,由默认的0(普通模式),改为1(聊天模式)即可。保存修改,重启手机,熟悉的聊天模式又回来了。
499 views 二月 04, 10 by Timothy
自从实现了Ajax的评论后,俺还是对评论部分有点不太满意,于是又开始拿评论开刀了。
1.首先想到的,是评论没有分页显示的功能,如果评论数量太多,会把页面拖得很长,在google搜索了一下,原来WordPress原生已经支持评论分页的功能了,所以一不做二不休,继续改动。
其实改动很简单,打开模板的comments.php,在类似wp_list_comments();列出评论的代码后面,加入下面的代码即可:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
| <?php
// 如果用户在后台选择要显示评论分页
if (get_option('page_comments'))
{
// 获取评论分页的 HTML
$comment_pages = paginate_comments_links('echo=0');
// 如果评论分页的 HTML 不为空, 显示导航式分页
if ($comment_pages)
{
?>
<div id="commentnavi">
<?php echo $comment_pages; ?></div>
<?php
}
}
?> |
2. 实现Enter+Ctrl快捷回复,这个比较简单,用jQuery实现,正好这两天也在学jQuery,就当练练手吧。为了增加代码可读性,方便以后维护,将这部分自定义的jQuery代码放在单独的js文件中:timothy.js
1
2
3
4
5
6
7
8
9
10
11
| $(document).ready(function(){
//Ctrl+Enter for fast submit
$("#comment").keydown(
function(event){
if(event.ctrlKey && event.keyCode == 13)
{
$("#submit").click();
}
});
}); |
代码比较简单,检测评论框的keydown时间,并判断是否同时按下了Ctrl键和Enter键,如果条件成立,则直接出发提交按钮的点击事件。将此部分js代码上传,并在header.php引入此脚本文件,效果立马就有了。这下同学们可以通过Ctrl+Enter快捷提交评论了。不过后来发现一个问题,这种用Ctrl+Enter快捷提交的评论,不会触发Ajax评论的效果,后来仔细找了找原因,发现Ajax评论的jQuery脚本中,并没有绑定提交按钮的点击事件,而是绑定的整个Form的submit事件,所以把刚才的脚本小小修改一下即可:
1
2
3
4
5
6
7
8
9
10
11
| $(document).ready(function(){
//Ctrl+Enter for fast submit
$("#comment").keydown(
function(event){
if(event.ctrlKey && event.keyCode == 13)
{
$("#commentform").submit();
}
});
}); |
这下就搞定了,支持Ctrl+Enter提交的Ajax评论,呵呵。
3.这个修改源自Zww同学的提议,在每条评论中增加”回复”按钮,原以为我的皮肤不支持嵌套评论的,尝试着在WordPress的设置项中,把嵌套评论给Enable了,这样的话,每条评论就自动有了个回复按钮。接下来,想实现点击回复的时候,自动把评论的同学的名字填入到评论框中,也就是类似 @XXX: 的形式。大体思路是通过jQuery来实现,绑定这些回复按钮的click事件,获取评论的同学的名称,设置到评论框中。其实Zww同学早就实现了这样的功能(前去围观),所以jQuery也可以偷师过来了:
1
2
3
4
5
| $(".reply").click(
function(){
var name = $(this).prevAll().find("cite:first").text();
$("#comment").text("@"+name+":").focus();
}); |
同样,放在$(document).ready里面即可。这次改动,俺意外的发现,原来我的皮肤支持嵌套评论……或许是加入了Ajax评论组件的原因,嘿嘿。
此文很菜,没啥技术含量, 算是学习jQuery的一点心得吧,前路茫茫,吾将继续折腾下去……
413 views 二月 01, 10 by Timothy
我用的这个皮肤有点旧,很多东西都不支持,但是又舍不得换掉,于是留下了折腾的余地,生命在于折腾嘛。看着Zww同学和久酷同学的Blog,都支持Ajax无页面刷新评论,心里也痒痒的。好像WordPress最新的版本,已经支持Ajax评论了,但是又不知道怎么搞。在Google网上一阵乱搜,找到个不错的解决办法,一个老外同学的一篇文章,照着一步一步改下来,还真实现了,除心里一阵狂喜之外,心里还小有成就感……其实网页也是我的弱项,接下来需要一边学jQuery,一边在现有的皮肤上动刀,再美化美化,呵呵。
最后,推荐下老外同学的添加Ajax评论的文章:
http://zeo.unic.net.my/wordpress-ajax-commenting-revisited/
=========================威武的分割线=====================
updated: 2010.02.03
上面的文章较老,后来发现添加Ajax后,有bug,于是按照Zww同学推荐的方法,找到另一篇指导文章,捣鼓了半天, 总算搞定了。脚本中由于需要访问一些元素,但是由于我的皮肤本身不支持嵌套评论,所以也把.js脚本小改了一下,屏蔽掉部分东西。这篇文章非常不错,强烈推荐下:
http://willin.heliohost.org/?p=1271
889 views 一月 31, 10 by Timothy
今天闲来没事,把Blog的边栏又改了一下,去掉了那个很长的Archives,从04年到现在的文章归档列表,太占空间了,灭掉!另外一个变化较大的地方,是以前的唠叨,一直用的腾讯的滔滔,没办法,国内很多微博都被停掉了。不过最近消息,腾讯也要把taotao和谐掉,当初用这个只是为了方便,腾讯滔滔其实算不上是个名副其实的微博,功能上限制太多,竟然还不能用手机浏览器的方式发表,只能算个怪胎。昨晚在Zww同学的博客看到文章,用php脚本的方式,把twitter的内容给“抓”过来。突然感觉茅塞顿开,以前一直想用js实现抓twitter的内容到自己blog,无奈js是客户端浏览器运行的,国内的用户访问不了twitter,又怎样能把twitter上发的推抓过来呢?如果用php,脚本是在服务端运行,那就不一样了,何况我的空间也本来就在墙外,呵呵,于是去wordpress的老家找了找,果然有twitter的插件,php的,Twitter Tools,这下可好了,毫不犹豫的把腾讯滔滔淘干掉,直接用上twitter才是正道!
Twitter Tools考虑的还挺周到,装上启用后,插件的后台管理页面,会给你提供一个发推的页面,其实我经常用的Firefox的TwitterBar插件,也挺不错,在此向各位同学推荐下。