在Windows Azure上布署WordPress

WordPress现在是越来越流行了,Google App Engine和Windows Azure都“被迫”或多或少地支持了PHP和Wordpress。

Windows Azure上布署Wordpress有两种方式,一种是通过“网站”(Web Sites),另一种是通过虚拟机(Virtual Machines)。虚拟机就和普通的机器一样,安装步骤这里就不多说了,主要来看看“网站”的方式:

1. 在新建一个网站的时候,选择From Gallery,然后选择Wordpress:

2. 然后指定网站的名字和地区:

3. 然后是数据库的名字,自动生成的,改不改都没问题。

稍等一会,新的网站就建立好了,然后通过第一步指定的地址就可以访问了。当然第一次访问需要进行一些常规的Wordpress设置,这里不多介绍了。

相比起AWS来说,Windows Azure的优势是:

  1. 建站速度快,不用自己配置httpd(或者IIS)和MySQL。
  2. Windows Azure对于小型站点提供了免费的服务,升级版的服务收费也不算贵($10/月)。只需要一个Live ID就可以使用。

不足之处是:

  1. 免费的主机似乎性能不高,打开速度有点慢。
  2. MySQL服务是由第三方提供,默认提供了20MB空间,貌似提升空间需要多付钱,还没研究过。

在WordPress中同时支持HTTP和HTTPS

2014.06.25更新: 目前本博客已同时支持HTTPHTTPS

以下是原文:
之前有提到过给Wordpress启用HTTPS。后来碰到过一些问题,比如Amazon的S3不支持HTTPS的CName,以及不知道怎样让Wordpress同时支持HTTP和HTTPS,于是就暂时停掉了HTTPS。

前两天又心血来潮研究了一下,发现同时支持HTTP和HTTPS是可行的。在wp-config.php里改一点点就可以,如下:

这样一来,当用户用HTTP访问的时候,Wordpress仍然会用http://leonax.net来响应;而当用户用HTTPS来访问的时候,Wordpress就会自动切换成https://leonax.net/. 站点的内部链接都会自动切换。

WordPress导入文章时碰到'DOMDocument'未找到错误

今天在玩Wordpress的导入功能的时候,发现上传完文件就卡住了,显示了一个空白页。

百思不得其解之后,去看了Apache的log,发现了下面这段话:

mod_fcgid: stderr: PHP Fatal error:  Class 'DOMDocument' not found in /var/www/html/wp-content/plugins/wordpress-importer/parsers.php on line 61

然后意识到前一阵子似乎觉得php-xml这个组件没什么用就给删了,于是现在还要装回来……

sudo yum install php-xml

然后就可以正常导入文章了,真汗……

对 WordPress 启用 Deflate 压缩

对网页内容进行压缩,可以减少网络传输的成本,加快网站的访问速度。常见的用于网页压缩的算法是 gzipdeflate,实际上 gzip 是 deflate 的一种实现。在客户端,浏览器发送 HTTP 报头 Accept-Encoding 来告诉服务器,自己所能接受的压缩格式(也可以要求不压缩),然后服务器根据请求来压缩网页,并把压缩格式通过报头 Content-Encoding 返回给客户端。

不知道为什么,Wordpress 在安装的时候不会自己搞定压缩这件事,估计是考虑到部分 Web 服务器不支持压缩。还好 GoDaddy 的共享主机(用的是 Apache )支持压缩,并可以通过修改.htaccess 文件来启用它。

具体的方法是,在.htaccess 文件(一般在 FTP 的根目录上)中,加入以下代码:

这段代码是说,如果存在mod_deflate,且输出的内容格式为 js / css / php / xml / html / dtd 的话,则启用 deflate 压缩。

配置完成之后,可以通过站长之家提供 gzip 压缩检测工具来测试。以下是 Leonax.net 的测试结果:

网址 http://leonax.net 检测结果如下:
是否压缩
压缩类型 gzip
原始文件大小 75110 字节
压缩后文件大小 21173 字节
压缩率(估计值) 71.81%

2011/12/16更新:

.htaccess 是 Apache 的一个功能,允许用户在某个文件夹下,复写某些全局的设置。比如上述 deflate 设置,也可以写在 /etc/httpd/conf/httpd.conf 文件中,这样 Apache 所管理的所有主机的输出都会被压缩。当然,前提是你有更改 httpd.conf 的权限。

在WordPress文章中嵌入Google Map

Google map官方提供了一个地图的嵌入模板,用iframe的,如下:

但是Wordpress的编辑器在“可视化”和"HTML"切换的时候,会把iframe过滤掉,很让人恼火。没办法,只好自己写脚本。下面脚本可用于Shortcode Exec PHP插件:

假设模板的名称为ShowGoogleMap,只要在文章中这样调用即可:

[[ShowGoogleMap brcurrent="3,0x314f03387538d0a5:0xb84913144116d0f6,0%3B5,0,0" msid="207261559620077253091.0004a3c3df84e74e9b234" ll="3.146172,101.702414" spn="0.034281,0.051413" z="14"]]

WP插件:Enigma 1.0

这是一个很简单的插件,它的目的是把帖子中的部分内容加密,然后在客户端用javascript解密,以避免一些自动工具的抓取。通常的用途是保护email地址,当然还有其它的用途,咳,大家都懂的。

1.0版本的语法:[enigma text="自动工具看到的内容。" ] 普通访客看到的内容。[/enigma]

其中text属性可以省略。

加密和解密都是自动的,不需要人工干预。

官方下载链接:http://wordpress.org/plugins/enigma/