出家如初,成佛有余

用Sphinx驱动WordPress搜索

Posted in 技术相关 by chuanliang on 2014/04/14

乐无线lewuxian.com最初的搜索是基于wordpress自身的数据库搜索功能,在数据量剧增的情况下,搜索速度奇慢无比,因此改用Sphinx来完成对Wordpress的搜索请求。

大的框架:采用sphinx-for-chinese + WordPress Sphinx Search Plugin + Redis 搭配来实现搜索性能的优化。其中:

sphinx-for-chinese 在sphinx基础上增加了CJK字符的搜索支持。WordPress Sphinx Search Plugin 是Wordpress插件,用于集成Wordpress和Sphinx;Redis用于搜索操作和结果的缓存。

1、sphinx-for-chinese安装配置

最初直接使用了sphinx 最新版本来实现搜索,为解决中文(CJK)搜索问题,按照 Using Sphinx search engine with Chinese, Japanese, and Korean language documents 提供的方案,大致注意事项如下(对sphinx.conf中每一项source段):

1)、charset_type :Wordpress数据库编码采用utf-8编码,Sphinx 的 charset_type 设置为 utf-8。

2)、charset_table :设置 CJK 专用的 charset_table ,简单起见直接拷贝cjk_index_example.zip 例子提供的charset_table 。

需要注意的是:由于charset_table 的内容太多,无法放在一行,需要分成多行,sphinx.conf的续行标识为“\”,在续行符“\”后一定不能有空格等其他符号,只能为回车换行符号 (\r\n)。在配置过程中,习惯性在”\”后面加了空格,结果在执行indexer时候,报莫名其妙的错误。

3)、ngram_chars:设置CJK分词符(CJK Ngram Characters ),仍直接拷贝cjk_index_example.zip 例子提供的是ngram_chars。

4)、把 ngram_len 设置为 1,目前版本只支持设置为1 。

按照以上步骤设置为,Sphinx倒是能够对Wordpress的中文文档建索引、搜索了,但由于建立索引和搜索时候都是按照1分法索引查询的,导致搜索效果并不好。一般中文搜索按照二分法效果好得多。

因此寻找sphinx中文搜索的更优解决方案。目前可选的似乎就是:sphinx-for-chinese  和coreseek 。简单对比,感觉coreseek对sphinx调整较大,不像sphinx-for-chinese那样简洁,因此选择了sphinx-for-chinese。

在CentOS 5服务器上安装最新版本的sphinx-for-chinese-2.2.1-dev-r4311.tar.gz ,在make时候报错,换成sphinx-for-chinese-2.1.0-dev-r3361.tar.bz2 倒是比较顺利。

编译安装倒是比较简单,sphinx-for-chinese官方文档说得比较清楚。

值得注意的是官方说明文档提到的xdict_1.1.txt 需要从google code下载http://code.google.com/p/sphinx-for-chinese/downloads/list ,并没有包含在发布包中,也没有在官网http://www.sphinx-search.com/ 提供下载。

 

  2、WordPress Sphinx Search Plugin安装配置

参照 WordPress Sphinx Search Tutorial 这篇文章,完成WordPress Sphinx Search Plugin的安装配置。

sphinx与wordpress集成,所使用的配置文件 :sphinx.confhttp://www.yeeach.com/sphinx.conf

注意事项:

1)、由于lewuxian.com对每一个公众号在wp_users中都有一个对应的作者,要支持对author的搜索需要对对应主题theme增加支 持页面。简单起见,采用如下的变通方式:将作者的user_login和user_nicename拼接到wp_main_posts和 wp_delta_posts的source中,这样在建索引和搜索时候可以支持对author的索引和搜索,不需要做其他复杂处理。

sql_query    = select \
p.ID*2+1 as ID, \
0 as comment_ID,\
p.ID as post_ID,\
p.post_title as title, \
concat(p.post_content ,’ ‘,u.user_nicename,’ ‘,u.user_login) as body, \
        t.name as category, \
IF(p.post_type = ‘post’, 1, 0) as isPost, \
0 as isComment, \
IF(p.post_type = ‘page’, 1, 0) as isPage, \
IF(p.post_type = ‘post’, 0, IF(p.post_type = ‘page’, 1, 2)) as post_type, \
UNIX_TIMESTAMP(post_date) AS date_added, \
GROUP_CONCAT(DISTINCT tag_t.name) as tags \
from \
wp_posts as p \
left join \
wp_users  u on (p.post_author=u.ID) \

 

  3、搜索操作及结果的缓存

由于在搜索后展示搜索结果详情时候需要查询数据库,目前服务器资源有限,为减缓数据库压力,采用Redis对搜索操作及结果进行缓存,可参考 使用Redis突破WordPress性能瓶颈

 

   4、其他配置

1)、crontab配置

1 1 * * * /usr/local/sphinx-for-chinese/bin/indexer –rotate –config /data/www/wwwroot/www.lewuxian.com/wp-content/uploads/sphinx/sphinx.conf  –all
*/5 * * * * /usr/local/sphinx-for-chinese/bin/indexer –config /data/www/wwwroot/www.lewuxian.com/wp-content/uploads/sphinx/sphinx.conf wp_delta –rotate
*/5 * * * * /usr/local/sphinx-for-chinese/bin/indexer –config /data/www/wwwroot/www.lewuxian.com/wp-content/uploads/sphinx/sphinx.conf wp_stats –rotate

2)、searchd

searchd启动脚本

放到/etc/init.d/searchd ,然后执行:

chkconfig  –add  searchd

chkconfig  –level searchd 345

3)新搭建的wordpress,执行indexer –rotate  –config –all 报max_id=’(null)’ 和min_id=’(null)’错误

using config file ‘/data/www/wwwroot/www.lewuxian.com/wp-content/uploads/sphinx/sphinx.conf’…
indexing index ‘wp_main’…
ERROR: index ‘wp_main’: sql_query_range: max_id=’(null)’: must be positive 32/64-bit unsigned integer.
total 33471 docs, 294394782 bytes
total 80.890 sec, 3639444 bytes/sec, 413.78 docs/sec
indexing index ‘wp_delta’…
ERROR: index ‘wp_delta’: sql_query_range: min_id=’(null)’: must be positive 32/64-bit unsigned integer.

解决办法:

select min(id) from wp_posts;

select min(comment_id) from wp_comments;

如果min(comment_id)为NULL,则随便找一篇帖子回复一下即可。

 

5、参考资料:

Using Sphinx search engine with Chinese, Japanese, and Korean language documents

sphinx-for-chinese官方文档

Sphinx速成指南

 

原文链接:http://www.yeeach.com/post/1247

 

FIREFOX / IE Word-Wrap:Word-Break问题

Posted in Uncategorized by chuanliang on 2007/10/23

用的是wpzone.netfresh wordpress主题,很烦人的是在Internet Explorer下如果content或sidebar的内容部分一行的内容过长,则经常出现sidebar被挤到页面最下端的情况,而在firefox下没有此种现象。一般出现在如下几种情况:

  • 图片太大超过了width
  • url太长没有正常换行,超过了width
  • 代码太长没有正常换行,超过了width

究其原因是因为对于无空格连续长字符,IE与Firefox将它看成是一个长单词了,因此不会自动换行。

对于IE,可以通过IE专有的CSS属性word-wrap即可实现自动换行:word-wrap:break-word;

对于Firefox,CSS2标准并没有定义类似word-wrap的属性,可以通过overflow属性将撑出的部分隐藏:overflow:hidden

因此为了兼容性,可以使用如下方法:

word-wrap: break-word; /* fix for long text breaking sidebar float in IE */
overflow: hidden; /* fix for long non-text content breaking IE sidebar float */

.csharpcode, .csharpcode pre { font-size: small; color: black; font-family: consolas, “Courier New”, courier, monospace; background-color: #ffffff; /*white-space: pre;*/ } .csharpcode pre { margin: 0em; } .csharpcode .rem { color: #008000; } .csharpcode .kwrd { color: #0000ff; } .csharpcode .str { color: #006080; } .csharpcode .op { color: #0000c0; } .csharpcode .preproc { color: #cc6633; } .csharpcode .asp { background-color: #ffff00; } .csharpcode .html { color: #800000; } .csharpcode .attr { color: #ff0000; } .csharpcode .alt { background-color: #f4f4f4; width: 100%; margin: 0em; } .csharpcode .lnum { color: #606060; }

修改fresh theme的style.css文件,在#content和#sidebar中增加上述属性以及pre属性

#content {
color:#000;
display:inline;
float:left;
font-size:14px;
line-height:1.5em;
text-align:left;
width:635px;
margin:13px 0 0 20px;
padding:0 0 20px 0px;
word-wrap: break-word; /* fix for long text breaking sidebar float in IE */
overflow: hidden; /* fix for long non-text content breaking IE sidebar float */
}

#sidebar {
display:inline;
background-color:#fff;
float:right;
font-size:12px;
width:230px;
line-height:1.4em;
padding:20px 20px;
margin:15px 20px 15px 0;
word-wrap: break-word; /* fix for long text breaking sidebar float in IE */
overflow: hidden; /* fix for long non-text content breaking IE sidebar float */
}
pre {
 white-space: pre-wrap;       /* css-3 */
 white-space: -moz-pre-wrap;  /* Mozilla, since 1999 */
 white-space: -pre-wrap;      /* Opera 4-6 */
 white-space: -o-pre-wrap;    /* Opera 7 */
 word-wrap: break-word;       /* Internet Explorer 5.5+ */
}

另外对于firefox和opera可以采用javascript方式来避免overflow:hidden的弊端,具体实现可以参考:

Script word-wrap to Firefox – updated version

.csharpcode, .csharpcode pre { font-size: small; color: black; font-family: consolas, “Courier New”, courier, monospace; background-color: #ffffff; /*white-space: pre;*/ } .csharpcode pre { margin: 0em; } .csharpcode .rem { color: #008000; } .csharpcode .kwrd { color: #0000ff; } .csharpcode .str { color: #006080; } .csharpcode .op { color: #0000c0; } .csharpcode .preproc { color: #cc6633; } .csharpcode .asp { background-color: #ffff00; } .csharpcode .html { color: #800000; } .csharpcode .attr { color: #ff0000; } .csharpcode .alt { background-color: #f4f4f4; width: 100%; margin: 0em; } .csharpcode .lnum { color: #606060; } .csharpcode, .csharpcode pre { font-size: small; color: black; font-family: consolas, “Courier New”, courier, monospace; background-color: #ffffff; /*white-space: pre;*/ } .csharpcode pre { margin: 0em; } .csharpcode .rem { color: #008000; } .csharpcode .kwrd { color: #0000ff; } .csharpcode .str { color: #006080; } .csharpcode .op { color: #0000c0; } .csharpcode .preproc { color: #cc6633; } .csharpcode .asp { background-color: #ffff00; } .csharpcode .html { color: #800000; } .csharpcode .attr { color: #ff0000; } .csharpcode .alt { background-color: #f4f4f4; width: 100%; margin: 0em; } .csharpcode .lnum { color: #606060; }

参考文档:

http://users.tkk.fi/~tkarvine/pre-wrap-css3-mozilla-opera-ie.html

http://elmicoxcodes.blogspot.com/2007/06/script-word-wrap-to-firefox-updated.html

http://jiarry.bokee.com/5871385.html

http://bbs.blueidea.com/thread-2692909-1-1.html

http://www.positioniseverything.net/explorer/expandingboxbug.html

Technorati 标签:,,,,

Pligg安装过程记录

Posted in Uncategorized by chuanliang on 2007/10/11

打算使用pligg用于自己日常的网摘使用,以统一网摘内容,避免零散在各个网摘站点上。

这此记录一下自己在基于dreamhost虚拟主机环境下配置pligg的安装过程。

环境说明:

dreamhost虚拟主机环境、linux系统、mysql数据库

wordpress作为缺省主页程序,安装路径为yeeach.com,将pligg的程序安装到wordpress目录下,pligg的安装路径为yeeach.com/digg

1、安装pligg

直接用了dreamhost提供的One-Click Installs的pligg安装包(9.8版本),安装完成后

chmod 644 digg/libs/dbconnect.php
rm -rf digg/install

2、在wordpress中新增page作为导航,并将新增页面的点击操作重定向到pligg

假设pligg路径为http://www.yeeach.com/yeeach-digg

在.htaccess中配置RewriteRule,只在RewriteBase /后增加

RewriteRule yeeach-digg /digg [L]

.htaccess完整的内容如下:
# BEGIN WordPress
<IfModule mod_rewrite.c>
RewriteEngine On
RewriteBase /
RewriteRule yeeach-digg /digg [L]
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule . /index.php [L]
</IfModule>
# END WordPress

3、备份digg库并修改字符集

由于dreamhost的mysql缺省字符集为latin1,需要修改为utf8.

登录phpmyadmin或直接用mysqldump导出digg库为sql文件,手工将DEFAULT CHARSET从latin1替换为utf8

4、删除digg库的库表(虚拟主机用户没有权限直接drop库,只能删除表),导入替换字符集后的sql

5、确认digg表的字符集为utf8_general_ci

6、以god/12345登录pligg,修改口令

7、下载中文语言包

关于Pligg 9.8中文乱码解决方案(Chinese gibberish on Pligg 9.8 solutions)下载libs.zip包,解压后上传到libs/下

8、到“后台管理”的“修改语言”,按照自己需要调整术语说法

9、到“后台管理”的“设定配置”处修改“Searching”为2 = uses MySQL LIKE and is much slower, but returns better results. Also supports “*” and “-”

10、关于前后台界面汉化

前台界面汉化:采用pligg站点上下载的lang.conf已经汉化了前台,需要用pligg下载的汉化包覆盖libs/lang.conf;

后台界面汉化:后台管理界面的汉化需要修改数据库。可以从http://bpdig.com/forum/viewtopic.php?t=73下载后台汉化包,建议不要汉化,汉化很不好用,如要修改,修改前备份数据库后,出错后好回滚。

 

参考资料:

http://blog.bpdig.com/?cat=1
http://forums.pligg.com/pligg-mods/8892-pligg-9-8-chinese-gibberish-pligg-9-8-solutions.html

 

 

Technorati 标签: , ,

Tagged with: , ,

如何添加 WordPress 2.3 标签到你使用的主题

Posted in Uncategorized by chuanliang on 2007/10/06

http://richgilchrest.com/how-to-add-wordpress-23-tags-to-your-current-theme/

http://richgilchrest.com/how-to-add-wordpress-23-tags-to-your-current-theme-part-2/

http://wordpresschina.org/how-to-add-wordpress-23-tags-to-your-current-theme-9/

WordPress 2.3 应当于 9月 24日发布。很多博客已经想要尽快升级,因为新版本增加了一个非常有利于搜索引擎优化的工具:标签。虽然其它插件来支持标签,显然很多博客并不去用。我知道我就不用。【译者注:我也没用。】

Ultimate Tag Warrior 是目前为止最好的标签插件。我在家里的计算机上安装测试过。不幸的是,这个插件文件在一个压缩包内,看起来就不容易安装,因此很多人都不使用。UTW 也很难配置,有很多选项并没有解释清楚。这个插件有几十个选项要填写,不经过测试你根本不知道效果是什么样,因此我要选择一个标签,就花费了不止一个小时的时间。

WordPress 2.3 改变了这一切。有了内置的插件支持和插件云功能,再也不需要难以配置的插件。WordPress 提供两个简单的接口函数来供任何主题调用。经过这次升级,标签将很快传遍全世界。

不幸的是,这意味着如果你要在你的主题里使用这个功能,必须要进行更新。如果你通过 WordPress 主题站下载的主题,基本没有办法知道你使用的主题的作者是否曾升级。毕竟,到现在很多还有很多主题都不支持 Widget 呢,那可是很容易实现,也是对很多 WordPress 博客用户来说都是必须的功能。【译者注:潜台词,更何况刚刚加入的标签,不知道何年何月才能支持。】

如果你付费平直一个主题,那么在你的主题设计者对你的主题升级之前,你还要等多久呢?要花费你多少钱呢?你的主题设计者还在做这行的生意么?

幸运的是,你可以自己更新你的主题

也不是什么难事。在你进行任何改变之前,我建议你复制一份你使用的主题文件。如果升级中出现任何错误,你无法找到错误的话,你可以删除主题,用你备份的文件来替代。只要备份 WordPressWP-CONTENTThemethemename 目录即可。

【译者注:这里有个错误,目录位置应为 wordpresswp-contentthemesthemename 。另外,本文介绍的仅仅是主题的更新。在你升级 WordPress 2.3 之前,请务必进行全面备份!】

既然你阅读本文,我就假设你对于主题内部的工作并不熟悉。我将简单地介绍下 The Loop (循环),然后解释如何将标签集成到你的主题里。

The Loop 是指你的博客里控制显示信息的 PHP 代码。如果你有兴趣看看纯粹的代码是让 WordPress 工作的话,我这里有一个完整的未加样式的 WordPress 主题 skeleton 。如果你打开 INDEX.PHP 文件,你就会看到 WordPress 使用 PHP 命令来读取和显示信息,包括标题,作者,日期,和评论数目。主题的作者通过 The Loop 来设置布局,相关的样式信息,这样原本纯粹的信息显示就变成了华丽的、格式漂亮的博客页面,包括了颜色,图片和很好的设计结构。

The Loop 代码看起来是这样的:

  1. <?php while( have_posts() ) : the_post(); ?>
  2. <div class=”post” id=”post-<?php the_ID(); ?>”>
  3. <h2><a href=”<?php the_permalink() ?>” rel=”bookmark” title=”Permanent Link to <?php the_title(); ?>”>
  4. <?php the_title(); ?></a></h2>
  5. <?php the_category( ‘, ‘ ); ?> <?php the_author(); ?> <?php the_time(‘F jS, Y’); ?>
  6. <?php edit_post_link(‘Edit’,’ ‘,”); ?> <br/> <?php comments_popup_link(‘No Comments’, ‘1 Comment’, ‘% Comments’); ?>
  7. <?php the_content(); ?>
  8. </div>
  9. <?php endwhile; ?>
添加标签只需要在 The Loop 内添加一行命令

找到你的 WordPressWP-CONTENTThemesthemename 目录,你将看到这两个文件:

INDEX.PHP

SINGLE.PHP

这个 INDEX 文件是 WordPress 主要页面。当有人访问你的博客主页的时候,这个页面被加载。这个文件调用 header(页眉),footer(页脚),和 sidebar(侧边拦)文件。它还包含 The Loop。这是我们要添加标签调用函数的地方。插入标签显示函数到你的文章只需要在 The Loop 内添加一个命令:

  1. <?php the_tags(‘before’, ’separator’, ‘after’); ?>

Before,Separator 和 After 分别用你希望在标签行里显示的文字代替。如果你想要在文章内容后面、“Pervious”链接前面显示标签,只要将上面这行代码复制到紧挨下面这行语句后面即可:

  1. <?php the_content(); ?>

你也可以将这句放到别的地方。在下面的截屏,我将命令添加到了评论后面。WordPress 的接口函数都有很容易理解的名字,因此你很容易就能理解每句代码。

添加标签前:

WordPress Tags

添加标签后:

WordPress Tags

SINGLE.PHP (通常)是同 INDEX.PHP 文件是一样的,只不过它只显示特定文章,并不需要执行 Loop (循环)。除非你的主题对独立文章和主页使用不同的样式。因此,你也应该将标签放到 Single.php 完全相同的地方。只需找到和 INDEX.PHP 文件内相同的代码,将标签放上即可。

标签云

标签云功能也已添加(到 WordPress 2.3 中)。有些类似于 Flickr 风格,最流行的标签,显示的字体越大。标签云显示你的博客使用全部标签,而不是某篇文章使用的标签,因此,添加一个 Widget 或到页脚比放到 Loop(循环) 内更好。下面的例子仅仅为了示范,将标签云放在了一篇文章后面:

WordPress Tags

如果你想要创建一个包括标签云的侧边拦 Widget ,你要先安装 Executable PHP Widget 或类似功能的插件,允许你在 Widget 内运行 PHP 代码。插件激活之后,打开你的 Widget 菜单,添加一个 PHP 代码的 Widget。可以随便起个名字,然后再主窗口添加如下代码:

  1. <?php wp_tag_cloud(‘smallest=8&largest=36&’); ?>

这个标签云将显示你的博客使用的全部标签,按照名字排序,使用最少的标签 8pt字体,使用最多的标签 36pt 的字体。更多定义标签云的细节可以访问这里

如果你想要在页脚添加标签云,你需要编辑 WordPressWP-CONTENTThemesthemenameFOOTER.PHP 。和 index 文件一样,你只需要添加代码到合适的位置即可。放在页脚的时候,比放在 index 内变化稍微多一些,因此我无法精确地告诉你放在什么地方。像前面所说,WordPress 的接口函数很容易理解,因此,想把代码放到什么地方,就放什么地方。如果放错了,你可以很容易地撤销、重新放置。

一点也不难吧,是
是?我希望我已经帮你准备好使用 WordPress 2.3 这个很棒的功能。差不多所有的搜索引擎优化专家都推荐使用标签。标签添加到 WordPress 2.3 之后,不再只是之前那些使用插件的用户,每个用户都将从中受益。

补充:如何添加 WordPress 2.3 标签到你的主题第二部分,回答了下面网友提出的一些问题。

原文出处: http://richgilchrest.com/how-to-add-wordpress-23-tags-to-your-current-theme/

中文翻译: http://wordpresschina.org/how-to-add-wordpress-23-tags-to-your-current-theme-9/

 

Technorati 标签: , , , ,

Tagged with: , , , ,

让Live Writer支持WordPress 2.3 的tag

Posted in Uncategorized by chuanliang on 2007/10/05

1、MetaWeblog API基础知识

    MetaWeblog API 是一套基于XML-RPC通信协议的编程接口,是诸如Wordpress这样的Blog应用程序对外接口国际规范标准,通过MetaWeblog API,Blog应用可以对外公布Blog 提供的服务,从而允许外面的程序能取得和设置blog文章的文本或属性。目前大部分流行的Blog程序和工具都支持MetaWeblog API。

  • MetaWeblog API的应用场景

    通过电子邮件方式发布Blog(比如Windows Live Spaces、Office 2007的电子邮件发布功能)

    通过客户端(比如Live Writer、IM) 来发布Blog

    通过社会化网络(例如Facebook、、Twitter、Myspace、douban)来发布Blog

    通过社会化书签(例如delicious、google docs)把收藏的网页、文档定时发布到Blog

    通过Mahsup应用接口把聚合的内容发不到Blog

  • MetaWeblog API的参考意义

   对于搭建基于互联网的应用,要形成一个具有核心竞争力的生态社区,必须整合价值链上下游的各种资源到社区中来,核心策略之一是要推行“平台化战略”(平台之争-从Facebook Platform谈起)而非“一个网站,一个应用”。在社区价值链中包括面向最终用户、外部合作伙伴站点、联盟站点、最终开发人员等不同角色,这些角色对社区有不同的需求,这些需求需要在技术层面体现出来。因此除了在完成内部核心功能外,对外接口的统一性、开放性、集成性至关重要,平台只有通过“整合和被整合”的双向互动,才能够调动价值链的其他角色参与到平台功能的完善、推广。

    因此MetaWeblog API、amazon 的Web Service、Goolge 的API都是值得在搭建互联网应用时候借鉴的。

  • 一些关于XML-RPC和MetaWeblog API的资料:

    基于XML-RPC的BloggerAPI学习

    http://www.xmlrpc.com/

    RFC: MetaWeblog API

    http://www.duduwolf.com/post/41.asp

   Windows Live Spaces MetaWeblog API

 

2、采用Wordpress 2.3缺省的tag支持

    WordPress 2.3已经缺省提供了对tag的支持,因此如果要求不高,倒也不再用诸如Ultimate Tag Warrior 3这样的工具。Live Writer缺省情况下已经对Wordpress提供较好的支持(应该是对Wordpress 2.2.x版本),但在Live Writer所使用的Wordpress的MetaWeblog API中尚未包括对mt_keywords (tagging)的支持。由于Wordpress服务器端采用XML manifest来描述其提供的服务,Live Writer与Wordpress服务器端通过XML-RPC接口获得Blog提供的功能支持,因此可以在Wordpress的服务器端加上mt_keywords 的XML manifest文件即可。

    方法如下:

  • http://trac.wordpress.org/ticket/5023下载wlwmanifest.zipwlw-head.zip两个文件
  • 上传wlwmanifest.zipwlw-head.zip两个文件到服务器上Wordpress的安装根目录下,与wp-includes同级
  • unzip wlw-head.zip;unzip wlwmanifest.zip
  • cp “wlwmanifest Folder/wlwmanifest.xml” .
  • rm -rf “wlwmanifest Folder” wlw*zip
  • 下载注册表工具WriterKeywordsEnable.zip。关闭Live Writer,运行WriterKeywordsEnable,以打开Live Writer的Keywords功能如果有多blog,运行时候选中自己wordpress类型的blog。也可以直接修改注册表方式来达到此目的。
  • 在编写blog时候,点击“设置发布日期”旁边“显示属性”的按钮(向上的双箭头),即可以设定keywords(MS对tag的叫法)。

reg

jj

  • 参考资料:

   Utility: Enable keywords/tags for Windows Live Writer

   How to make WordPress’ new Tags work with Windows Live Writer

   Tags! And Categories

3、采用Ultimate Tag Warrior 3的tag支持

   如果采用Ultimate Tag Warrior 3来作为Wordpress的tagging工具,则可以参考如下文档,说的很清楚。

    Ultimate Tag Warrior on WordPress and Windows Live Writer

  在使用前,应该也需要运行WriterKeywordsEnable.zip工具,由于采用Wordpress 2.3缺省的tag支持,因此没有试用此种方法。

dreamhost虚拟主机购买记

Posted in Uncategorized by chuanliang on 2007/10/03

在dreamhost上购买了一个虚拟主机,记录一下整个过程,供有一天成为写传记时候,让传记作者帮写回忆录时候说明是多么的与时俱进,竟然冒着被河蟹掉的危险,突破重围,投奔革命圣地。(呵呵,my god,伟大任务的传记就是这样出炉的)!

1、选择篇

简单看了hostgator,ixwebhosting,godaddy,bluehost后还是决定在hostmonster.com 和dreamhost.com 之间选择,也无什么具体原因,主要没有兴趣一个一个比较价格、服务等,查看各种评论和比较,更加迷茫,还是顺便选择一个吧,免得心烦。

最后在hostmonster和dreamhost之间选择了dreamhost,主要是觉得hostmonster一年的费用$83.4的价格比dreamhost的$22.4(使用Promo Code: adminis97)贵了一大截。hostmonster两年包费用为$4.95*24=118.8,dreamhost两年包的费用为:$214.8-$97=$117.80。价格上还是dreamhost占优。

2、支付篇

直到注册时候才发现dreamhost.com只支持google checkout,晕倒,前面看其他帖子明明说dreamhost.com支持paypal,应该是最近与google达成了所谓的“战略合作伙伴”。只好在注册一个google checkout,只不过也好,也体验一下这些支付厂商的服务细节。

  • 为何一定要用第三方支付,而不直接使用信用卡支付?

直接用信用卡支付要向虚拟主机提供商提供自己信用卡的号码、有效日期、CVC等敏感信息,这些信息如果泄露出去,对于信用卡资金的安全、用户私人信息等都有重大的安全漏洞。通过第三方支付工具,这些敏感信息只驻留在第三方支付厂商处。支付时候虚拟主机厂商与支付厂商间只传递订单金额(Amount)、商家交易号(Transaction ID)、支付商订单号(Order)、支付时间等基本信息,并不存在泄露用户信用卡相关信息,因此相对安全。另外如果要评比虚拟主机提供商和像google checkout、paypal这样的第三方支付商的可信度,我宁愿选择第三方支付商,毕竟支付的专业性、安全性是他们的立足之本。

注册过程倒没有什么特别的,只不过在选择Location时候还没有China或PRC可供选择,只能选择Hong Kong了事。我自己用的是招行的Visa信用卡,注册验证过程倒比paypal便捷。

checkout

另外注册时候要求填入信用卡的验证号CVC(Card Verification Code),是指信用卡背面的签名最后的3位的数字。

cvc_visa

PS.

google checkout的帐号应该是根据google account生成的,从设计上来说对应客户(customer)-用户(user)-帐户(account)这电信所谓的三户模型而言,account=google checkout ,user=google account。

3、注册篇

3.1、折扣

注册前最好google一下,看有无最新的折扣信息。 google关键词“Dreamhost promo code”,找个折扣号。

注意不要使用google.cn,出来的很多垃圾信息。可以使用http://www.google.com/ncr 或者http://www.google.com/search?hl=en&q=Dreamhost+promo+code

3.2、注册

注册过程倒没有什么技巧,主要有几个地方备忘一下:

“Now for the up-sell:”中的所有东西在注册时候时候都可以不选择,尤其是SSL Secure Certificate,注册时候还以为必须选择此项,才能够使用诸如F-Secure SSH登录,由于必须同时选择“Unique IP”服务,觉得太贵,也就没有选择,打算就telnet+ftp方式进行维护算了,后来发现其实仍然可以用SSH方式进行登录上传文件。SSL协议支持两种传输过程,需要用户验证的双向验证传输(双向认证,需要客户端安装数字证书),和不需要用户验证的单向验证传输(服务器端认证,不需要客户端安装证书)。此处的“SSL Secure Certificate”应该是指“不需要用户验证的单向验证传输”。

  • 关于Promo Code or email of who referred you:

要看仔细了,要在此处输入Promo Code。我使用的是“adminis97”,可以在原有方案折扣的基础上享受$97的优惠。

4、开通篇

4.1、DreamHost Account Approval Notification

dreamhost的开通速度还不错,我付款后,大致才过了30分钟就收到了开通信“DreamHost Account Approval Notification!”,内容如下:

(Account #123456)
*** Please visit the Wiki for help getting started :
http://wiki.dreamhost.com/index.php/Special:Search?fulltext=Search&search=getting%20started
Hello xxx,
This is just a note to let you know that your account with DreamHost has
been approved! Below you will find a summary of relevant services for
your account that will be activated within the next 30 minutes:
Domain yeeach.com : Web service on dione.dreamhost.com
 FTP User 'xxx', password 'xxx' on machine dione.dreamhost.com
Mail User 'xxx', password 'xxx'
As each of these services is activated, you will receive another email
that more fully details its use.
If you are transfering an existing domain registration to DreamHost for
hosting - or have not yet registered your domain and plan to do so with a
registrar other than DreamHost - remember to use the following domain name
server information when submitting your registration/transfer:
 Primary name server: ns1.dreamhost.com 66.33.206.206
 Secondary name server: ns2.dreamhost.com 208.96.10.221
 Tertiary name server: ns3.dreamhost.com 66.33.216.216
 Finally, you can administer virtually every aspect of your account from
the web panel at:
 https://panel.dreamhost.com/
Your email: xxxx@xx.com
Password: xxx
 Any questions about your account can be submitted from the 'Support'
area of our web panel.
 Thank you for choosing DreamHost!
 Sincerely,
The Happy DreamHost Approval Team
 --
support@dreamhost.com
https://panel.dreamhost.com/
"We host your dreams"
FAX: +1-714-990-2600

4.2、管理控制台

https://panel.dreamhost.com/
  • 查看订购的服务:
查看invoice:https://panel.dreamhost.com/index.cgi?tree=billing.invoice&
域名管理:https://panel.dreamhost.com/index.cgi?tree=domain.manage&
  • 安装应用:
dreamhost缺省提供了日常建站需要的各种应用(包括:wordpress、joomla、Mediawiki等),再不用一个一个下载、上传、安装了。
这些应用可以通过One-Click Installs安装:
 https://panel.dreamhost.com/index.cgi?tree=goodies.installer&
mysql管理:
 https://panel.dreamhost.com/index.cgi?tree=goodies.mysql&
crontab:
 https://panel.dreamhost.com/index.cgi?tree=goodies.cron&
subversion:
 https://panel.dreamhost.com/index.cgi?tree=goodies.svn&
Jabber:
 https://panel.dreamhost.com/index.cgi?tree=goodies.jabber&
  • 修改缺省密码:
由于缺省生成ftp、mail的密码为随机密码,因此把这些改成自己熟悉的安全密码。
  • 常用地址备忘:
 1、SSH或telnet、ftp地址:虚拟主机名称,例如www.yeeach.com 或dione.dreamhost.com
 dione.dreamhost.com 是虚拟主机的实际存放地址,后端应该有负载均衡、cluster,能够根据用户id负载到相应的虚拟主机上,
 2、管理终端登录界面:https://panel.dreamhost.com/
 3、wordpress管理登录界面:http://www.yeeach.com/wp-admin


Technorati 标签:,,,,,,