Posts tagged WordPress
WordPress 的Robots.txt设置
5为了避免搜索引擎对博客内容进行重复索引,可以用robots.txt限制搜索引擎机器人对某些页面的抓取。例如分类页面(category)、标签页面(tag)之类的是随最新文章变化的,对它们做索引就没有什么意义。
可以在web的根目录下放置一个如下内容的robot.txt文件(文件名全部为小写):
User-agent: * Disallow: /wp-admin Disallow: /tag Disallow: /category/ Disallow: /*?* User-agent: Mediapartners-Google Allow: /
其中的“Disallow:/*?*”那句是让搜索引擎不去索引所有带“?”的网址。如果WordPress没有采用永久固定链接而用默认的“ /?p=xx”的方式的话就要删掉这句。
请注意末尾的两句,其含义是允许Google Adsense的机器人去抓取所有页面,这样才可以在所有页面上都放adsense广告。否则在禁止了索引的页面上只会显示公益广告而无法获得 adsense收入。曾经有人对该问题的回复是设置:
User-agent: Mediapartners-Google* Allow: /
也就是后面加了个“*”,不知道是那人笔误还是怎样,这个“*”是不对的,但网络上以讹传讹,很多文章在说明robots.txt的设置时都说成 是:“User-agent: Mediapartners-Google*”。我们可以利用google的网站管理员工具中的“测试robots.txt”来进行测试,就会发现如果末 尾加了“*”的话结果是不正确的。上面的文字来自:蓝天博客
下面我们介绍什么是robot.txt文件及其语法:
robots.txt是搜索引擎中访问网站的时候要查看的第一个文件。Robots.txt文件告诉蜘蛛程序在服务器上什么文件是可以被查看的。
当一个搜索蜘蛛访问一个站点时,它会首先检查该站点根目录下是否存在robots.txt,如果存在,搜索机器人就会按照该文件中的内容来确定访问的范围;如果该文件不存在,所有的搜索蜘蛛将能够访问网站上所有没有被口令保护的页面。
robots.txt必须放置在一个站点的根目录下,而且文件名必须全部小写。
语法:最简单的 robots.txt 文件使用两条规则:
• User-Agent: 适用下列规则的漫游器
• Disallow: 要拦截的网页
robots.txt文件的格式
”robots.txt”文件包含一条或更多的记录,这些记录通过空行分开(以 CR,CR/NL, or NL作为结束符),每一条记录的格式如下所示:
“
在该文件中可以使用#进行注解,具体使用方法和UNIX中的惯例一样。该文件中的记录通常以一行或多行User-agent开始,后面加上若干Disallow和Allow行,详细情况如下:
User-agent:
该项的值用于描述搜索引擎robot的名字。在”robots.txt”文件中,如果有多条 User-agent记录说明有多个robot会受到”robots.txt”的限制,对该文件来说,至少要有一条User-agent记录。如果该项的值设为*,则对任何robot均有效,在”robots.txt”文件中,”User-agent:*”这样的记录只能有一条。如果在”robots.txt”文件中,加入”User-agent:SomeBot”和若干Disallow、Allow行,那么名为”SomeBot”只受到”User-agent:SomeBot”后面的Disallow和Allow行的限制。
Disallow:
该项的值用于描述不希望被访问的一组URL,这个值可以是一条完整的路径,也可以是路径的非空前缀,以Disallow项的值开头的URL不会被robot访问。例如”Disallow:/help”禁止robot访问/help.html、 /helpabc.html、/help/index.html,而”Disallow:/help/”则允许robot访问/help.html、 /helpabc.html,不能访问/help/index.html。”Disallow:”说明允许robot访问该网站的所有url,在” /robots.txt”文件中,至少要有一条Disallow记录。如果”/robots.txt”不存在或者为空文件,则对于所有的搜索引擎 robot,该网站都是开放的。
Allow:
该项的值用于描述希望被访问的一组URL,与Disallow项相似,这个值可以是一条完整的路径,也可以是路径的前缀,以Allow项的值开头的URL是允许robot访问的。例如”Allow:/hibaidu”允许robot访问 /hibaidu.htm、/hibaiducom.html、/hibaidu/com.html。一个网站的所有URL默认是Allow的,所以 Allow通常与Disallow搭配使用,实现允许访问一部分网页同时禁止访问其它所有URL的功能。
需要特别注意的是Disallow与Allow行的顺序是有意义的,robot会根据第一个匹配成功的Allow或Disallow行确定是否访问某个URL。
使用”*”和”$”:
Baiduspider支持使用通配符”*”和”$”来模糊匹配url。
”$” 匹配行结束符。
”*” 匹配0或多个任意字符。
WordPress的RSS输出方式
6一个RSS文件就是一段规范的XML数据,该文件一般以rss,xml或者rdf作为后缀。发布一个RSS文件(一般称为RSS Feed)后,这个RSS Feed中包含的信息就能直接被其他站点调用,而且由于这些数据都是标准的XML格式,所以也能在其他的终端和服务中使用,如PDA、手机、邮件列表等。
WordPress支持RDF/RSS 1.0、RSS0.92、RSS2.0、Atom等四种类型的最新内容Feed,以及RSS2.0的最新评论Feed。
一般来说Feed的地址如下:
http://wordpress.org/wp-rss.php http://wordpress.org/wp-rss2.php http://wordpress.org/wp-rdf.php http://wordpress.org/wp-atom.php
也可以用如下地址来访问:
http://wordpress.org/?feed=rss http://wordpress.org/?feed=rss2 http://wordpress.org/?feed=rdf http://wordpress.org/?feed=atom
如果用了永久链接功能,则可以用地址:
http://wordpress.org/feed/ http://wordpress.org/feed/rss/ http://wordpress.org/feed/rss2/ http://wordpress.org/feed/rdf/ http://wordpress.org/feed/atom/
如果把访问不到的页面重定向到了index.php的话,还可以用如下地址来访问:
http://wordpress.org/feed http://wordpress.org/rss http://wordpress.org/rss2 http://wordpress.org/rdf http://wordpress.org/atom
WordPress还允许对某个分类或者标签的文章提供Feed,地址如:
http://wordpress.org/archives/category/Uncategorized/feed
那么RSS、ATOM和RDF有什么不同呢?请看下面的说明。
RSS是“Rich Site Summary”或“Really Simple Syndication”的英文首字母缩写,中文称作“简易信息聚合”。RSS是一种基于XML标准,在互联网上被广泛采用的内容包装和投递协议。
RSS技术诞生于1999年的网景公司(Netscape)。当时网景公司定义了一套描述新闻频道的语言,RSS,用于将网站内容投递到 Netscape Navigator浏览器中。但由于公司内部商务决策、当时互联网内容匮乏等诸多原因,网景最终只发布了一个0.9版本的规范。微软当时也推出了类似的数 据规格,与RSS非常接近,试图利用新闻频道的架构把“推”(Push)技术变成一个应用主流,捆绑在IE浏览器中与Netscape Navigator抗衡。不过无奈的是,由于当时互联网访问速度慢、内容缺乏、用户不熟悉等原因,这个“推”技术自始至终没有得到市场的广泛支持。
但是随着时间的推移,RSS技术随着XML技术的发展和博客群体的快速增长,逐渐被人们广泛地接受,其应用范围也已经跳出单纯的博客圈,成为新闻传 媒、电子商务、企业知识管理等众多领域的不可缺少的新技术。2001年,RSS技术标准的发展工作被戴夫·温那(Dave Winer)的公司UserLand所接手,继续开发新的版本,以适应新的网络应用需要。通过戴夫·温那的努力,RSS升级到了0.91版,然后达到了 0.92版,并随后被众多的专业新闻站点所接受和支持。在广泛的应用过程中,众多的专业人士认识到需要组织起来,把RSS发展成为一个通用的规范,并进一 步标准化。一个联合小组根据W3C新一代的语义网技术RDF对RSS进行了重新定义,发布了RSS 1.0版,并把RSS定义为“RDF Site Summary”。这项工作并没有与戴夫·温那进行有效的沟通,而戴夫则坚持在自己设想的方向上进一步开发RSS的后续版本2.0,同时也并不承认RSS 1.0的有效性。RSS由此开始分化形成了RSS 0.9x/2.0和RSS 1.0两个阵营。
戴夫·温那在2002年9月独自把RSS升级到了2.0版本,并交由哈佛大学法学院Berkman互联网和社会学中心进行维护。而RSS 1.0版则仍然由W3C联合小组维护。
在GOOGLE收购了美国大型的博客服务网站blogger以后, 使这个网站一直采用的一种近似于RSS的技术衍生版Atom一夜之间成为RSS领域标准之争的新的有力竞争对手。WordPress所用的Atom版本为 1.0。
把WordPress放在子目录中而让你的博客显示在根目录
4很多人想让WordPress运行在他们站点的根目录(例如:http://example.com),但是他们不想让所有的的 WordPress文件把他们的根目录弄乱。WordPress允许你把WordPress文件放在一个子目录,同时让你的博客显示在站点的根目录中。
把 WordPress放到单独子目录下的程序如下:
1、新建一个用来存放WordPress核心文件的新文件夹(本文以/wordpress示范)。
2、进入options(中文版用户为“设置”)面板。
3、找到WordPress address (URL)(中文版用户为“WordPress 安装地址 (URL)”)这个选项,把后面的地址改成你存放WordPress文件的文件夹地址。比如:http://example.com/wordpress
4、找到Blog address (URL)(中文版用户为“博客地址 (URL)”)这个选项,把此地址改为你网站的根目录的URL。例如:http://example.com
5、点击Save Changes(中文版用户为“保存更改”)。
6、把WordPress的核心文件转移到你新建的文件夹中,也就是WordPress address (URL)这个目录。
7、把index.php和.htaccess文件从WordPress目录转移到根目录(即Blog address)中。
8、用文本编辑器打开并编辑根目录下“index.php”这个文件。
9、找到如下代码,修改并保存:找到
require(‘./wp-blog-header.php’);
把地址改为你WordPress目录下的文件:
require(‘./wordpress/wp-blog-header.php’);
10、登陆控制面板,新的控制面板地址为http://example.com/wordpress/wp-admin/
11、如果你设置了结构化链接地址(Permalinks),打开永久链接选项面板更新Permalinks结构。如果.htaccess有正确的权限设置的话WordPress会自动更新你的.htaccess文件。如果 WordPress不能写入你的.htaccess文件,就会显示新的rewrite规则,因此你就需要手动把rewrite规则复制 到.htaccess文件中(和index.php同目录)。
这篇文章翻译自WordPress官方文档,水平有限,见谅!
WordPress数据备份插件WP-DB-Backup
2WP-DB-Backup 插件简介
WP-DB-Backup 可以很方便地备份你的WordPress核心数据库,另外还有一些不太重要的数据表可以根据自己的需要有选择的进行备份。WP-DB-Backup 一个非常人性化的功能就是支持把备份数据定时发送到你的邮箱中或者直接存储到你的空间目录里,而且插件是以中文显示的,可以很好的照顾到那些英文不太好的朋友们。
WP-DB-Backup 使用方法
1.首先要下载 WP-DB-Backup 插件,下载地址 :下载链接1和下载链接2。
2.下载后安装插件并激活,这时候在“工具”里面多出了一个选项“备份”点击备份链接进入插件的设置界面。
3.整个插件功能界面异常简洁,就分了三个模块,分别为“数据表”、“备份选项”和“定时备份”。我记得以前安装的一个什么备份插件的,光是子菜单就有六七个之多,WP-DB-Backup 可以说是做到了短小精悍。
4.在“数据表”里面列举了所有 WordPress 的数据表,其中核心数据表会默认备份,剩下的数据表你可以有选择的进行勾选。
5.备份选项里面有“保存至服务器”,“下载至本地电脑”,“通过电子邮件发送备份至…”三个选项供选择,如果要发送到邮箱可以填写相应的邮件地址。
6.定时备份就是可以自定义计划任务了。你可以根据需求选择相应的时间和数据表,最后点击下面的 Schedule backup 之后就会将这些设置保存,以后就可以让它自动发送数据库文件到指定的位置了。
是不是非常简单呢?通过 WP-DB-Backup 插件备份的数据库可以很好的用来在数据出现异常时恢复数据,你也不必每天那么麻烦的登陆你的 phpMyAdmin 来导出数据文件了。
WordPress固定链接的htaccess文件设置
1WordPress设置固定链接时,如果提示需要设置.htaccess文件,可使用文本编辑器新建一个文本,内容如下:
# BEGIN WordPress
<IfModule mod_rewrite.c>
RewriteEngine On
RewriteBase /blog/
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule . /blog/index.php [L]
</IfModule>
# END WordPress
直接保存为.htaccess文件,上传到网站的WordPress目录中即可(与index.php同目录)。
重要提示:
上文代码中第三行的 /blog/和第六行的 /blog/index.php请根据你自己WordPress的实际安装目录进行修改,否则会出错。
WordPress相关文章插件Yet Another Related Posts Plugin
6Yet Another Related Posts Plugin是一个Wordpress相关文章插件,by mitcho (Michael 芳貴 Erlewine) for WordPress。插件下载地址:Yet Another Related Posts Plugin。
在上述地址下载激活插件后,我们打开插件选项。中文版的wordpress用户的插件页面是中文的,相信大家也可以按照自己的需要来选择。这里就给 大家讲解几个需要注意的地方:
1、关联设置中的匹配值,系统默认的是5,但是这个匹配值通常会导致相关文章很少。所以建议大家将匹配值设置为3,这样关联的文章会相对多一些。
2、显示设置中,系统默认的是自动插入关联文章。如何你觉得插件自动插入的位置不适合你,那么你可以讲这个勾取消掉。然后找到主题模板文件夹下面的 single.php文件,在适当的位置插入一下代码:
<?php related_posts(); ?>
3、对于插件模板不满意的朋友,可以勾上显示设置中的“使用自定义模板”。在这里我建议各位选择“yarpp-template- random.php”模板。然后将“yet-another-related-posts-plugin/yarpp-templates/”目录下的 “yarpp-template-random.php”文件考到主题模板下面。然后你就可以根据你自己的喜好,去修改“yarpp-template- random.php”文件从而获得令你满意的效果。
这里我推荐一下我用的代码:
<style>
li {list-style-type:none;}
</style>
<?php if ($related_query->have_posts()):?>
<ul>
<li>相关文章:</li>
<?php while ($related_query->have_posts()) : $related_query->the_post(); ?>
<li><a href=”<?php the_permalink() ?>” rel=”bookmark”><?php the_title(); ?></a><!– (<?php the_score(); ?>)–></li>
<?php endwhile; ?> </ul>
<?php else: ?>
<ul>
<li>随机文章:</li>
<?php $posts = get_posts(‘numberposts=10&orderby=rand’); foreach($posts as $post)
{ setup_postdata($post); echo ‘<li><a href=”‘ . get_permalink() . ‘”>’ . get_the_title() . ‘</a></li>’; } $post = $posts[0]; ?>
</ul> <?php endif; ?>
另外,需要在CSS文件中加入:
ul.msg{
width:100%;
margin:0 0 10px 0;
padding:0;
text-align:left;
list-style-position : outside;
border:1px solid silver;
}
li.tbname{
border-bottom:1px solid black;
}
然后就会获得跟我一样的效果了。
4、“RSS相关设置”跟“显示设置”一样就可以了。如果你需要个性化的设置,那么可以参照我上面所说的,自己手动修改即可。
最后、附上原作者的模板修改说明(不过是英文的,英文好的朋友可以去参考一下):http://mitcho.com/blog/projects/yarpp-3-templates/
本文转载自雨泽博客
lighttpd 环境下添加rewrite(伪静态)规则
2VPS Linux 服务器系统默认已经开启了伪静态功能,但是需要在kloxo中自行添加所用程序的伪静态规则。
在admin-domains-script-lighttpd rewrite rule中填写:
WordPress lighttpd的rewrite(伪静态)规则如下
url.rewrite = (
"^/(wp-.+).*/?" => "$0",
"^/(sitemap.xml)" => "$0",
"^/(xmlrpc.php)" => "$0",
"^/(.+)/?$" => "/index.php/$1"
)
Discuz lighttpd的rewrite(伪静态)规则如下
url.rewrite-once = (
"^/archiver/((fid|tid)-[w-]+.html)$" => "archiver/index.php?$1",
"^/forum-([0-9]+)-([0-9]+).html$" => "forumdisplay.php?fid=$1&page=$2",
"^/thread-([0-9]+)-([0-9]+)-([0-9]+).html$" => "viewthread.php?tid=$1&extra=page=$3&page=$2",
"^/space-(username|uid)-(.+).html$" => "space.php?$1=$2",
"^/tag-(.+).html$" => "tag.php?name=$1"
)
BurstNET VPS搭建OpenVPN全程实录
0前言:
由于BurstNET的VPS使用的OpenVZ的虚拟环境,所以不支持PPTP VPN,但是官方承诺可无缝安装OpenVPN。
虽然国内外提供FreeVPN的企业和个人有很多,但是还不如自己搭建一个来得安全,毕竟用别人的咱们不知道数据流向哪里,或者说不知道数据会经过哪里, 被多少人看到。
好了,闲话不多说了,现在正式开始。
一、准备工作:
1)确认购买的VPS是否开启了Tun/Tap设备的支持,以前看过的文章里都说要联系客服让客服开通,其 实不用这么麻烦,自己在后台就可以开启(不过默认是不开启的)。不信请看下图,这是标准的BurstNET配置的免费的控制面板。

图1:BurstNET的VPS开启Tun/Tap支持,点一下“Enable Tun/Tap”按钮就行了
2)升级系统软件,并下载所需软件。
#yum install gcc gcc-devel openssl openssl-devel iptables
#mkdir /opt/software
#cd /opt/software
#wget http://www.oberhumer.com/opensource/lzo/download/lzo-2.03.tar.gz
#wget http://openvpn.net/release/openvpn-2.0.9.tar.gz
好了,准备工作已经完成了。下面开始安装。
二、安装软件
#cd /opt/software
#tar -zxvf lzo-2.03.tar.gz
#cd lzo-2.0.3
#./configure
#make && make install
#cd ../
#tar -zxvf openvpn-2.0.9.tar.gz
#cd openvpn-2.0.9
#./configure –with-lzo-headers=/usr/local/include –with-lzo-lib=/usr/local/lib –with-ssl-headers=/usr/include/openssl –with-ssl-lib=/usr/lib
#make && make install
自此,软件已安装完成,下面开始最重要的步骤。
三、生成证书Key
1、初始化PKI
#cd /opt/software/openvpn-2.0.9/easy-rsa
#export D=`pwd`
#export KEY_CONFIG=$D/openssl.cnf
#export KEY_DIR=$D/keys
#export KEY_SIZE=1024
#export KEY_COUNTRY=CN
#export KEY_PROVINCE=BJ
#export KEY_CITY=BJ
#export KEY_ORG=”eryinj.com”
#export KEY_EMAIL=”[email protected]”
2、生成CA证书
#./clean-all
#./build-ca
本步骤除了以下两个地方需要改动之外,其他地方一路回车(红色部分为改动的值):
Organizational Unit Name (eg, section) []:eryin.com
Common Name (eg, your name or your server’s hostname) []:server
3、建立Server Key
#./build-key-server server
本步骤除了以下两个地方需要改动之外,其他地方一路回车(红色部分为改动的值):
Organizational Unit Name (eg, section) []:eryin.com
Common Name (eg, your name or your server’s hostname) []:server
A challenge password []:abcd1234
An optional company name []:eryin.com
Sign the certificate? [y/n]:y
1 out of 1 certificate requests certified, commit? [y/n]y
4、生成Client Key
#./build-key client1
Organizational Unit Name (eg, section) []:eryin.com
Common Name (eg, your name or your server’s hostname) []:client1
A challenge password []:abcd1234
An optional company name []:eryin.com
Sign the certificate? [y/n]:y
1 out of 1 certificate requests certified, commit? [y/n]y
依次类推生成其他客户端证书/key
#./build-key client2
#./build-key client3
5、生成 Diffie Hellman 参数
#./build-dh
四、创建服务器端和客户端配置文件
1、创建服务器端配置文件
#vi /usr/local/etc/server.conf
local VPS的IP地址
port 1194
proto udp
dev tun
ca /opt/software/openvpn-2.0.9/easy-rsa/keys/ca.crt
cert /opt/software/openvpn-2.0.9/easy-rsa/keys/server.crt
key /opt/software/openvpn-2.0.9/easy-rsa/keys/server.key
dh /opt/software/openvpn-2.0.9/easy-rsa/keys/dh1024.pem
server 10.8.0.0 255.255.255.0
client-to-client
keepalive 10 120
comp-lzo
persist-key
persist-tun
status /opt/software//openvpn-2.0.5/easy-rsa/keys/openvpn-status.log
verb 4
push “dhcp-option DNS 10.8.0.1″
push “dhcp-option DNS 4.2.2.1″
push “dhcp-option DNS 4.2.2.2″
2、创建客户端配置文件
#vi /usr/local/etc/client.ovpn
client
dev tun
proto udp
remote VPS的IP地址 1194
persist-key
persist-tun
ca ca.crt
cert client1.crt
key client1.key
ns-cert-type server
comp-lzo
verb 3
redirect-gateway def1
3、把生成的客户端的KEY和客户端配置文件下载到本地计算机
#cp /usr/local/etc/client.ovpn /opt/software/openvpn-2.0.9/easy-rsa/keys/
#tar keys.tar /opt/software/openvpn-2.0.9/easy-rsa/keys/
不管你用什么方法,下载到本地即可。
五、启动OpenVPN服务器并设置成开机自动启动
1、启动OpenVPN服务器
#/usr/local/sbin/openvpn –config /usr/local/etc/server.conf
2、将OpenVPN设置成开机自动启动
#vi /etc/rc.local
然后在最后面加入此行:
/usr/local/sbin/openvpn –config /usr/local/etc/server.conf > /dev/null 2>&1 &
六、OpenVPN 访问外网的设置
1、修改本机域名服务器
#vi /etc/resolv.conf
将文件内容修改为下面两行:
nameserver 4.2.2.1
nameserver 4.2.2.2
2、开启域名服务
如果你需要访问一些已经被伟大的GFW封掉了域名的网站,但你的 OpenVPN 服务器没有被封的话,那么你需要在你的主机上开启 name server, 并将 dns push 给 client。
#service named start
3、修改/etc/sysctl.conf
vi /etc/sysctl.conf
做以下修改:
net.ipv4.ip_forward = 1 (如果不是1的话则改成1)
4、设置iptables
#iptables -t nat -A POSTROUTING -s 10.8.0.0/16 -j SNAT –to VPS的IP地址
#/etc/init.d/iptables save
#/etc/init.d/iptables restart
七、OpenVPN GUI For Windows 客户端安装过程
1、下载和服务器端配套的OpenVPN GUI For Windows:
http://openvpn.se/files/install_packages/openvpn-2.0.9-gui-1.0.3-install.exe
2、安装:一直下一步,大家应该比我都会装吧。
3、将第四段第三步下载的Key文件解压后,放到OpenVPN GUI For Windows安装目录下的config目录,并至少要包含以下6个文件:
ca.crt
ca.key
client1.crt
client1.csr
client1.key
client.ovpn
4、双击client.ovpn即可启动OpenVPN GUI For Windows客户端,并连接至服务器。
5、如果双击client.ovpn 没有反应,则在任务栏点 OpenVPN GUI 的小图标右键,选择 edit config,将内容复制过去再保存,然后再点右键中的 connect即可。
5、如果需要第二台机器上使用OpenVPN,进行同样的配置,只需要将 client1.crt,client1.csr,client1.key 换成对应的 client2.xxx 即可,然后将 client.ovpn 中的对应key文件值改掉。
64MB VPS 上优化 Debian 5
0前几天看到 VPSLink 在打折就跑去注册了一个 64M VPS,(具体请看:VPS 主机试用:VPSLink),想看看 64MB 的 VPS 能不能跑一个小规模访问量的 WordPress 博客,这里的小规模是指每日500 PV 以下。然后分别试着跑了一下 Debian 和 CentOS,默认安装后跑Debian没有问题,但是运行 CentOS 时明显感到系统很慢。CentOS/RHEL 官方推荐的最小配置(不带图形界面)虽然是 64MB 内存,但是考虑到同时要跑 MySQL,PHP,Wordpress 等程序 64MB CentOS就有点吃力了。还有一个考虑就是运行一次 yum 需要比 apt-get 多得多的内存资源。所以按照我的 VPS 配置,64MB 内存,128MB 交换,2.5GB 的硬盘,就只能选 Debian 了。
Debian 是一个古老,严谨,自由而且流行的 Linux 发行版,有 n 多的软件包可以用,有很好的稳定性和安全性,是各大 Linux hosting 服务商的主流系统之一,几乎所有 Linux VPS 都支持 Debian 版本。安装 Debian 的系统最低内存要求是 64MB,但是官方文档也说了真正的最低内存配置要比 64MB 低一些,根据不同的硬件体系安装在只有 48MB 的 i386 上也是可能的。
查看 VPS 配置
1、查看以下 VPS 的硬件信息,做到心中有数
# free # cat /proc/cpuinfo
安装和升级系统
2、登录 VPS 安装 Debian 5
3、安装完毕后马上升级整个系统
# apt-get update && apt-get upgrade
寻找小资源的替代软件
4、用 pdksh 替代 bash
当你在使用 64MB VPS 的时候,为了多压榨一些可用的内存通常不得不去用一些轻量的程序替代那些笨重的程序,比如用 niginx/lighttpd 替代 apache,把省下来的内存留给那些必须的程序,像省钱一样不是吗?,把一些不必要的开支省下来应付那些必不可少的开支,用在刀刃上。
Bash 是现在大多数 Linux 发行版本的默认 shell,是大多数 Linux 命令行用户的默认界面。从本人十多年前接触 Linux 以来,换过很多发行版本,换过不同的邮件服务器,换过不同的 web/ftp 服务器。不过从来没有换过 shell,期间试过一些不同的 shell,如csh,korn shell,不过总是感觉不满意。随着 bash 功能的增强,多年下来 bash 也变得越来越臃肿,消耗越来越多的 CPU 资源,占据越来越多的内存。由于我的电脑也在与时俱进的更新换代,硬件越来越强大,所以 bash 用到的那一点点资源都不是问题,甚至都感觉不到。当有一天我需要在一个 64MB 的 VPS 上运行 WordPress的时候,才发现 bash 的”身材”一点也不苗条。一个只有 64MB 的机器如果有多人同时登录的话,bash 占据的内存就显得比较可观了(那可是只有 64MB 的 VPS)。所以需要用一个轻量级的 shell 来替换 bash。
在网上搜了一圈,最终落在 pdksh 上,pdksh 是从 korn shell 的分出来的一个版本,这里有更多关于 pdksh 的介绍。运行一个 bash 需要 4MB 左右的内存,而运行一个 pdksh 只要 1MB 左右。如果你的习惯和我一样一登录上来就启6个 ssh 的话,那么替换掉bash绝对必要,那可是约 18MB 左右的内存,对于只有 64MB 的主机来说是一个大买卖。让我来解释一下买卖 : ),对于一般用户来说现在 VPS 提供的硬盘够用了,带宽够了,CPU 也够了,唯独 VPS 配置里面最紧缺的就是内存。现在提供 64MB VPS 主机的 hosting服务商一般都把价格定在8美元每月到20美元每月之间,那 18MB 可就是省了2美元到6美元每个月。pdksh 看上去像是个很好的 bash 替代品,简单,自动 tab 补齐, history 记录,bourne shell 的语法(如果你不喜欢 csh/tcsh 的话),这已经足够了,正是我需要的。如果你对 shell 感兴趣的话,这里有更多关于不同 shell的比较。
# ps -C bash v PID TTY STAT TIME MAJFL TRS DRS RSS %MEM COMMAND 1254 ? Ss 0:00 26 663 2272 36 1.2 /bin/bash -- # apt-get install pdksh # chsh -s /bin/pdksh 重新用 ssh 登录 VPS # ps -C pdksh v PID TTY STAT TIME MAJFL TRS DRS RSS %MEM COMMAND 27700 pts/0 Rs 0:00 17 174 1765 344 0.5 -pdksh
值得注意的是,如果你用的是 VPSLink 的 VPS 的话会发现即使替换掉了 bash 系统还是会自动启动一个bash进程出来,原来 VPSLink 在 /etc/inittab 的最后加了一行,只要把最后一行的 /bin/bash 改成 /bin/sh 或者 /bin/pdksh,运行 init q 重新载入 init(1),然后 kill 掉那个 bash 进程就可以了。
shell 是个很个人的事情,一旦你习惯了一种 shell 就不大容易马上替换掉它,就像虽然我知道 nano 比 vi 更小巧更简单,需要的内存更少,但是我也不会用 nano 来替换 vi 的,我不能没有 vi。
5、用 Dropbear 替代 OpenSSH
OpenSSH 是个必不可少的服务程序,不过如果同时很多次登录 ssh 的也会吃掉很多内存,用一个轻量级的程序替代的话会省下更多的内存。Dropbear 是一个相对较小的 SSH 2 服务器,这里有更多关于 Dropbear介绍 的信息。如果不需要 OpenSSH 其他强大的功能的话 Dropbear 是一个不错的替代品,很多嵌入式产品,如:路由器,交换机等都把 Dropbear 作为默认的 SSH 服务。Dropbear 体积小还有一个原因是:如果你用非 root 用户登录,Dropbear 只需要创建1个进程,而 OpenSSH 则需要创建2个进程,更多的进程意味着更多的地址空间,更多的内存资源。虽然从功能上说 Dropbear 目前还不如 OpenSSH 强大,不过如果只想拿它来做远程登录 VPS,打打几个命令来管理一下 VPS 还是可以的。重要的是相对于 OpenSSH 的庞大体积来说,Dropbear 省了大约30%到50%的内存。
# touch /etc/ssh/sshd_not_to_be_run # apt-get install dropbear # vi /etc/default/dropbear # /etc/init.d/dropbear start
6、用 syslog-ng 替代 rsyslog
Rsyslog 是 Debian 5 的默认日志工具,是一个专注于安全和稳定的增强型多线程日志工具,有着丰富的功能,强大的可定制能力,可以把日志写入数据库(支持 MySQL,PostgresSQL,Oracle 等),E-mail 警报,可定制的日志输出等等,不过对于一个运行在 64MB VPS 的博客/网站来说,Rsyslog 未免显得过于强大,功能强大就意味着占用更多的 CPU/内存 资源。但是也不能没有一个日志工具,没有系统日志记录功能的系统是非常危险的,尤其是受到外部或者内部的威胁的时候,监控排错都需要一个好的日志系统的支 持。不用日志系统就像用 gcc 不用 gdb 一样,调试程序不用 debug 一样。
Syslog-ng 是一个不错的 Rsyslog 替代品,被 SUSE,Fedora,旧版本 Debian, Gentoo 等发行版当作默认日志工具。不过 apt-get install syslog-ng 后发现 syslog-ng需要 libevtlog0, libglib2.0-0,libglib2.0-data 软件包,并且需要约 5349KB 的额外硬盘空间,这对一个只有2.5GB硬盘的 VPS 来说”太”大了,5MB 空间可以写500篇左右的博客啊。
看了这篇 Limitations of syslogd on Unix 和这篇 Logging with syslog-ng 以后觉得 syslog-ng 的增强功能对于我这个小小 VPS 来说不必要,用简单的 syslogd 就可以满足我的要求,于是决定用 syslogd 来替代 Rsyslog。注意安装 syslogd 的软件包名字是 sysklogd。
# ps -C rsyslogd v PID TTY STAT TIME MAJFL TRS DRS RSS %MEM COMMAND 20441 ? Sl 0:00 0 27 32836 1220 1.8 /usr/sbin/rsyslogd -c3 # apt-get install sysklogd && dpkg --purge rsyslog # ps -C syslogd v PID TTY STAT TIME MAJFL TRS DRS RSS %MEM COMMAND 27769 ? Ss 0:00 11 25 1806 324 0.4 /sbin/syslogd
本文作者vpsee,原文链接:64MB VPS 上优化 Debian 5
WordPress的Title优化设置
0WordPress的默认Title设计针对搜索引擎不够友好,网上有很多Wordpress Title的 优化设计方法,本人推荐使用这种:
<title><?php if (is_home()||is_search()) { bloginfo(‘name’); } else { wp_title(”); print ” - “; bloginfo(‘name’); } ?></title>
首页以外的页面,Title都为“内容标题 – 博客名称”,分隔符推荐设置为横杠 “-”,也可以根据自己喜欢设置。