DeveWork

百度BAE 安装WordPress 图文教程(支持云存储和云消息)

百度BAE是个类似谷歌的app engine(GAE)的东西,国内类似的有新浪的SAE、盛大的SAE……但这些都比不上谷歌大哥的,他们一是没有技术,二是没有气度。百度的BAE现在开放注册,也有那么一点免费额。所以么,这篇文章就当是玩玩、体验一下这些 app engine,真拿来当做真正的站点来使用是没有一丝意义的。

先看看本人在百度BAE上架设的一个WordPress站点:http://wp.devework.com/ 或者 http://devework.duapp.com/ (都一样,因为绑定了域名)

下面的教程来自@HJin_me's Blog,感谢原作者。

本文会提供一份基于 3.4.2 英文版进行修改后的 WordPress。修改后的 WordPress 使用百度云存储来保存图片等,使用百度云消息发送邮件。最后还会简单介绍一下如何让 WordPress 在 BAE 上支持伪静态。

首先是奉上WordPress for BAE的下载地址。

https://github.com/hjin-me/BAEWordPress/tree/3.4-branch

上面有个 zip 下载,点一下就下下来了。

WordPress for BAE修改内容及解决的问题

安装过程优化:修改了 WordPress 的安装界面,针对 BAE 去掉了数据库的一些设置,取而代之的是百度云消息的消息队列名的设置。简化安装流程;

邮件服务的支持:替换了 wp_mail 函数,采用百度云消息来实现邮件的发送;

页面乱码问题:在代码中交换 select db 和 set charset 的顺序,来解决 WordPress 在 BAE 运行时的乱码问题;

附件上传功能:增加一个云存储的插件,启用该插件后,可以让上传的图片发送到百度云存储上。并同时可以在 WordPress 后台进行管理。

安装 WordPress for BAE 教程

准备工作

1、下载好这个 WordPress for BAE 后,访问http://developer.baidu.com/bae ,在 BAE 上面创建一个应用,再创建一个版本,比如版本0。

2、访问云数据库,创建一个数据库

3、访问消息服务,创建一个消息队列(单模式多模式都行,mail 服务和那个无关),记得把那个队列的邮件配额调多一些哦。

4、访问云存储,创建一个 bucket。

开始安装

1、选择版本0,点击[包上传更新],把刚才下载的源码都上传上去。

2、点击左侧生效,将这个版本生效发布。

3、点击查看,跳转到这个 WordPress 的安装界面。她会提示你,啊,没找到 wp-config.php 文件,开始创建一个吧。

4、下一步被,依次填入前面申请的数据库的名字,还有数据库表前缀(这个可以不动),以及刚才创建的消息队列名字(那个32位很长的乱七八糟的东西)。然后再点下一步。

5、这个时候,程序会告诉你,哎呀呀呀,我没有写权限,wp-config.php 的内容我已经准备好了,你自己上传上来吧。

6、然后,你可以使用在线编辑功能,或者直接svn 下载到本地,按照前一个页面的内容制作一个 wp-config.php 文件,再上传上去。

7、返回之前的安装页面,点击安装,就和以前的 WordPress 一模一样可以设置我的 WordPress 的相关信息了。填入网站名称,管理员的账号密码邮箱,确认就好了。是不是还成功收到了一封邮件 :)

8、登陆到 WordPress 控制面板,去插件页面,激活一下那个百度云存储插件。

9、这个时候,她会要你填入一个 bucket 的名字,那就把刚才创建的那个 bucket 填进来。(如果不是运行在 BAE 的 WordPress,你还需要额外填写一组 aksk,来保证运行)

10、大功告成,比那些还要自己改配置的教程简单多了吧。访问管理后台,记得加 /wp-admin/index.php,原因看后面关于伪静态的说明。

 

BAE WordPress 的伪静态

BAE 目前支持的伪静态有些弱,而且也不是 apache 的 .htaccess。所以,特殊的需求需要制作特殊的伪静态规则来满足。

打包中提供一个最基本的,最粗暴的规则。复杂的,自己看情况办吧。

handlers:
  - url : (.).css$
    script : $1.css
  - url : (.).js$
    script : $1.js
  - url : (.).jpg$
    script : $1.jpg
  - url : (.).gif$
    script : $1.gif
  - url : (.).png$
    script : $1.png
  - url : (.).jpeg$
    script : $1.jpeg
  - url : (.).php$
    script : $1.php
  - url : /wp-admin/
    script : /wp-admin/index.php
  - url : (.)
    script : /index.php