使用Linode架设WordPress时的一些建议

我本来使用的是BlueHost的wordpress空间,但由于感觉体验不够好且速度略慢(其实不是真的慢,后面详说),就最终选定了Linode的最便宜的VPS。Linode的灵活性、自由度深深震撼了我,它甚至允许通过SSH以root用户登录服务器!作为一个程序员,用CLI的感觉还是远好于网页版的cPanel的。

Linode提供的各种文档非常丰富,我就不废话了。这里简单说一下其文档没有说明白的几个小问题:

1、打开Apache的ReWrite功能

如果需要安装插件WP Super Cache的话,需要先设置WordPress的链接样式不是默认的http://DomainName/?p=xxx的形式。而这个设置需要Apache支持ReWrite机制,通常虚拟主机都会默认配置好(网上说Godaddy似乎一直不支持ReWrite),但VPS一切都得自己从头配置。配置要点为:

第一步,打开Apache的Rewrite功能,在/etc/apache2/apach2.conf中对wordpress的宿主目录(通常是/var/www)做如下配置(Options和AllowOverride两项):

<Directory /var/www >
    Options Indexes FollowSymLinks ExecCGI Includes
    AllowOverride All
    Require all granted
</Directory>

第二步,将 rewrite.load 添加到 /etc/apache2/mods-enabled中,执行命令:

sudo ln -s /etc/apache2/mods-available/rewrite.load /etc/apache2/mods-enabled/

第三步,重启Apache2服务;

 2、禁用GoogleAPI的字体

最初使用BlueHost时,我发现WordPress的仪表盘和正常网页都很慢很慢,打开一个几十个字的测试文章需要十秒以上,简直无法忍受,所以我很无奈地和BlueHost的客服沟通后选择了退款。然后我迁移到了Linode这个公认的最好的VPS上,发现仍然很慢很慢!我反复测试,发现不受WordPress管理的文件(例如随便搞一个大html放到apache上非wordpress目录)加载确实非常非常快的,怎么回事儿呢?难道是WordPress有问题?

后来我google了一下后,总算真相大白了。原来是由于Google“作恶”导致的哦。WP中的很多主题、JS脚本、字体等都大量使用了GoogleAPI中的字体,而Google在天朝经常无法联接,所以才会导致页面加载慢。(在此向BlueHost说声对不起了,错怪你们了!顺便说一下,BlueHost是WordPress官方推荐的Hosting Provider之一,详见这里:https://wordpress.org/hosting

解决方案有三种,详见这里:http://www.wind88.net/news/news-125.html

推荐使用第二种方法,即安装Remove Open Sans font from WP core插件。

顺便说一下,我安装的其他插件还有:Akismet、All In One SEO Pack、Google XML Sitemaps、Jetpack、SyntaxHighlighter、WP-PageNavi、WP Super Cache(说实话,多数来自coolshell.cn陈浩的推荐),但愿对大家有帮助。

3、修改public_html目录的权限和所有者

关于权限,网上一般的说法是,设置目录权限为755,网页文件为644,其中wp-config.php文件权限设置750 。wordpress官方文档:http://codex.wordpress.org/Hardening_WordPress#File_permissions

关于public_html目录所属组,我建议将所有者和组都设置为www-data,因为apache2的用户是www-data,如果Apache2没有权限读写public_html目录中的文件的话,在线安装主题和插件就是基本必然失败的;

4、新增一个专门用于FTP的普通用户,并在防火墙中开启ftp相关端口

一般安装vsftpd即可,按照需求配置/etc/vsftpd.conf,我建议添加一个FTP默认目标目录的配置,日常使用会很方便,通常是 local_root=/var/www/你的域名/public_html

Linode文档中的防火墙配置最好都照做了,如果需要使用普通的FTP(敏感文档最好使用SFTP上传,端到端加密,更安全),则需要开启FTP的端口,在/etc/iptables.firewall.rules增加如下几行:

-A OUTPUT -p tcp --sport 21 -j ACCEPT
-A INPUT  -p tcp --dport 21 -j ACCEPT
-A OUTPUT -p tcp --sport 20 -j ACCEPT
-A INPUT  -p tcp --dport 20 -j ACCEPT
-A INPUT  -m state --state NEW,ESTABLISHED,RELATED -j ACCEPT

5、增强WordPress默认编辑器的能力

这是从网上找到的方法,在不增加插件的情况下,增强WordPress的编辑能力。方法是修改当前正在使用的主题的functions.php文件(位于/var/www/你的域名/public_html/wp-content/themes/当前主题/),增加如下一个函数和一个函数调用,可以直接追加到此文件的最后面即可。

function add_editor_buttons($buttons) {
    $buttons[] = 'fontselect';
    $buttons[] = 'fontsizeselect';
    $buttons[] = 'cleanup';
    $buttons[] = 'styleselect';
    $buttons[] = 'hr';
    $buttons[] = 'del';
    $buttons[] = 'sub';
    $buttons[] = 'sup';
    $buttons[] = 'copy';
    $buttons[] = 'paste';
    $buttons[] = 'cut';
    $buttons[] = 'undo';
    $buttons[] = 'image';
    $buttons[] = 'anchor';
    $buttons[] = 'backcolor';
    $buttons[] = 'wp_page';
    $buttons[] = 'charmap';
    return $buttons;
}
add_filter("mce_buttons_3", "add_editor_buttons");

修改后,再次编辑文档时,点击工具栏最右边的“显示/隐藏工具栏”按钮即可展开更多编辑工具,修改前能看到两行工具栏,修改后能看到三行工具栏;

好了,就这些。

开张了!

折腾了几天,我的WordPress个人博客终于开张了!

岁月无情流逝,转眼之间已经离开校园工作了七年了。然而,每每追忆逝去年华,总觉得有一点碌碌无为,常有茫然困顿之感。是时候做出一点改变了,是时候强迫自己进步了。

搞这个技术博客的目的,主要是为了督促自己学习和提高。如果还能顺带给读者带来一丝启发,善莫大焉。希望我能战胜自己的惰性,有所思,有所悟。