使用Typecho && VPS搭建轻量级博客
最近由于使用了Hexo的静态博客,深感静态页面的Blog简介高效,好管理,非常的Geek。就想着能不能找到一个轻量级的仿照WP的博客框架。最终发现了Typecho,其实还是非常符合我的意愿的:小巧、简介、有后台发布系统。说开始就开始,准备搭建,开始了无尽的踩坑之旅。
环境问题
确保有:
- PHP5.1以上
- MySQL or SQLite等任意一种数据库支持
- 数据库中创建一个「typecho」的数据库
我的VPS上目前是LNMP1.3的环境,再次感谢军哥。
安装过程
-
去这里下载最新版本的Typecho,解压到你想放的网站的根目录里,注意名字切记切记
-
解压后,配置一下ng的conf,添加以下两行(LNMP1.2以上已经原生的支持了Typecho的伪静态了,很多人后面出现的404错误基本都是这么造成的):
include typecho
include enable-php-pathinfo.conf -
打开你指向的域名/install.php,按照要求去开始下一步,在初始化的过程中,会让填写一些数据库相关的东西,不要填错了
-
在安装之前,需要在网站的安装目录下面新建一个config.inc.php文件,页面上面生成的代码拷贝进去,
正常情况通过上面的流程,这样安装就完成了,前后台都能登录上去了。But 我遇到了非常多的坑,记录下,可能可以帮助他人。
踩坑
前台正常显示,任何的链接都可以打开,除了后台/admin/xxxx.php
遇到这个问题也挺奇怪的,大多数网上的网友朋友都是因为配置伪静态的缘故,但要是这个错误的话前后台都是会变成404。
接着我通过浏览器的开发者模式看到报错是500,去看了看nginx的log正常,php的log默认没有开启,打开后仍然没有log。这时候我尝试着重启了下php,解决。2333
service php-fpm restart
本以为完事大吉了,接着出现了下面的错误。
所有的admin/xxx.php都是空白页,返回码是200
这个我就蒙圈了,怎么会返回正常但是没有页面内容呢?so,step through
<?php
echo ‘0’;
if (!defined('__DIR__')) {
define('__DIR__', dirname(__FILE__));
}
echo ‘1’;
define('__TYPECHO\_ADMIN__', true);
echo '2';
if (!defined('__TYPECHO\_ROOT\_DIR__') && !@include\_once __DIR__ . '/../config.inc.php') {
file\_exists(__DIR__ . '/../install.php') ? header('Location: ../install.php') : print('Missing Config File');
exit;
}
echo ‘3';
结果发现3没有被输出出来,把问题缩小到if语句中。
从上面的代码可以定位到是if语句造成的问题,看一看定义根目录好像出了问题。仔细的查看后,发现忽略了一个问题。
在我下载Typecho后,copy到网站根目录的时候,修改了一次文件夹名称,导致了目录出现问题
解决方案也非常的简单,重新安装一遍就可以解决这个了
Wrodpress博客迁移
由于我之前是通过WP来写作博客的,所以我需要把之前的数据全部导入到Typecho中。
官方的文档,写的还是非常的蛋疼的,戳这里(http://docs.typecho.org/plugins/wordpress-to-typecho "戳这里"),几句话说完了。实际的过程中,发现还有一个非常重要的步骤:WP博客的服务器的数据库远程连接的功能必须要开启。方法很简单:
- 有图形界面管理数据库的话(例如phpmyAdmin),添加一个新的用户,给足权限。
- 没有图形界面,可以在VPS的mysql命令行中输入下方命令:
mysql -u root -p
GRANT ALL PRIVILEGES ON . TO ‘yourUser’@‘%’ IDENTIFIED BY ‘yourPassword' WITH GRANT OPTION;
FLUSH PRIVILEGES;
上面的代码记得替换自己的用户和密码
注:这里我犯了一个错误,试图给远程的帐号一个root权限,一直报错。回头想一想,逻辑上来说ACL不会这么设计
配置下属性,在数据库地址中填入你实际的远程链接地址。
接着就可以开始迁移了,我大概有60多篇文章,3w多条评论,不到1分钟就迁移完了,速度还是不错的。
插件安装
安装插件也比较方便,但是很不幸的是官方没有一个插件市场,需要自己手动的去程序猿交友网站github去找寻。
这里有很多插件,按照需要clone下来,传到typecho中的usr/plugins里面就好了,在后台,去启用这个插件就完成了。
目前我使用的:SmartSpam&Syntax Highlighter,就已经够了。