“wordpress 为什么这么慢”,您或许会有这样的疑问。我觉得强大的东西都是有代价的,但也是有方法可以解决的,接下来我们花点时间去研究一下 wordpress 的性能优化。这里说的性能优化,包含两个东西,scalability 还有 performance。scalability 是扩展性,意思就是能承受的压力,也就是 wordpress 能为多少人提供服务。performance 是性能,也就是 wordpress 页面的响应速度。
我们不需要太担心 wordpress 是否能承受大规模的访问,有两个很好的例子,可以让我们放心去使用 wordpress,一个是 wordpress.com 还有一个是 wordpress.org,根据 alexa 的统计,wordpress.com 还有 wordpress.org 在全世界的网站排名都在前一百名。当然 alexa 的统计数据仅供参考,并不是确切的排名。除非你觉得自己的网站规模与流量会大过这两个网站,不然,我们还是可以放心使用 wordpress 去创建能够承受大规模访问的网站。
优化性能,主要是两个方面,硬件还有软件,硬件方面,当然 cpu 越快,RAM 内存更大,你的网站也就会越快。软件方面,可以去优化提供服务的平台的配置,比如优化 Web 服务器,优化数据库,使用各种缓存功能等等,我们也可以搭配 CDN ,负载均衡这些服务。wordpress 本身也可以优化,比如在设计主题的时候,可以减少冗余的代码,可以减少请求的次数,可以把多个样式表或者脚本文件合并在一起,可以把小图像使用 Sprites 技术合并在一起,或者可以把小图像放在样式表里等等。
现在的云服务可以给我们提供一个可扩展的平台,cpu 不快,内存不够,数据盘满了都可以很容易去增加,并且很多云服务商都提供 CDN 或者负载均衡服务,这让我们很容易去部署它们,而且成本很低,一般都是按需收费。
使用 Nginx 服务器
我们可以先把 Web 服务器换成 Nginx,wordpress.com 还有 wordpress.org 也都在使用 Nginx 服务器,你可以使用 http://builtwith.com/ 提供的服务去查看一下,另外我在 wordpress.tv 上看到的一个视频里(我找不到了),也提到过 wordpress.com 使用的 Web 服务器就是 Nginx。之前我们介绍过怎么样去创建一个 Nginx 服务器。想在 Nginx 服务器上去运行 wordpress,还需要一点配置。比如你得考虑 wordpress 的伪静态(地址重写)。下面,假设您已经安装并配置好了基本的 Nginx 服务器,然后我们再去安装一下 wordpress。
在服务器上安装 wordpress
使用 ssh 登录到服务器以后,去给 wordpress 创建一个数据库,再去安装 wordpress。可以下载中文版 wordpress。先进入到你的网站目录,然后使用 wget 命令去下载最新的中文版的 wordpress:
wget http://cn.wordpress.org/wordpress-3.8.1-zh_CN.zip
完成以后使用 unzip 解压一下:
unzip wordpress-3.8.1-zh_CN.zip
unzip 后面加上要解压的 zip 格式的压缩包的名称。注意解压以后,wordpress 的所有的文件会放在一个叫 wordpress 的目录下面,我们需要把这个目录里面的东西全部都移动到网站的根目录下面,也就是跟你的域名绑定在一起的那个目录。假设你已经在这个目录里面了,移动文件或目录可以这样:
mv wordpress/* .
这行命令意思是,把当前目录里面的 wordpress 这个目录里面的所有的东西,全部都移动到当前目录的下面,一个点表示当前目录。这样,我们应该可以直接使用你跟这个目录绑定在一起的域名,访问到这个目录下面的内容了,因为还没有安装 wordpress,所以,打开以后,会显示 wordpress 的安装界面。
创建 wp-config.php
安装过程中,wordpress 需要让你输入连接到数据库的相关信息,比如数据库的用户名,密码,数据库的名称等等。这些信息需要保存在一个叫 wp-config.php 的文件里面,配置好数据库信息以后,点下一步,会要求你去创建这个 wp-config.php 文件,文件里面的内容会显示在安装的界面上,复制这些内容,然后使用 vim 命令,去在 wordpress 的根目录下创建一个 wp-config.php 的文件:
vim wp-config.php
按小 i 进入编辑模式,把复制的内容粘贴进去,然后按 esc 退出,再输入 :wp 保存并退出。回到 wordpress 的安装界面,点击 进行安装,再输入网站的标题,管理员用户名,密码,点击 安装 wordpress。现在,你已经在服务器上成功的安装了 wordpress。
修改目录权限
在 wordpress 里面上传文件到媒体库,安装或更新主题与插件,这些都需要为 wp-content 目录设置合适的权限。因为上传的文件,安装的插件或者主题都会放在这个目录的下面,如果你的 Web 服务器没有对 wp-content 的写入权限,在安装插件的时候,可能会提示你输入 FTP 的帐户信息。我们可以把 wp-content 这个目录以及它里面所包含的目录的拥有者设置成 Web 服务器的用户。
我用的是 Nginx + PHP-fpm ,这两个东西的用户我都设置成了 Nginx ,所以,我们只需要把 wp-content 这个目录的拥有者设置成 Nginx 就行了。修改目录或文件的用户与用户组可以使用 chown 命令:
chown -R Nginx:Nginx wp-content
上面这行命令加了一个 -R 参数,表示递归,意思是把 wp-content 这个目录,以及它所包含的子目录的拥有者与用户组都设置为 Nginx ,设置好以后,可以使用 ls 命令去查看一下:
ls -la
确定 wp-content 这个目录的拥有者还有用户组都已经修改成了 Nginx 。注意 Nginx 这个用户是我自己定义的,也就是通过修改 Nginx 还有 PHP-fpm 的配置文件来定义的。你的 Web 服务器还有 PHP-fpm 使用的用户很可能不是这个用户。
我在测试安装 wordpress 插件的时候,虽然为 wp-content 设置了合适的权限,但在安装时,还是提示我输入 FTP 的相关信息。解决的方法是,可以通过修改 wp-config.php 文件,编辑一下这个文件,然后添加下面这行代码:
define('FS_METHOD','direct');
这行代码的意思是,告诉 wordpress 我们要直接去安装或者更新插件,不使用 FTP,SSH 等方法。保存文件并退出。现在,你可以正常去上传图片,文件,可以安装或更新插件和主题了。
Nginx 下 wordpress 的伪静态
多站点,安装了缓存插件的 wordpress 这些都需要特殊的 Nginx 配置,才能让 wordpress 使用伪静态,也就是地址重写,设置固定链接的功能。下面我们先来看一下没有使用这些功能的 wordpress 的最小化的配置:
location / {
try_files $uri $uri/ /index.PHP?$args;
}
http://ninghao.net