百度BAE环境下原版WordPress搭建过程

前几天发了一篇在新浪 SAE 下搭建个人图片管理系统的文章,SAE 是国内首个公有 App Engine。而作为国内搜索引擎的老大,百度自然不能落后,也推出了自己的网络应用开发和部署平台 BAE。百度相比新浪的优势,就是拥有相对更诱人的空间容量--基于 BCS 的百度云储存 (bucket)。

目前面向个人开发者的云储存完全免费,我在上次申请的时候是免费 20G,外加 1G 的 MySQL 数据库,在官方页面上目前云储存的计费标准是流入流量完全免费;流出流量每日每应用 500M 免费,超出部分 0.8 元/GB;容量目前应该已经改为初始 5G 免费,超出后每日 0.02 元/GB。

不管 BAE 今后方向如何,是否收费,从目前来讲 BAE 似乎拥有比 SAE 更厚道的条件,在 SAE 中安装 WordPress 会受到种种限制,而 BAE 中完全可以安装原版的程序(这里的原版是指不经过移植的直接从 WP 官网下载的 WP 程序,并非指英文版),插件或者主题的下载都与收费主机空间无异。而且 SAE 中除非你是经过认证的初级以上的开发者,否则收费是迟早的事;而 BAE 中只要储存空间不超过免费赠送的范围可以说是永久免费。就算某一天 BAE 改变了收费政策,再将整个 WordPress 移除也不迟.

目前网上有不少 BAE 上搭建 WordPress 的文章,但是都是基于移植过的 WordPress 程序,在 BAE 上受到许多限制,安装原版的 WP 最大的好处就是可以摆脱这些限制.

下面就来说说如何利用好这个免费的资源(最好有安装 WordPress 和部署使用 SVN 的经验,并且声明一点,由于 BAE 平台在不断的升级和调整,以下过程并不长时间适用,自己灵活调整~)。想看相对简单的针对 BAE 修改的 WP 安装教程也可以看老马的博客

1. 首先得有一个 BAE 开发者账号。只要有百度账号就行,注册一下就成了开发者账号。如果没有经过手机绑定则会提示必须绑定才能使用相应的功能。

2. 登陆后点击创建应用,照提示填写相应的资料。保存并下一步。

3. 填写应用名称,不能与已有应用重复。接入方式使用默认。

4. 创建应用完成后会显示该应用相应的信息,其中 API Key 和 Secret Key 作为该应用的唯一凭证,后续可能会用到。

5. 接上一步,点击左边菜单栏中的“云环境 (BAE)”跳转到版本管理页面,在左边菜单栏中点击“MySQL(云数据库)”,创建一个新的数据库。免费用户只能选择默认的 256M 内存 + 1G 储存,不过 1G 的数据库足够用了。

6. 数据创建完毕后点击设置,看一下字符集是不是采用 utf8_general_ci,如果不是的话点击修改把它改过来,否则将不支持中文。默认的话应该就是 utf8_general_ci 了。这里也是 PhpMyAdmin 的入口,今后对数据库的管理都从这个页面进入。

7. 回到 BAE 首页(developer.baidu.com/bae),点击左边菜单栏中的“云环境 (BAE)”(注意这里的“云环境 (BAE)”和第 5 步中的不是同一个界面)进入托管设置,填写该 WordPress 的二级域名和应用名称,其余选项使用默认。

8. 完成托管设置后在左边菜单栏中点击“云储存”,创建一个 bucket 作为 WordPress 的储存空间,bucket名称建议和应用名称相同。我当时搭建时提供 20G 空间自由分配到各个 bucket 里,现在貌似每个应用只有 5G 了并且还不允许用户自己分配。看来百度果然扛不住每个用户 20G 带来的负荷了... 这一步忘记截图了。

9. 再在左边菜单栏的“消息服务”中创建一个消息队列,作为各种消息传输的解决方案。名称跟应用名称保持一致就好。

10. 这个时候准备工作都搞定了,在上传 WordPress 程序之前还要做一点小改动来满足 BAE 平台的要求。解压下载好的 WordPress 安装程序的 zip 压缩包到任意位置,进入 /wordpress/将wp-config-sample.php 重命名为 wp-config.php,在其中加入 BAE 数据库的一些信息使之可以正常工作。可以按以下说明在 wp-config.php 中添加代码,也可以直接下载提供的 wp-config.php 文件,无论哪种办法记得修改 wp-config.php 中的数据库名称 ($dbname) 为你的数据库名称,就是第6步图片中的。

关于数据库的各个信息可以费点劲在 PhpMyAdmin 中获取,但是直接用代码获取可以省点事。将原始 wp-config.php 的第 19 到 28 行修改为以下内容:
define('DB_NAME', $dbname);
/** MySQL database username */
define('DB_USER', $user);
/** MySQL database password */
define('DB_PASSWORD', $pass);
/** MySQL hostname */
define('DB_HOST', $host);
define('BCS_BUCKET', $bcs_bukect);

再在原始 wp-config.php 文件的 19 行之前添加如下代码:
$dbname = "***";
$table_prefix = '***';
$bcs_bukect = '***';
?>
<?php
$ip = getenv('HTTP_BAE_ENV_ADDR_SQL_IP');
$port = getenv('HTTP_BAE_ENV_ADDR_SQL_PORT');
$host = $ip.":".$port;
$user = getenv('HTTP_BAE_ENV_AK');
$pass = getenv('HTTP_BAE_ENV_SK');

其中三处的 *** 由上到下分别填入数据库名称,应用名称,bucket 名称。很明显这段代码自动帮你获取了 IP,端口,用户名,密码等信息。

最后将原始代码的第 45 到 52 行修改为
define('AUTH_KEY', '$%^&*');
define('SECURE_AUTH_KEY', '123231');
define('LOGGED_IN_KEY', '21');
define('NONCE_KEY', '212');
define('AUTH_SALT', '21332');
define('SECURE_AUTH_SALT', '324');
define('LOGGED_IN_SALT', '3234');
define('NONCE_SALT', '24');

改了那么多地方嫌麻烦的话直接下载修改好的 wp-config.php 就行了,记得把 $dbname,$table_prefix,$bcs_bukect 填好。最后保存修改好的 wp-config.php,全选解压后的所有文件,重新压缩为 WordPress.zip。

11. 在云环境中的版本管理界面点击“创建新版本”,并且勾选“上传PHP代码包”,选择上一步重新压缩好的 zip 文件,点击保存后开始上传。

12. 上传完后记得点击“上线”。然后点击“预览”,这个时候应该就自动进入了熟悉的 WordPress 安装界面,如果没进入的话手动输入“版本号.应用名称.duapp.com/wp-admin/install.php”。这个过程不需要再输入数据库信息,因为第 10 步已经设置好了。

安装完成之后登陆进 WordPress 仪表盘,发现所有功能都与付费空间或者本地搭建的一样,插件主题安装都没问题,不需要像 SAE 那样必须全部通过 SVN 上传。省事。

我搭建的 BAE 上的 WordPress:capbonewp.duapp.com,欢迎围观,测试所有功能都正常。补充一下,目前的 BAE 已经支持本地写操作了,很多 PHP 程序不再需要针对 BAE 进行修改移植。在“版本管理”页面中“高级-配置”中可以选择开启 NFS。

最后再补充一句,昨天(2013年5月28日)SAE 改变了收费条例,凡是通过实名认证的用户免收应用租金并一次性赠送 2000 云豆(价值 20 元人民币)。这样一来到底是 BAE 还是 SAE 又变成一个十分有趣的选择了。

59 Comments

  1. www.djwed.cn 2014-04-09 Reply
  2. Yang 2014-01-04 Reply

    你好,请问你的博客采用的什么Wp主题?

    • Author
      Captain 2014-01-05 Reply

      Flexform,查看CSS文件头就能看到

  3. henry 2013-12-23 Reply

    你好!我按你的说明一步一步安装的,到了第12步,点查看显示404-Not Found,输入版本号.应用名称.duapp.com/wp-admin/install.php页面显示No input file specified.,求解决。谢谢~~~

    • Author
      Captain 2013-12-23 Reply

      是不是wp-config.php文件没设置对?域名能给我看看不?

      • henry 2013-12-26 Reply

        你好,问题解决了,安装包的问题。换个换个安装包就好了,但是图片不能显示???http://imhaizi.duapp.com/

        • Author
          Captain 2013-12-26 Reply

          我这里看图片没问题啊,一张驱动之家的N10?

          • henry 2013-12-26

            下午弄好了,但后台发布文章的话,必须得设置代码,否则图片的属性就是width=1;height=1,显示就一根线,不知是不是共性问题,

          • Author
            Captain 2013-12-26

            后台setting-media里面可以设置缩略图默认尺寸,看看是不是这里设置成0了。

          • henry 2013-12-26

            没有啊,

  4. 路过 2013-11-15 Reply

    呵呵,有用。

Leave a reply

Your email address will not be published.