表示找了一圈的服务器,从阿里云的学生惠主机到香港的虚拟主机,想了想还是使用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;
}
好了,大致就这些,后续其他问题继续补充。