月度归档:2008年11月

免费的wordpress博客服务推荐

    现在基本上只要是大点的网站都会提供博客服务,要找一个免费的博客空间实在是太容易了,只是大多博客服务都并不是太好用。基本上说来是各有各的不好。就拿我现在用的MSN Space来说速度慢也就算了,界面还不怎么样,可定制性也一般。
    在我看来,博客服务要是能使用目前使用最广泛的wordpress自然是最好的了,只是wordpress的官网被彻底的封死了,国内免费的也不多。国内比较有名的wordpress服务商可能要算是donews了,只是以前有朋友用的时候博客出过好几次问题,还被莫名其妙的删了好几次。这样的服务态度,我是不敢再用了。
    最近想和朋友整个关于widnows mobile的协作博客Hi WM,所以又去找了一圈,发现国内还是有不错的wordpress服务的。
    优博网(http://yo2.cn/)提供了免费的wordpress服务。此外优博网内置了数百个wordpress主题。不过即使这么多主题里都没有让你满意的,你还可以上传自己的主题,或是将内置的主题私有化后再进行编辑(我的就编辑过了)。虽不支持上传自己的插件,但内置的wordpress已经挺丰富的了。yo2会为你的博客提供一个二级域名,不过如果你觉得这还不够帅,可以为自己的博客绑定一个顶级域名(这个服务得收费)。访问速度方面我觉得一般,还成(经过一段时间的使用,感觉速度一般,有时候似乎非常的慢)。至于稳定性嘛,还有待观察,昨天就出现了用IE无法打开的情况。
    虽然我感觉yo2还不错,不过这个博客是不会搬过去了,毕竟要将这些数据倒过去还挺麻烦。将就着用了。
    最后,给我的新博客做个宣传吧。

Hi WM 是一个专门关注 Windows Mobile 手机相关新闻和应用的团队 Blog。

如果你和我们一样,也有一款 Windows Mobile 手机,并愿意分享你对 WM 的感受,可以通过 这个地址 来发表。

Nutch部署及相关问题(中文乱码等)修正

Nutch介绍

Nutch是一个开源的WEB搜索引擎,能提供高质量的搜索服务。
对于一些内部系统或中小型网站来说是一个不错的全文搜索解决方案。

Nutch的部署

最新版本的Nutch可从Nutch的官网获取。下载后直接解压就可以进行使用。 由于我使用的是windows系统,这里以windows下部署进行介绍。

Nutch爬虫设置

Nutch本身包含一个对目标站点进行索引的爬虫和一个提供搜索用的web界面。在查询界面可以使用前需要先设置Nutch爬虫对目标站点进行抓取。
部分配置文件的解释:

  • nutch\conf\nutch-default.xml
    • 设置http.agent.name,如果http.agent.name为空,爬虫将无法正常启动。这里可以设置任意你喜欢的名字,比如设置为vik-robot。
    • indexer.mergeFactor/indexer.minMergeDocs这两个值都改成500。这两个参数值越大,性能越高,所需要花费的内存也需要相应的增加。如果设置过大,可能出现内存溢出。就实际使用情况,在当前参数下,内存的最大使用量为3xxM。
    • http.timeout表示最大超时等待时间,如果访问的连接长时间没有反应将丢弃。

    • db.max.outlinks.per.page该参数表示单个页面最多支持多少个外连的连接,如果过多将不抓取。 如果是自己的内部系统那就设置一个任意大的数吧。
    • nutch-default.xml 解读
  • 创建文件nutch\urls,并填入爬虫的起始url。比如:

    http://mysite.com/

  • nutch\conf\crawl-urlfilter.txt 该文件用于设置需要索引的url的过滤关系。每行一个过滤条件,表示不包含该url,+表示包含。

    • [?*!@=],该行表示对所有动态url都不抓取。 现在的大部分系统都会有很多动态url,该过滤条件很可能使你抓不到任何内容。
    • 针对各系统分别设置url的过滤关系。具体的设置方法得根据各自应用系统的不同而不同,这里以广为流行的论坛discuz为例。在这url过滤将只抓取板块列表和帖子内容。

      # skip file:, ftp:, & mailto: urls
      -^(file|ftp|mailto):

      # skip image and other suffixes we can't yet parse
      -\.(gif|GIF|jpg|JPG|png|PNG|ico|ICO|css|sit|eps|wmf|zip|ppt|mpg|xls|gz|rpm|tgz|mov|MOV|exe|jpeg|JPEG|bmp|BMP)$

      # skip URLs containing certain characters as probable queries, etc.
      #-[?*!@=]

      # skip URLs with slash-delimited segment that repeats 3+ times, to break loops
      -.*(/.+?)/.*?\1/.*?\1/

      # accept hosts in MY.DOMAIN.NAME
      #+^http://([a-z0-9]*\.)*MY.DOMAIN.NAME/
      #discuz
      +^http://mysite.com/discuz/index.php$
      +^http://mysite.com/discuz/forumdisplay.php\?fid=\d+$
      +^http://mysite.com/discuz/forumdisplay.php\?fid=\d+&page=\d+$
      +^http://mysite.com/discuz/viewthread.php\?tid=\d+&extra=page%3D\d+$
      +^http://mysite.com/discuz/viewthread.php\?tid=\d+&extra=page%3D\d+&page=\d+$
      # skip everything else
      -.

  • nutch\conf\regex-urlfilter.txt 我不清楚该配置文件是否有起作用,但建议注释掉其中的,-[?*!@=]。
执行爬虫
  • 由于Nutch的脚本采用的是linux下是shell,在windows下需要使用cygwin来执行。至于cygwin的具体使用…,这个到网上找其他文章吧。cygwin官网

  • 进入Nutch目录后执行命令 sh bin/nutch crawl urls -dir crawl -threads 2 -depth 100 -topN 1000000 >& crawl.log 完成网站的抓取和索引。

    • threads 抓取网页的线程数,理论上线程数越多速度越快,但过多的线程会给服务器带来比较大的负担,影响正常使用。
    • depth 页面的抓取深度。
    • topN 每层最多抓取的页面数
    • crawl.log 日志存放文件
  • 执行后会在Nutch的根目录下生成一个crawl目录,里面存放的就是索引文件。
  • 注意:执行命令前请先删除已存在的crawl文件夹。如果crawl文件已经存在,命令将无法正常执行。
  • windows定时任务的建立

    Nutch的索引建立好后并不会自动更新,需要使用windows的计划任务建立计划任务来定期更新索引。

    • 具体做法待续

    WEB搜索界面的部署

    Nutch使用Java开发,其WEB界面需要跑在相应的web容器中,这里采用的是tomcat6。

    部署到tomcat
    1. 复制nutch-0.9.war到tomcat6\webapps,运行tomcat6\bin\startup.bat启动tomcat。
    2. tomcat将自动对war文件进行解压。修改文件tomcat6\webapps\nutch\WEB-INF\classes\nutch-site.xml,设置nutch的索引文件位置。

      <?xml version="1.0"?>
      <?xml-stylesheet type="text/xsl" href="configuration.xsl"?>
      <configuration>
      <property>
      <name>searcher.dir</name>
      <value>D:\AppServ\nutch\crawl\</value>
      </property>
      </configuration>

    3. 重启tomcat并测试搜素功能,如果没有意外,服务将正常运行。
    相关问题修正
    • 搜索页面上的部分中文出现乱码。该问题主要由jsp:include引起。将被包含文件nutch\zh\include\header.html由UTF-8转换为GBK,修正该问题。
    • 搜索中文出现乱码。修改tomcat配置文件tomcat6\conf\server.xml。增加URIEncoding/useBodyEncodingForURI两项。

          <Connector port="8080" protocol="HTTP/1.1" 
      connectionTimeout="20000"
      redirectPort="8443"
      URIEncoding="UTF-8"
      useBodyEncodingForURI="true"/>

    • 网页快照乱码问题修正。修改页面tomcat6\webapps\nutch\cached.jsp,将content = new String(bean.getContent(details))修改为content = new String(bean.getContent(details),"utf-8")。
    • apache整合。修改apache配置文件\conf\httpd.conf,增加如下配置

      LoadModule proxy_module modules/mod_proxy.so
      LoadModule proxy_http_module modules/mod_proxy_http.so
      <IfModule mod_proxy.c>
      ProxyPass /nutch http://localhost:8080/nutch
      ProxyPassReverse /nutch http://localhost:8080/nutch
      </IfModule>

    • url问题。在和apache整合后会出现url不正确的问题。主要表现为用户看到的url的前缀为ProxyPass中配置的url。目前还没有比较好的解决方案,只能手动修改所有问题jsp页面。使用命令findstr /s requestURI *.jsp查找出所有问题页面。在String base = requestURI.substring(0, requestURI.lastIndexOf(‘/’));后面增加base = base.replace("localhost:8080", "mysite.com");,将错误的url替换为正确的url地址。

    • 删除页面tomcat6\webapps\nutch\cached.jsp,关闭网页快照功能。由于部分页面,当前用户可能无访问权限,关闭快照功能。
    中文问题修改

    Nutch默认支持中文搜索,只是Nutch对中文采用安字进行分词,例如搜索“中国”不使用双引号,将返回所有包含“中”和“国”的网页。为方便使用,系统自动为搜索内容添加双引号。

    • 修改文件tomcat6\webapps\nutch\search.jsp。增加格式化搜索字符的函数,同时对queryString进行处理。

      <%!  
      public static String format_query_str(String s) {
      s = s.replace("”", "\"").replace("“", "\"");// 处理中文符号
      if (s.indexOf("\"") > -1) {// 如果包含"则不继续进行处理
      return s;
      }
      String[] ss = s.split(" ");
      String ret_s = "";
      for (String str : ss) {
      if (str.trim().equals("")) {
      continue;
      }
      if (str.indexOf("-") == 0) {
      str = "-\"" + str.substring(1) + "\"";
      } else {
      str = "\"" + str + "\"";
      }
      ret_s += str + " ";
      }
      return ret_s.trim();
      }
      %>
      queryString = format_query_str(queryString);

    搜索帮助
    • 使用方法和常见的搜索引擎类似,支持多关键字,多个关键字之间使用空格进行分割。
    • 对中文采用安字进行分词,因此对中文搜索时最好加上双引号。例如搜索“中国”如果不使用双引号,将返回所有包含“中”和“国”的网页。
    • 可以在一个词前面加减号丛而禁止它出现在搜索结果中, 例如, 搜索football -nfl 会找到讨论football, 但不出现"nfl"的网页。
    • 搜索英文单词不区分大小写, 因此搜索NuTcH 等同于搜索 nUtCh。

    相关网站

    Trac部署说明

    Trac介绍

    Trac是一个项目管理工具,同时提供了良好的插件接口,可以以Trac作为平台开发自己的基础应用。

    部署

    获取相关资源

    Trac使用python编写,首先需要python的支持。Trac使用GenShi作模板引擎,在安装Trac前需要先安装GenShi。Trac的用户管理非常的难用(需要使用apache的权限设置),通过使用第三方扩展AccountManagerPlugin来方便用户的管理。
    相关的资源下载地址如下。

    安装/部署相关组件
    • 进入GenShi/Trac的根目录,使用setup.py install对GenShi/Trac进行安装。

    • 进入AccountManagerPlugin根目录使用setup.py bdist_egg命令生成egg。

    配置Trac环境

    在安装好Trac之后,需要使用Trac的管理命令对Trac环境进行初始化。

    • 使用命令trac-admin %prjpath% initenv初始化Trac环境,其中%prjpath%为您指定的数据存放的位置。

    • 初始化好Trac环境后使用tracd –port 9000 %prjpath%命令及可通过Trac的内置服务器启动Trac。此时可以以匿名用户的方式访问Trac。

    • 在初始化好Trac环境后需要继续完成Trac的用户认证配置。将前面AccountManagerPlugin生成的egg文件复制到%prjpath%/plugins,增加AccountManagerPlugin插件。

    • 修改Trac的配置文件%prjpath%\conf\trac.ini,增加如下内容。

      [components]
      ;关闭Trac自带的认证模块
      trac.web.auth.LoginModule = disabled
      ;关闭注册功能
      ;acct_mgr.web_ui.registrationmodule = disabled
      [account-manager]
      password_store = SessionStore
      hash_method = HtDigestHashMethod

    • 通过AccountManagerPlugin的注册功能,注册一个Trac帐户admin,并使用命令trac-admin %prjpath% permission add admin TRAC_ADMIN将该用户设置为管理员。

    • 使用新增加的管理员帐户登陆Trac,就可以顺利的进入Trac的管理后台对Trac进行管理。
    和Apache的整合

    Trac和Apache的整合可以使用mod_python/wsgi等,具体方法,请查看Trac官方的相关文档。

    Awstats部署说明

    Awstats介绍

    AWStats是在Sourceforge上发展很快的一个基于Perl的WEB日志分析工具。通过分析服务器的访问日志,可以了解服务器的使用情况,方便服务器的维护和管理。

    基础安装

    1. AWStats使用perl编写,因此需要perl的环境支持。对于windows用户,下载ActivePerl,并安装。

    2. AWStats官网获取最新的AWStats。

    3. 将AWStats解压,并进入目录awstats\tools,执行命令perl awstats_configure.pl,按照提示完成配置(依次输入apache位置/apache配置文件位置/统计站点的域名)。
    4. 修改Apache配置文件Apache2.2\conf\httpd.conf,找到Awstats新添加的配置(配置文件的最下面),将里面的文件位置换成AWStats的实际位置。
    5. 修改文件awstats\wwwroot\cgi-bin\awstats.pl,将第一行的perl路径换成实际位置(如:#!c:\perl\bin\perl.exe)。
    6. 重新启动apache,浏览器中输入http://mysite/awstats/awstats.pl?config=mysite,查看AWStats是否正常运行。

    日志分析的相关配置

    在完成基础配置后AWStats已可以正常运行,但由于没有进行日志分析,将看不到任何的统计信息。

    1. Apache默认只使用一个日志文件,如果日志文件太大,将给日志分析带来极大的负担。修改Log配置,将Log配置修改为CustomLog "|bin/rotatelogs.exe -l logs/access%Y-%m-%d.log 86400" combined。每天生成一个文件。

    2. Apache的日志文件格式LogFormat,如果包含LogFormat "%h %l %u %t \"%r\" %>s %b" common,则注释掉,不然日志信息中将不包含User-Agent信息(浏览器/操作系统类型等)。

    3. Awstats的站点配置文件在awstats\wwwroot\cgi-bin,配置文件名字为 awstats.你的站点名字.conf(如:awstats.mysite.conf)。
    4. 修改LogFile配置Apache的日志位置和文件名的格式,文件格式需要和apache的日志文件格式相匹配。如:LogFile="D:/AppServ/Apache2.2/logs/access%YYYY-24-%MM-24-%DD-24.log"。这里表示日志格式为2008-10-10.log,-24表示24小时以前,也就是前一天日志文件。

    5. LogFormat默认为1,如果Apache日志中没有包含User-Agent信息,则需要将LogFormat设置为4。

    6. 进入目录awstats\wwwroot\cgi-bin,执行脚本awstats.pl -config=mysite -update -lang=cn完成日志分析。如果日志分析成功,重新进入AWStats,将可看到服务器的访问信息。
    7. 在windows的计划任务中创建任务awstats.pl -config=mysite -update -lang=cn,设置每天晚上对前一天的日志进行分析。

    Awstats访问权限设置

    Awstats默认情况系任何人都可以访问。可以通过apache限制Awstats限制只有登陆的用户才能访问。

    1. 在Apache的配置文件,Awstats的目录权限配置中添加访问权限控制。

      <Directory "D:/AppServ/awstats/wwwroot">
      Options None
      AllowOverride None
      AuthName "admin onssw Access"
      Order allow,deny
      Allow from all

      AuthType Basic
      AuthName "Restricted Files"
      AuthUserFile D:/AppServ/Apache2.2/conf/passwords
      Require user admin
      </Directory>

    2. 使用Apache2.2\bin\htpasswd.exe生成密码问题。htpasswd -c D:\AppServ\Apache2.2\conf\passwords admin。

    3. 在配置好Awstats的访问权限后,每次访问Awstats将被要求登陆。输入用户名admin和刚设置的密码,完成登陆验证。