优化WordPress速度:配合WP Super Cache插件,使用tmpfs文件系统提高网站访问速度

系统环境:debian7

1、借助WP Super Cache插件

WP Super Cache

WP Super Cache 通过以下三种方式缓存(按照缓存效率排序):

Mod_Rewrite:最快的方式是通过 Apache mod_rewrite 模块(或者其他 Web 服务器中类似的模块)向用户提供静态 HTML 文件,这样就完全绕过了 PHP 解析器,速度飞快,可以轻松应对非常大的访问,并且服务器运作非常轻盈。不过这个方式需要 Apache 已经安装了 mod_rewrite 模块(或者其他 Web 服务器中类似的模块)以便博客能够支持固定链接,并且还需要修改你的 .htaccess 文件,匿名访问的用户通过这种方式访问。
PHP:超级缓存静态文件除了 HTML 方式之外,现在还可以通过 PHP 方式来提高服务,速度几乎接近 mod_rewrite 方法,但是 PHP 方法更好配置,并且无需修改 .htaccess 文件。PHP 方法还是需要设置固定链接,还可以让你保持页面部分动态,但是面对大流量访问时候,就没有 mod_rewrite 方法出色了。
传统缓存:这个主要面对已知用户,那些已登录的,留过言的,这个方法更灵活,但也是最慢的,因为每次查看页面,信息是不同的,所以最好对这些用户不要缓存整个页面。

WP Super Cache 基本使用:

WP Super Cache 安装非常简单,只需要上传到插件目录,然后激活之后就可以到 后台 > 设置 > WP Super Cache 进行详细配置。

2、使用tmpfs文件系统提高网站访问速度

tmpfs是Linux/Unix系统上的一种基于内存的文件系统。tmpfs可以使用您的内存或swap分区来存储文件。由此可见,tmpfs主要存储暂存的文件。它有如下2个优势
  1)动态文件系统的大小。
  2)tmpfs 的另一个主要的好处是它闪电般的速度。因为典型的 tmpfs 文件系统会完全驻留在内存 RAM 中,读写几乎可以是瞬间的。
同时它也有一个缺点 tmpfs 数据在重新启动之后不会保留,因为虚拟内存本质上就是易失的。所以有必要做一些脚本做诸如加载,绑定的操作。tmpfs不具备持久性,重启后数据不保留,请务必注意!!!

root@clin003.com:~# mkdir /dev/shm/tmp
root@clin003.com:~# chmod 1777 /dev/shm/tmp //注意权限
root@clin003.com:~# mount –bind /dev/shm/tmp /www/clin003.com/wp-content/cache
root@clin003.com:~# ls -ld /tmp
drwxrwxrwt 2 root root 40 May 29 21:46 /www/clin003.com/wp-content/cache
看到上面这行就表示已经挂载成功了

参考文章:http://bbs.aliyun.com/read.php?tid=139502

PS:如果你的硬盘读写速度可以接受,不想把缓存文件放内存了,可以使用 umount /www/clin003.com/wp-content/cache 断开绑定即可。

通过以下命令可以查看硬盘读写速度

服务器硬盘读写速度:

root@clin003.com:~# dd if=/dev/zero of=testfile bs=1M count=500
500+0 records in
500+0 records out
524288000 bytes (524 MB) copied, 21.8899 s, 24.0 MB/s
root@clin003.com:~# cd /dev/shm
root@clin003.com:/dev/shm# dd if=/dev/zero of=testfile bs=1M count=500
dd: writing `bigfile’: No space left on device
248+0 records in
247+0 records out
259317760 bytes (259 MB) copied, 0.269954 s, 961 MB/s

推荐WordPress插件:wp-gfc FriendConnect plugin for WordPress

今天给一个新的WP站添加“Google Friend Connect”,由于GF*的作用,基本是点一下断一会,而且找不到下载 canvas.html 和 rpc_relay.html 的链接(我把这个blog里的这俩文件传上去,生成的代码貌似还不能用)!

看到“Plug-ins & APIs”下有WP的评论插件:wp-gfc
于是下载,解压,上传。。有几个文件怎么也传不上去(可能是空间商屏蔽了这几个名字,偶没有改名上传然后改回来。。)!

只好借助Putty通过SSH连接上去:

[clin003@hostxx plugins]$ cd ~/wp-content/plugins

[clin003@hostxx plugins]$ wget
http://wp-gfc.googlecode.com/files/googlefriendconnect1.1.5.zip

[clin003@hostxx plugins]$ unzip googlefriendconnect1.1.5.zip

然后进入WP控制面板,激活“googlefriendconnect”插件,setting,填入网站在google friend connect中的id(这个ID可以在“google friend connect”中设置网站的时候从网址链接中获取),勾选下功能即可使用了(目前能用的功能有:代替WP评论、顶部或底部状态栏、推荐按钮)。

使用google friend connect登录后,会自动在网站中创建一串数字为用户名的用户!可以(在WP控制面板)自行设置用户信息(不过这个跟是否使用google friend connect的评论功能有关,同一个登录用户ID是唯一的一串数字,无论是否曾经加入与退出)。

设置好默认用户权限o(默认为订阅用户级别)。

PS: 到后台Widgets里可以看到更多的 FriendConnect 插件呢!

WP e-Commerce让你轻松搭建个性化网店

WP e-Commerce 可以独立页面显示也可以嵌入到侧边栏中,适合在线销售你的服务和产品。此外它还内置多种包括Paypal等在内的支付网关!使用这个插件,WP就是一个B2C的电子商务平台,可以媲美 ECShop, ShopEX 这样的优秀网店程序。

很适合做:
* 乐队及唱片销售
* 服装销售
* 工艺及艺术品销售
* 书籍,DVD和MP3销售

插件地址:http://wordpress.org/extend/plugins/compras-en-linea/

可能描述的不够完整,可以到上边Wp的插件库地址查看详细信息。

支持的支付方式:
Chronopay

Google Checkout

Manual Payment / Test Gateway

Paypal

Paypal – Express Checkout

PS:不能直接支持支付宝,财付通,对国内的用户来说可能是个遗憾,不过对做国外客户的朋友可能是个不错的选择。

发现All In One Seo支持啦rel=”canonical”标签

All In One Seo是WordPress的一个插件,能够很傻瓜的帮助你做WP博客的搜索引擎优化,今天升级啦这个插件到“All In One Seo 1.4.9” ,在查看一个页面源码的时候,忽然看到一个:
<link rel=“canonical” href=“http://clin003.com/servers/h3c-ar18-21a-command-1515/” />
开始不敢相信,于是翻看啦留言分页的源码,发现也有,嘿嘿,真是不错啦,特此记录下。

关于 rel=”canonical”(About rel=”canonical”):
这个标签只对指向同域名下的地址有效,对于不同域名的转向,还是要通过301的方式。
href之后的””之中的地址就是你指定的首选版本地址,绝对地址最好,如果使用相对地址,则最好配合声明域名后一起使用。这样处理后当爬虫抓取时,就能根据这个地址明了是否已经抓取过了。这样避免了在搜索引擎结果中有多条记录而内容相同,不仅帮助改进了搜索引擎结果的有效性,也对于自己页面的评级更有好处。

参考文档:
Specify your canonical
What is a canonical page? Why specify a canonical page?

另外一个想法关于博客留言的:
可以把博客留言托管到Google Friend connect,上次去获取代码时已经发现可以很容易的为不同的单独页面增加留言功能啦,完全具备托管博客留言的效果。
以后可能吧博客留言托管到Google!这样可以防止因为一些敏感留言被啥啥封啦,囧(不过现在的留言都是经过垃圾留言检测然后经过“偶审核”的)

备份WordPress数据库

要时常备份数据库,以防当下和谐的互联网环境,囧
下边就说几种备份数据库的办法,针对WordPress来说的。

方法1:直接使用MySQL命令工具mysqldump

user@linux:~/files/blog> mysqldump –add-drop-table -h mysqlhostserver

-u mysqlusername -p databasename (tablename tablename tablename) | bzip2

-c > blog.bak.sql.bz2

Enter password: (enter your mysql password)

user@linux~/files/blog>

以上办法对有服务器权限的朋友很好使,对于虚拟机用户来说可以使用下边的办法备份数据库。

方法2:借助phpMyAdmin备份

在WordPress官方有个很详细的介绍文档 Backing Up Your Database:http://codex.wordpress.org/Backing_Up_Your_Database

我这里就不重复了,囧

方法3:使用WP插件备份数据库

WP-DB-Backup可以很方便备份Wp数据库,并且可以选择备份到服务器,备份到本地或把备份的文件发送到指定的邮箱中,可以建立备份任务( Never Once Hourly Twice Daily Once Daily Once Weekly)然后发送到指定邮箱中,很酷的功能呢!

WP-DBManager是个很强大的Wp数据库管理插件,可以有选择的备份数据库表,管理备份文件,从备份文件中恢复数据库,优化数据库表,修复数据库表,清空数据库表中的数据,执行SQL语句,设置Mysql命令路径,设置自动执行的任务(同样可以设定时间段备份数据库然后发送到指定邮箱),还可以设定间隔时间优化数据库表,囧 对比WP-DB-Backup,这个WP-DBManager功能要强大的多,不逊色于PhpMyadmin对单个数据库操作的功能 :P。

在一个就是WP-phpMyAdmin插件啦,这个就不介绍啦,只不过这个是专门为Wp定制的插件形式并不能管理其他数据库中的数据表,由于包含PhpMyAdmin,所以个头比较大,还是推荐使用WP-DB-Backup或者WP-DBManager好。

上边都是数据库备份,恢复数据库的办法可以参考官方的这篇文档 Restoring Your Database From Backup:http://codex.wordpress.org/Restoring_Your_Database_From_Backup。

学习 WordPress安全白皮书

酋长的Blog中看到介绍 WordPress安全白皮书

关于WordPress的安全性,一直有组织在研究,比如BlogSecurity,他们发布的《WordPress安全白皮书》更是关于WordPress安全的一次总结,让人高兴的,国内热心的朋友把白皮书翻译成了中文,所以各位朋友可以很轻松的阅读。白皮书写的很详细,WordPress介绍,安装,使用WordPress的细节等等,详细而系统的讲解了如何做一个安全的WordPress博客。中文版《WordPress安全白皮书

这里不是把内容重复一遍,而是结合实际(比如偶)来记录下学习笔记 🙂 。

安装WordPress

对于虚拟机的用户来说 “安装WordPress” 中自己先使用root创建数据库,然后创建限制用户来给Wordpress的步骤就可以免了,因为你大多情况下就是使用的限制用户!

编辑wp-config.php文件,添加AUTH_KEY ,SECURE_AUTH_KEY和LOGGED_IN_KEY 的值。内容可以到http://api.wordpress.org/secret-key/1.1/ 来生成!

手动修改数据库表前缀,这个建议在安装的时候就搞好,要不你已经安装过想改的话就用里边介绍的直接用phpmyadmin来操作数据库,或者用他给的插件WP Prefix Table Changer 来搞。Alpha 版本的插件,难免存在 bugs。酌情使用 😮

创建非管理员权限用户日常使用,修改默认管理员名字(默认为admin)。其实不用像文档里说的那样复杂的操作数据库改名,你只要在创建个用户设为管理员,然后直接进去把admin删掉就可以啦,要还想弄个假体的,就在创建个普通的admin用户或者直接修改权限为普通的用户来。

im-web-gefunden 的 Role manager 插件功能的确很了得,哇哈哈,见识ing。

强化安装WordPress

主要是对管理区域进行限制操作。

限制 wp­content 和 wp­includes

限制目录权限,拒绝所有的东西,除了对图片,CSS 和一些 JavaScript文件的请求。

考虑到性能问题,不建议使用.htaccess来做限制,使用.htaccess文件, 则Apache需要在每个目录中查找.htaccess文件,因此,无论是否真正用到,允许使用.htaccess文件都会导致性能的下降。另外,每次请求一个页面时,都需要读取.htaccess文件。

把以下的代码放到你的 .HTACCESS 文件中,这些 .HTACCESS 文件应该放在 WP‐CONTENT 和
WP‐ INCLUDES 目录下:
Order Allow,Deny
Deny from all
<Files ~ “.(css|jpe?g|png|gif|js)$”>
Allow from all
</Files>
这个办法很了得,学习啦 ,嘿嘿,

限制 wp­admin

限制所有但除了自己的 IP
如果你的是一个单一用户博客,你可能需要限制通过 IP 连接 WP‐ADMIN 的权限。请确保你所使用
的是静态 IP(注意ing)。WP-ADMIN 中的 .HTACCESS 文件如下:
Order deny,allow
Allow from a.b.c.d #That’s your static IP
Please add some example for allowed ip ranges
Deny from all
保存文件,然后试图通过代理访问 wp-admin 目录,应该会被限制连接。

经测试这个方法很准很有效 呵呵,以前还真不知道这也能限制ip哈哈。不知道有没有办法绕过去呢。

需要密码 ­ .htpasswd

当然,推荐的选项是设置密码保护,这意味着你仍然可以在任何地方连接到 wp-admin 目录,
但我们增加了一道防线,以防越权操作。

.htaccess 文件

WP ‐ ADMIN 中的 .HTACCESS 文件如下:
#this file should be outside your webroot.
AuthUserFile /srv/www/user1/.htpasswd
AuthType Basic
AuthName “Blog”
require user youruser #making this username difficult to guess can help mitigate password
brute force attacks.

.htpasswd 文件

正如已经说明的,该文件 可以放到网站目录之外的地方,上层目录是个很好的选择。
$ htpasswd ‐cm .htpasswd blog
New password:
Re‐type new password:
Adding password for user blog
.htpasswd 文件已经在当前目录中创建了,请确保本文件的地址符合 wp‐admin/.htaccess 中
AuthUserFile 所设置的地址。

当你试图登录博客时会要求你输入用户名和密码以获得连
接权限。如果没有出现的话,查看一下加密密码文件,然后查看所提供的地址是否正确。

这个办法我暂时不测试啦,

SPAM(垃圾留言),有很多的插件可供选择,我们建议你使用以下的一种或两种:
Akismit – Automattic 的防垃圾留言插件(需要提供 API key)
SpamBam – BlogSecurity 的防垃圾留言插件

Blog 加密

这个一般人用不起呢,呵呵

需要注意的是:一旦安装了 SSL(HTTPS),我们还需要安装一个插件,使得我们登录时自动转向对应的 HTTPS 协议地址。

去除 WordPress 版本信息

可以不使用他介绍的插件,而仅仅在模板的functions.php中添加hook调用就可以,代码如下:

<?php remove_action(‘wp_head’, ‘wp_generator’); ?>

安全扫描

在blogsecurity上边提供啦个WordPress 在线安全扫描( WordPress Scanner)如果有兴趣可以去看看,呵呵。

总的来说收获不少,呵呵,希望大家能亲眼看看那文档,虽然有些东西对自己不适用,不过那个整体的安全思考还是可以要领会一下的。