Posts Tagged “wordpress”

前几天在路上收到了wpchina租期将到的邮件,于是一回到家就立即按上次宕机风波之后的计划,购买了新的VPS,并将blog从wpchina迁移回VPS。购买之前也考虑了一下之前大家推荐的linode,但发现没有便宜的plan了,$20每月的壕VPS实在用不起。

购买了BudgetVM的VPS之后,就把原先分别指向srv-rapidxen.watashi.ws的watashi.ws和指向srv-wpchina.watashi.ws的blog.watashi.ws,都改指向srv-budgetvm.watashi.ws了。迁移过程除了简单的文件拷贝和数据库导入以外,就写了一个简单的.htaccess根据Host进行不同的重定向,以保证原来的URL依然有效。如果发现有什么链接失效或者页面不正常,欢迎留言,不胜感激。

Comments 3 Comments »

前几天Blog的访问页面全都返回HTTP403,由于最近都没怎么更博了,过了若干天才偶然发现。话说google webalizer的警告也不是很靠谱的样子,以前我的lighttpd挂掉也是等我自己发现恢复了之后才通知我。联想到上次VPS被黑的悲剧,心想:不会吧,这次又中招。虽然数据库都有按时备份,但素材一直没有备份。之前把blog迁移到了wpchina,通过cpanel发现目录权限为000,于是联系服务商解决。可是通过cpanel和gmail联系均无果,让blog一直挂着似乎也不太好,所以先把blog.watashi.ws的DNS改回VPS,再稍稍修改了一下lighttpd.conf,在VPS上跑了一个很久以前的blog镜像。

过了三四天才通过阿里旺旺联系到服务商,然后解决问题又花了两天。原因居然是因为我的blog看似吃了很多CPU,于是他们就替我干掉了,居然没有给我任何通知!无论是ticket系统还是处理与解决问题的过程都让我觉得他们未免太不专业。之前迁移blog的主要原因是原来在RapidXen买的VPS只有256M内存,跑wordpress实在太吃力。现在发现BudgetVM(他们似乎收购了RapidXen)上有更物美价廉的768M内存的VPS,于是考虑下一步考虑换VPS并把blog迁移回去。这即经济又便于管理。不过之前手贱给VPS多续了一年费,RapidXen很邪恶的不给refund,本着浪费有罪的原则,还是先忍几个月吧。

Comments 11 Comments »

ゆっくりでいいさ的地址從原來的http://watashi.ws/blog/永久變更為http://blog.watashi.ws/。原鏈接改為對新地址的重定向,如果發現有URL失效,歡迎留言

Comments 8 Comments »

上回说到实现了各种文件的上传,正要给attachment.php实现高亮显示源代码……(天外音——pia飞)。

先上Demo:
icon-icpc-smallsource code (ZOJ2705.cpp)
attachment-demo

在wordpress的template hierarchy里,对附件显示(attachment display)的处理,wp会按照

  1. MIME_type.php – 可以是任意的MIME,对于type/subtype,比如text/plain会按照:

    1. type.php (e.g. text.php)
    2. subtype.php (e.g. plain.php)
    3. type_subtype (e.g. text_plain.php)
  2. attachment.php
  3. single.php
  4. index.php

的顺序,调用第一个主题(theme)中可用的php文件。wp模认主题里没有attachment.php,我所用的主题mandigo里提供有attachment.php,对于图片,会显示缩略图(thumbnail),而对于其他文件,只显示一个图标(icon)和文件标题(title)。而我希望对于上传的源代码,可以直接显示代码内容,最好还是语法高亮的。因为很多时候我们只是想简单的看一下代码,这样也要下载太麻烦了,而且硬盘空间可能不够(……几k的空间都没有么……),提供预览也能排雷,下了个假档影响多不好啊。

为了达到这一目的,图方便,我直接对attachment.php文件进行了hack,首先加入了下面这一段代码:

Comments 6 Comments »

blog里经常需要贴一些代码,平时用SyntaxHighlighter直接贴在文章里是一个不错的选择,但遇到写一套题的解题报告这样的情况时,贴过多的代码显得很违和,容易喧宾夺主,可以改用附件(attachment)的形式贴在解题报告中。可惜wordpress by default不支持cpp文件,如果尝试在Media – Add New中上传cpp文件,会得到”Error saving media attachment”的错误。一个变通的办法是把扩张名改为txt上传。事实上wp虽然不支持cpp文件,但却支持cc文件,这里有一个完整的支持列表。

改扩展名上传文件不是一个干净的做法,对上传,下载着都不方便。要添加额外的文件类型,比如cpp和php,可以用下面的api来增加允许上传的mime:

function add_upload_mime($mimes = '') {
	$mimes['cpp'] = 'text/x-c++src';
	$mimes['php'] = 'application/x-httpd-php';
	return $mimes;
}
add_filter('upload_mimes', 'add_upload_mime');

不过还是用现有的plugin比较方便,PJW Mime Config就是一个这样的plugin。

这样虽然解决了上传php文件的问题,但是下载却出现了问题。对于txt文件,通常将直接再浏览器打开;对于cpp文件,通常会弹出一个下载对话框;但对于php或其他cgi文件,服务器将会执行它,返回的是执行结果,而不是源文件,或者出现HTTP 500。所以需要更改服务器设置,将这些后缀的文件当成普通文件处理,对于lighttpd,可以在lighttpd.conf中对上传文件夹upload这样设置:

$HTTP["url"] =~ "^/blog/wp-content/uploads/" {
	cgi.assign = ()
	fastcgi.server = ()
	static-file.exclude-extensions = ()
}

附件上传的问题就这样解决了,下一步就是要扩展attachment.php的功能,使得源代码能供直接再attachment页面内通过语法高亮显示出来。

Comments 1 Comment »