使用BAE搭建WordPress博客

但凡折腾的事总是不能少了我,而这种无成本的折腾当然更不能少了我。虽然每次都是后知后觉,等到这件事热的差不多了,看看大家的反应后我再去折腾。今天讲的是BAE,即Baidu App Engine。BAE提供PHP环境和MySQL数据库,无需自己再配置环境,拿来就可以用,用来搭建WordPress博客还是很方便的。这在国内也不是首例了,国际上更是很落后。可以见我之前的《新浪云商店试用》,或者自己去找篇GAE的文章,还有Appfog也都很不错。

什么是BAE?

BAE(Baidu App Engine)是百度推出的网络应用开发平台。基于BAE架构,您不需要维护任何服务器,只需要简单的上传应用程序,就可以为您的用户提供服务。BAE有能力将原本单机的LAMP架构,变成分布式架构。您可以基于BAE平台进行PHP、Java、Python应用的开发、编译、发布、调试。同时BAE平台也提供了大量的云服务给开发者,包括fetch URL、task queue、SQL、memcache,后续会提供更多服务。在性能方面,如果您希望增加服务能力,可以通过申请更多执行单元的方式进行灵活的调整。BAE服务可以让您在开发网络应用程序的过程中摆脱繁琐的环境、服务问题,把精力专注于业务逻辑。

BAE环境下搭建WordPress博客的步骤

0、WordPress下载;SVN下载:http://tortoisesvn.net/downloads.html

1、注册百度账号,没有的话自行注册去。

2、完成注册后进入百度开发者平台,注册成为百度开发者,获得邀请码。具体方法见如何获得邀请码。今天的重点不是如何获取邀请码,所以这部分不多说。我这里还有两个多余的邀请码,要的话可与我联系,不放在这儿了,被人拿去还不吱一声。

3、激活账号。登录百度开发者中心,点击“百度应用引擎 BAE”下的“开始使用”:

4、在新页面的右上角点击 “创建应用”,注意要选择”Web应用“,”不接入,仅托管到BAE“,”PHP“三项。

创建成功后,点击页面左下角的”我的云服务(BAE)“,在新页面点击左下角的”我的应用“,出现下图的页面,在右侧列表中找到刚刚创建的名为的应用,点击右侧操作栏中的“管理”

点击“管理” —>“创建新版本”按钮,获得SVN地址:

5、使用SVN管理代码,关于SVN管理和上传代码,在百度开发者中心上有详细的讲解,地址:

SVN管理和上传 ,我checkout的目录 ”D:SVN”

6、配置mysql数据库

点击“云数据库”,再点击创建数据库,完成数据库的配置,并得到数据库的名称。

点击“phpMyadmin”后,点击“操作”,修改数据库字符集为utf8_general_ci,界面如下:(已经是的话不需要改)

7、在云存储中创建bucket,用于存储wordpress上传的资源。配额和流量什么的看你自己的需求自己确定。

8、下载WordPress(请见最后附件),并解压后得到的所有文件复制。

到”D:SVN”(替换成你自己checkout文件夹),在安装WordPress之前需要配置wp-config.php文件,(只需修改$dbname和$bcs_bucket),具体配置如下:

<?php
  //创建的云数据库名称和申请的bucket
$dbname = "NmbmJnwQDieJRxUDBmiJ";
$table_prefix  = 'wp';
$bcs_bukect = 'baeueditor';
?>

<?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');

// ** MySQL 设置 - 具体信息来自您正在使用的主机 ** //
/** WordPress 数据库的名称 */
define('DB_NAME', $dbname);

/** MySQL 数据库用户名 */
define('DB_USER', $user);

/** MySQL 数据库密码 */
define('DB_PASSWORD', $pass);

/** MySQL 主机 */
define('DB_HOST', $host);
define('BCS_BUCKET', $bcs_bukect);

/** 创建数据表时默认的文字编码 */
define('DB_CHARSET', 'utf8');

/** 数据库整理类型。如不确定请勿更改 */
define('DB_COLLATE', '');

/**#@+
 * 身份认证密匙设定。
 *
 * 您可以随意写一些字符
 * 或者直接访问 {@link https://api.wordpress.org/secret-key/1.1/salt/ WordPress.org 私钥生成服务},
 * 任何修改都会导致 cookie 失效,所有用户必须重新登录。
 *
 * @since 2.6.0
 */
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');

/**#@-*/

/**
 * WordPress 数据表前缀。
 *
 * 如果您有在同一数据库内安装多个 WordPress 的需求,请为每个 WordPress 设置不同的数据表前缀。
 * 前缀名只能为数字、字母加下划线。
 */

/**
 * WordPress 语言设置,中文版本默认为中文。
 *
 * 本项设定能够让 WordPress 显示您需要的语言。
 * wp-content/languages 内应放置同名的 .mo 语言文件。
 * 要使用 WordPress 简体中文界面,只需填入 zh_CN。
 */
define('WPLANG', 'zh_CN');

/**
 * 开发者专用:WordPress 调试模式。
 *
 * 将这个值改为“true”,WordPress 将显示所有用于开发的提示。
 * 强烈建议插件开发者在开发环境中启用本功能。
 */
define('WP_DEBUG', false);

/* 好了!请不要再继续编辑。请保存本文件。使用愉快! */

/** WordPress 目录的绝对路径。 */
/****************************************
*use proxy to visit network
****************************************/

define('WP_PROXY_HOST', getenv('HTTP_BAE_ENV_ADDR_FETCHURL'));
define('WP_PROXY_USERNAME', getenv('HTTP_BAE_ENV_AK'));
define('WP_PROXY_PASSWORD', getenv('HTTP_BAE_ENV_SK'));
if( !defined('ABSPATH') )
    define('ABSPATH', dirname(__FILE__) . '/');

/** 设置 WordPress 变量和包含文件。 */
require_once(ABSPATH . 'wp-settings.php');
?>

配置wp-config.php完成后,打开wp-admin/includes/file.php,改成使用BAE提供的Mysql服务,在文件中找到 function wp_handle_upload( &$file, $overrides = false, $time = null )函数,在该函数中找到$filename = wp_unique_filename( $uploads[‘path’], $file[‘name’], $unique_filename_callback ); 删除下面的代码:

// Move the file to the uploads dir
    $new_file = $uploads['path'] . "/$filename";
    if ( false === @ move_uploaded_file( $file['tmp_name'], $new_file ) )
        return $upload_error_handler( $file, sprintf( __('The uploaded file could not be moved to %s.' ), $uploads['path'] ) );

    // Set correct file permissions
    $stat = stat( dirname( $new_file ));
    $perms = $stat['mode'] & 0000666;
    @ chmod( $new_file, $perms );

    // Compute the URL
    $url = $uploads['url'] . "/$filename";

    if ( is_multisite() )
        delete_transient( 'dirsize_cache' );

    return apply_filters( 'wp_handle_upload', array( 'file' => $new_file,'url' => $url, 'type' => $type ), 'upload' );

然后在该行下添加如下代码:

$tmp_file = wp_tempnam($filename);

// Move the file to the uploads dir
 if ( false === @ move_uploaded_file( $file['tmp_name'], $tmp_file ) )
        return $upload_error_handler( $file, sprintf( __('The uploaded file could not be moved to %s.' ), $uploads['path'] ) );

 // If a resize was requested, perform the resize.
 $image_resize = isset( $_POST['image_resize'] ) && 'true' == $_POST['image_resize'];
 $do_resize = apply_filters( 'wp_upload_resize', $image_resize );
 $size = @getimagesize( $tmp_file );
 if ( $do_resize && $size ) {
        $old_temp = $tmp_file;
        $tmp_file = image_resize( $tmp_file, (int) get_option('large_size_w'), (int) get_option('large_size_h'), 0, 'resized');
        if ( ! is_wp_error($tmp_file) ) {
            unlink($old_temp);
        } else {
            $tmp_file = $old_temp;
        }
    }

    //新版采用百度云存储
    //上传到云存储
    $bucket = constant('BCS_BUCKET');
    $opt = array();
    $baidu_bcs = new BaiduBCS();

    $object =  "/$filename";
    $fileUpload = $tmp_file;

    if( !file_exists($fileUpload) )
    {
        die('file is not existed!!!!!!!!!!!!!');
    }

    $re = $baidu_bcs->create_object ( $bucket, $object, $fileUpload, $opt);

    trigger_error( print_r($re, true) );

    unlink($tmp_file);

    $url = $baidu_bcs->generate_get_object_url($bucket, $object);
    //echo '??????'; exit;
    if ( is_multisite() )
        delete_transient( 'dirsize_cache' );
    //exit("$new_file     !!</br>      $url");
    return apply_filters( 'wp_handle_upload', array( 'file' => $new_file,'url' => $url, 'type' => $type ), 'upload' );

9、配置完成后, 然后使用SVN上传代码到BAE。

上传方法见百度官方指南:SVN代码管理,点Add后一路点OK,最后Add完成后,点击“SNV Commit”,继续一直“ok”,直到上传完成。

然后打开浏览器中输入第四步中申请的域名,开始安装wordpress,配置blog;

配置完成后,(在安装界面如果没有跳转,请点击“刷新”,刷新当前页面)你就可以使用百度的BAE+wordpress玩自己的博客了。

 

后话:

1、如果博客上出现中文乱码的情况,可以采用下面的方法解决:

在wp-includes文件夹下找到wp-db.php文件,使用文字编辑器打开,在文件第1063行 $this->select( $this->dbname,$this->dbh ); 后面加上:$this->query(“set names utf8”);  然后重新上传到云服务上,使用。(如果您已创建了数据库,请先删除原来创建的数据库,如果不删除,官方文字依然是乱码)请一定注意。

2、百度在wordpress开发了一个非常强大的编辑软件,附件wp-ueditor.zip,具体操作方法,将文件解压到wp-contentplugins目录下,在打开wordpress,仪表盘—-插件—–UEditor(点击下方的启用),即可在文章编辑页面中使用,用用你就知道它有多么的强大了,很轻松搞定图片上传和插入到文章中的问题。(推荐使用,因为默认编辑器上传的图片会变成超链接)

wp-ueditor.zip

3、如果上传WordPress后访问你的地主出现了404页面,那是因为你没有上线你的应用。解决方法:在“我的应用”页面,点击管理,然后将“上线版本”下面的勾打上:

当你的应用的状态由“已发布”变成“已上线”时,你就可以通过第四步申请的地址访问了。

4、给个演示地址:neoblog.duapp.com,

绑米地址:www.envps.com

附件:附件中WordPress+bae.zip是已配置好的,只需修改wp-config.php文件中的$dbname和$bcs_bucket,上传到bea上即可运行(建议使用本版本,已经加入UEditor插件)

wordpress+BAE.zip

 

参考文章:http://www.baiduyunblog.com/?p=1

39 thoughts on “使用BAE搭建WordPress博客

          1. @Miracle : 是啊,要不M兄你去我的博客看看,小工具是拖到sidebar去了,可是应该怎么添加链接呢?空白的一点用处都没有啊。。
            还有一个弱弱的问题,那就是你用了more标签截断么?默认截断200字很丑啊。。

    1. 邀请码还有两个,要的话可以给你一个,不过得等明天,苦逼学生族现在已经断电了。我觉得小主机商在国内太艰难了,所以买的主机都直接免费提供了。。。

          1. @鬼娃娃 : 这。。不科学啊,昨天给别人的另一个都是可以用的。。。这我也没办法了,一共就多了两个,不好意思啊。。。

发表评论

电子邮件地址不会被公开。 必填项已用*标注