MENU

BAE部署Typecho的一些修改

2017 年 10 月 29 日 • 建站

表示找了一圈的服务器,从阿里云的学生惠主机到香港的虚拟主机,想了想还是使用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,导致网站链接失效(最新1.1.0版本的typecho不需要此修改)
这个bug存在在varTypechoRequest.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;
    }

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

最后编辑于: 2018 年 03 月 09 日