BAE部署Typecho的一些修改

来源:互联网 发布:数组foreach c# 编辑:程序博客网 时间:2024/06/01 09:51

表示找了一圈的服务器,从阿里云的学生惠主机到香港的虚拟主机,想了想还是使用BAE吧。和BAE还是挺有缘分的,从上学时它开始内测的时候就开始使用了,后来收费就没再使用了。前几天又去看了,BAE貌似比前几年便宜了,想想自己的博客才开始起步,先安居在BAE好了,毕竟我对服务器性能要求不高,重点是便宜(:зゝ∠)

写在前面

前几个月就萌生了搭建一个个人网站的想法,想和传统博客不太一样,我想把一些可以使用小程序也放在上面,比如物联网云平台,以及各种好玩东西的制作教程放上面。虽然我也是个大水货,能把好玩有用的技术带给大家就好。

博客系统挑了蛮久的,从WP到国产的emlog,最后才选了typecho。WP虽然功能很强大,但是总觉的有点臃肿,个人看法,哈哈。emlog是我用了很多年的一个博客系统,准确的说是真正读完源码的一个博客,挺简洁的一个博客,但是一大串if else在代码里面,性能上不如typecho。博客的模板来自友人C,非常感谢作者的无私奉献,好像最近开始收费了,还是物超所值。

BAE部署Typecho问题

Typecho在BAE上的部署教程参见官方教程->教程,这里只说一下我安装时遇到的问题。

1. 没有提示创建config.inc.php文件

这种情况需要自己在网站根目录下创建该文件,内容如下,保存内容即可:

<?php/** * Typecho Blog Platform * * @copyright  Copyright (c) 2008 Typecho team (http://www.typecho.org) * @license    GNU General Public License 2.0 * @version    $Id$ *//** 定义根目录 */define('__TYPECHO_ROOT_DIR__', dirname(__FILE__));/** 定义插件目录(相对路径) */define('__TYPECHO_PLUGIN_DIR__', '/usr/plugins');/** 定义模板目录(相对路径) */define('__TYPECHO_THEME_DIR__', '/usr/themes');/** 后台路径(相对路径) */define('__TYPECHO_ADMIN_DIR__', '/admin/');/** 设置包含路径 */@set_include_path(get_include_path() . PATH_SEPARATOR .__TYPECHO_ROOT_DIR__ . '/var' . PATH_SEPARATOR .__TYPECHO_ROOT_DIR__ . __TYPECHO_PLUGIN_DIR__);/** 载入API支持 */require_once 'Typecho/Common.php';/** 载入Response支持 */require_once 'Typecho/Response.php';/** 载入配置支持 */require_once 'Typecho/Config.php';/** 载入异常支持 */require_once 'Typecho/Exception.php';/** 载入插件支持 */require_once 'Typecho/Plugin.php';/** 载入国际化支持 */require_once 'Typecho/I18n.php';/** 载入数据库支持 */require_once 'Typecho/Db.php';/** 载入路由器支持 */require_once 'Typecho/Router.php';/** 程序初始化 */Typecho_Common::init();/** 定义数据库参数 */$db = new Typecho_Db('Mysql', 'typecho_');$db->addServer(array (  'host' => '数据库地址,一般是sqld.duapp.com',  'user' => 'BAE的AK',  'password' => 'BAE的SK',  'charset' => 'utf8',  'port' => '端口',  'database' => '数据库实例名',), Typecho_Db::READ | Typecho_Db::WRITE);Typecho_Db::set($db);define('__TYPECHO_DEBUG__', true);

2. 明明没设置端口8080,网站上的链接都有8080,导致网站链接失效
这个bug存在在var\Typecho\Request.php文件第212行,端口没有添加8080,导致BAE这种8080映射80的环境直接在URL后添加8080端口。修正后代码如下:

    /**     * 获取url前缀      *      * @access public     * @return string     */    public static function getUrlPrefix()    {        //BAE的服务器端口可能不是80或者443,把它增加到数组里        if (empty(self::$_urlPrefix)) {            self::$_urlPrefix = (self::isSecure() ? 'https' : 'http')                 . '://' . (isset($_SERVER['HTTP_HOST']) ? $_SERVER['HTTP_HOST'] : $_SERVER['SERVER_NAME'])                . (in_array($_SERVER['SERVER_PORT'], array(80, 443, 8080)) ? '' : ':' . $_SERVER['SERVER_PORT']);        }        return self::$_urlPrefix;    }

好了,大致就这些,后续其他问题继续补充。