和谐社会不需要身体健康么 关于compass,lucene高亮的比较完美的解决方案
Sep 07

前两天帮5iditu.com升级了一下,升级到最新版本了。他的主机是windows了。基本上没有太大的问题,不过lucene的索引问题搞不定,很是诡异,不知道为什么。不知道虚拟主机是如何配置的,今天又有一个网友问到如何升级,这都怪我没有在1.5发行版本里面加上升级的tutorial。
这里说一下如何升级,首先请备份1.0的所有文件,然就用1.5版本的文件替换原来的,建议先删除原来的文件,如果没有删除请记得覆盖之后删除lib文件下的freemarker2.3.3.jar,1.5版本升级了freemarker,如果不删除旧版可能会出现问题。

覆盖文件之后你需要将原来的siteConfig.xml覆盖回去,至于config.properties文件不要用原来的文件覆盖,请对照原来文件修改数据库连接,email配置。

然后启动服务器。服务器启动之后你会发现首页没有文章了。因为1.5版本修改了数据结构,添加了字段,你需要执行一下的sql语句。

mysql> update MYBLOG_ENTRY set entryStatus='publish';
mysql> update MYBLOG_ENTRY set type='post';
mysql> update MYBLOG_COMMENT set status='approved';
mysql> alter table MYBLOG_ENTRY drop draft;


这样就可以了,再reload一下,或者重启服务就ok了。这次你可以添加自己的页面了。它将会出现在你的菜单上。

ps: Myblog1.5下载 http://myblog.googlecode.com/files/myblog-1.5P1.war


Like others

43 Responses to “如何将Myblog1.0升级到Myblog1.5”

  1. start Says:

    呵呵 莫多!真的很快哦~!

  2. 这个Blog是开源的软件吗? Says:

    好象没找到源码的下载地址~但我是从www.open-open.com过来的,怎么感觉不象个开源项目呢?

  3. 莫多(somebody) Says:

    这个blog确实是开源的。open-open上面也给出了地址的,这个是myblog作者的blog,也是myblog的演示站点。
    项目地址是:http://code.google.com/p/myblog

  4. Mead Says:

    您好,请教几个问题!
    1·日志能够修改和删除吗?
    2·有源代码吗?我买的虚拟主机jdk版本不一致,要重新编译

    blog写的很不错,以后要向你多多学习!
    非常感谢!!!laiqinyi@msn.com

  5. 莫多(somebody) Says:

    1.日志可以修和删除。
    2.有源代码的,http://myblog.googlecode.com/svn/branches/myblog-1.5/ 这个是1.5分支的代码。

  6. 这个Blog是开源的软件吗? Says:

    有多用户版吗?这个好象只是个人的博客……

  7. ZZZzzz Says:

    天...我的gmail收到一堆回复的spam...请把我之前的邮箱从邮件列表删除吧

  8. 莫多(somebody) Says:

    是的。现在还只是个人blog,
    刚才有人狂发spam。晕死了。

  9. 秦歌 Says:

    呵呵,不错,不错,有时间在模板上也下些功夫,就更牛了。

  10. Sutra Says:

    这里的回复都是自动收到右键的吧?用户没法选择吧。

  11. kevinwu Says:

    有没有做成war包啊?想要自己的电脑上看一下效果。

  12. 莫多(somebody) Says:

    是的回复都是自动收到邮件的,设计的时候加了个是否订阅的字段,不过还没有实现.
    to:kevinwu,你下载的就是war包.

  13. jackdraw Says:

    请问一下你这个blog是基于appfuse的基础上开发的吗?

  14. jackdraw Says:

    此blog是基于appfuse上开发的吗?

  15. 莫多(somebody) Says:

    不是的。只是后台用的是appfuse里面的theme。

  16. jackdraw Says:

    提一点小小的建议,可以不可以把这个就用myeclipse中的j2ee工程,不要用ant可能会更方便一些,跟ide结合的更好一些,现在的项目反正也不能用到其他的ide还不如刚脆用单纯的就可以了,另外blog的话少了流量这些统计总是不行吧
    另外我在这里留言的时候好像也没有什么提示,有没有成功,在上面也看不到,好像存在延时的问题,是不是留言还要审核 ?

  17. jackdraw Says:

    另外lucence的搜索分词还是不够

  18. Sutra Says:

    To jackdraw:
    我们没有myeclipse的授权。

    To jackdraw:
    加上中文分词插件就好了。

  19. Sutra Says:

    这页评论的排序怎么回事?有2个一直占据最后。

  20. 莫多(somebody) Says:

    to:jackdraw 你的留言已经显示了。一个小blog,我想还是不要用myeclipse这种牛刀。如果你check代码的话,什么插件都不需要的,只要运行test/java/com/jckcn/tomcat下的MyblogTomcatLauncher就启动内置的tomcat了,根本用不着发布。debug也非常的方便。用ant是为了发布的时候方便打包用的,还有就是ant来native2ascii中文。

    你的留言已经在上面显示了,只是最后有两条比较诡异的评论一直在下面。这个我要查一下为什么。

    总之非常感谢你的建议。 :)

  21. 莫多(somebody) Says:

    To jackdraw:
    流量其实有统计的。不过没有做分析。
    呵呵。先把基本的功能做好了再说。
    如果你有什么好的想法,还请告诉我,谢谢 。

  22. 莫多(somebody) Says:

    查到诡异的原因了。算是个bug吧。忘了加上order by

  23. daniel Says:

    type Exception report

    message 

    description The server encountered an internal error () that prevented it from fulfilling this request.

    exception 

    javax.servlet.ServletException: get(name) failed on instance of com.jdkcn.domain.Entry$$EnhancerByCGLIB$$b2ed5012
    org.springframework.web.servlet.FrameworkServlet.processRequest(FrameworkServlet.java:408)
    org.springframework.web.servlet.FrameworkServlet.doGet(FrameworkServlet.java:347)
    javax.servlet.http.HttpServlet.service(HttpServlet.java:690)
    javax.servlet.http.HttpServlet.service(HttpServlet.java:803)
    com.jdkcn.web.filter.MessageFilter.doFilter(Unknown Source)
    org.tuckey.web.filters.urlrewrite.RuleChain.handleRewrite(RuleChain.java:130)
    org.tuckey.web.filters.urlrewrite.RuleChain.doRules(RuleChain.java:107)
    org.tuckey.web.filters.urlrewrite.UrlRewriter.processRequest(UrlRewriter.java:78)
    org.tuckey.web.filters.urlrewrite.UrlRewriteFilter.doFilter(UrlRewriteFilter.java:383)
    org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:71)
    org.springframework.web.filter.CharacterEncodingFilter.doFilterInternal(CharacterEncodingFilter.java:75)
    org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:76)
    org.tuckey.web.filters.urlrewrite.NormalRewrittenUrl.doRewrite(NormalRewrittenUrl.java:183)
    org.tuckey.web.filters.urlrewrite.RuleChain.handleRewrite(RuleChain.java:125)
    org.tuckey.web.filters.urlrewrite.RuleChain.doRules(RuleChain.java:107)
    org.tuckey.web.filters.urlrewrite.UrlRewriter.processRequest(UrlRewriter.java:78)
    org.tuckey.web.filters.urlrewrite.UrlRewriteFilter.doFilter(UrlRewriteFilter.java:383)
    com.jdkcn.web.filter.GZIPFilter.doFilterInternal(Unknown Source)
    org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:76)
    org.springframework.orm.hibernate3.support.OpenSessionInViewFilter.doFilterInternal(OpenSessionInViewFilter.java:174)
    org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:76)
    com.opensymphony.oscache.web.filter.CacheFilter.doFilter(CacheFilter.java:163)


    root cause 

    freemarker.template.TemplateModelException: get(name) failed on instance of com.jdkcn.domain.Entry$$EnhancerByCGLIB$$b2ed5012
    freemarker.ext.beans.BeanModel.get(BeanModel.java:223)
    freemarker.core.Dot._getAsTemplateModel(Dot.java:76)
    freemarker.core.Expression.getAsTemplateModel(Expression.java:89)
    freemarker.core.BuiltIn$existsBI._getAsTemplateModel(BuiltIn.java:636)
    freemarker.core.BuiltIn$existsBI.isTrue(BuiltIn.java:647)
    freemarker.core.IfBlock.accept(IfBlock.java:80)
    freemarker.core.Environment.visit(Environment.java:196)
    freemarker.core.MixedContent.accept(MixedContent.java:92)
    freemarker.core.Environment.visit(Environment.java:196)
    freemarker.core.IteratorBlock$Context.runLoop(IteratorBlock.java:172)
    freemarker.core.Environment.visit(Environment.java:351)
    freemarker.core.IteratorBlock.accept(IteratorBlock.java:95)
    freemarker.core.Environment.visit(Environment.java:196)
    freemarker.core.ConditionalBlock.accept(ConditionalBlock.java:79)
    freemarker.core.Environment.visit(Environment.java:196)
    freemarker.core.MixedContent.accept(MixedContent.java:92)
    freemarker.core.Environment.visit(Environment.java:196)
    freemarker.core.Macro$Context.runMacro(Macro.java:164)
    freemarker.core.Environment.visit(Environment.java:537)
    freemarker.core.UnifiedCall.accept(UnifiedCall.java:128)
    freemarker.core.Environment.visit(Environment.java:196)
    freemarker.core.MixedContent.accept(MixedContent.java:92)
    freemarker.core.Environment.visit(Environment.java:196)
    freemarker.core.Environment.process(Environment.java:176)
    freemarker.template.Template.process(Template.java:232)
    org.springframework.web.servlet.view.freemarker.FreeMarkerView.processTemplate(FreeMarkerView.java:269)
    org.springframework.web.servlet.view.freemarker.FreeMarkerView.doRender(FreeMarkerView.java:222)
    org.springframework.web.servlet.view.freemarker.FreeMarkerView.renderMergedTemplateModel(FreeMarkerView.java:181)
    org.springframework.web.servlet.view.AbstractTemplateView.renderMergedOutputModel(AbstractTemplateView.java:160)
    org.springframework.web.servlet.view.AbstractView.render(AbstractView.java:250)
    org.springframework.web.servlet.DispatcherServlet.render(DispatcherServlet.java:961)
    org.springframework.web.servlet.DispatcherServlet.doDispatch(DispatcherServlet.java:738)
    org.springframework.web.servlet.DispatcherServlet.doService(DispatcherServlet.java:658)
    org.springframework.web.servlet.FrameworkServlet.processRequest(FrameworkServlet.java:392)
    org.springframework.web.servlet.FrameworkServlet.doGet(FrameworkServlet.java:347)
    javax.servlet.http.HttpServlet.service(HttpServlet.java:690)
    javax.servlet.http.HttpServlet.service(HttpServlet.java:803)
    com.jdkcn.web.filter.MessageFilter.doFilter(Unknown Source)
    org.tuckey.web.filters.urlrewrite.RuleChain.handleRewrite(RuleChain.java:130)
    org.tuckey.web.filters.urlrewrite.RuleChain.doRules(RuleChain.java:107)
    org.tuckey.web.filters.urlrewrite.UrlRewriter.processRequest(UrlRewriter.java:78)
    org.tuckey.web.filters.urlrewrite.UrlRewriteFilter.doFilter(UrlRewriteFilter.java:383)
    org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:71)
    org.springframework.web.filter.CharacterEncodingFilter.doFilterInternal(CharacterEncodingFilter.java:75)
    org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:76)
    org.tuckey.web.filters.urlrewrite.NormalRewrittenUrl.doRewrite(NormalRewrittenUrl.java:183)
    org.tuckey.web.filters.urlrewrite.RuleChain.handleRewrite(RuleChain.java:125)
    org.tuckey.web.filters.urlrewrite.RuleChain.doRules(RuleChain.java:107)
    org.tuckey.web.filters.urlrewrite.UrlRewriter.processRequest(UrlRewriter.java:78)
    org.tuckey.web.filters.urlrewrite.UrlRewriteFilter.doFilter(UrlRewriteFilter.java:383)
    com.jdkcn.web.filter.GZIPFilter.doFilterInternal(Unknown Source)
    org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:76)
    org.springframework.orm.hibernate3.support.OpenSessionInViewFilter.doFilterInternal(OpenSessionInViewFilter.java:174)
    org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:76)
    com.opensymphony.oscache.web.filter.CacheFilter.doFilter(CacheFilter.java:163)


    root cause 

  24. daniel Says:

    1.5或1.6版只要增、删文章以后,一旦重启tomcat就全出现上面的错误.!!! 用的mysql数据库.数据库已经连接成功.

  25. 莫多(somebody) Says:

    每次重启都会出现这个错误么?
    jdkcn.com也是用的tomcat.好像没有这个问题。
    请给出你的jdk,tomcat,os版本。

  26. daniel Says:

    jdk1.5.0  tomcat6.0 windows xp ,谢谢莫多.

  27. abear Says:

    是免费的吗?

  28. 莫多(somebody) Says:

    to abear: 是免费的。
    to daniel:你的情况是只要添加的新日志。第一次重启tomcat就会出这个错误么?还没有在tomcat6上试过。回去试试。
    我的开发环境是 xubuntu7.04 + jdk1.5.0_11 + mysql5.0.38-Ubuntu_0ubuntu1-log+embeded tomcat5.5

  29. daniel Says:

    如果不增加新日志,不删除日志,重启是不会出现这个错误,一旦有增删日志就会.我试过1.5和1.6版的都是如此.

  30. 莫多(somebody) Says:

    就是像我上面说的。只要有添加删除。第一次重启tomcat就会出现这个错误。对吧?难道是 tomcat 的persistence session的问题么?
    你试试,重启tomcat之后关掉IE,新开IE来浏览试试。
    这样的话persistence的session 应该变掉了。

  31. daniel Says:

    就是像我上面说的。只要有添加删除。第一次重启tomcat就会出现这个错误。对吧?
      有添加删除就会出错,不仅是第一次会出现,每次都是这样,页面无法显示!!!
        新开IE来浏览是不行的,错误还是一样.重启过电脑都不行. ... 不知道是怎么回事...

  32. 莫多(somebody) Says:

    这个问题还真奇怪了。
    我这里是没有这个错误的啊。在开发的时候有出现过这个错误,不过重启tomcat就好了。
    我再我的winxp机器上试试。谢谢你

  33. 水晶星星 Says:

    麻烦泡泡写一个到1.6升级的说明呗~

  34. daniel Says:

    后台管理是正常的,就是前台打不开。我运行其它基于 spring struts1/2 hibernate的系统都正常的。应该与系统平台没关系的.

  35. 新聊斋 Says:

    研究myblog好几天,觉得莫多的工作非常出色,这个系统架够比较清晰,基本我需要的功能都有了. 
    昨天正式采用myblog 1.6 中秋节版搭建了我的blog:www.gmessage.cn 是专讲鬼故事的,胆小者慎进. 

    这里提几个1.6中秋节版的几个bug: 
    1.配好MYSQL数据库后,在管理页面,删除一开始安装时就有的日志出错,好象是外键约束. 
    2.对于中文的category和tag不支持.不出错,但是找不文章. 
    3.生成的文章的全文页面keyword标签,不应该是标题,而应该是tags比较好. 

    对于第二点,可能和中文URL有关,不过在jdkcn中,我发现也有中文的category,比如生活,却工作正常.不知道是什么原因,难道是1.6版本才有的bug? 

    对于category,我用创建英文名字,中文描述的category,并将模板文件中的表示的地方用category.description的方式解决了,tags怎么解决我还不知道.望莫多能考虑考虑这个问题 

  36. 新聊斋 Says:

    说一个问题,关于1.8版的

    我昨天晚上下了最新的代码,在我的机器上编译跑了下,还挺顺利的,没什么问题,于是就想把新编译的文件都拷到服务器上去部署了.结果发现服务器上点登陆时,死活都报tomcat的404错误,

    因为在本地是好的,我一直以为是我部署错了,少拷了文件什么的.结果检查来检查去都没问题

    后来发现在本地不部署成http://localhost/myblog,换成和服务器一样的域名指向就会出错,即在tomcat的server.xml中,这样的部署都有问题:

    <Host name="www.XXXX.cn" debug="0" appBase="C:\XXXX\myblog" 
          unpackWARs="true" autoDeploy="true" xmlValidation="false" xmlNamespaceAware="false">
    <Context path="/" docBase="" debug="0" />
    </Host >

    经过调试和调查,发现是www.XXXX.com/admin/*.* 这样的路径有问题.

    因为tomcat经过配置可以用http://hostname/admin/index.jsp进入tomcat的admin页面,所以以上的URL根本不会被tomcat转发到myblog的servlet中来,在测试中也发现在类UserLoginController设了断点根本跑不进来.如果有配置tomcat的管理.则会转到tomcat的管理登陆页面,否则则直接抛tomcat的404错误

    在admin-servlet.xml中修改
    <prop key="/admin/login.jspx">userLoginController</prop>

    <prop key="/blogadmin/login.jspx">userLoginController</prop>

    则可以顺利转到登陆页面
    <prop key="/blogadmin/login.jspx">userLoginController</prop>

    以上的信息,请莫多和其它开发人员确认一下

  37. 新聊斋 Says:

    下面的连接可以看到上文提到的错误
    http://www.gmessage.cn/admin/login.jspx

    我也懒的恢复到之前的版本了,等着你们最新版出来吧.



  38. 莫多(somebody) Says:

    谢谢你的支持。1.8改动比较多。所以还没有发布。不过也差不多可以发布了。
    你的这个问题应该是你部署了 admin的原因。我没有部署admin是没有问题的。我想你可以把tomcat部署的admin程序部署到其他的context path目录下面。
    这个是我的网站的tomcat配置。
          <Host name="www.jdkcn.com" appBase="/usr/local/www/jdkcn.com/www/" unpackWARs="true" autoDeploy="true" xmlValidation="false" xmlNamespaceAware="false">
              <Alias>jdkcn.com</Alias>
              <Context path="" docBase="/usr/local/www/jdkcn.com/www/">
              </Context>
          </Host>

  39. 新聊斋 Says:

    我也没有部署admin.
    我的配置和你差不多
    <Host name="www.gmessage.cn" debug="0" appBase="****\gmessagecn" 
          unpackWARs="true" autoDeploy="true" xmlValidation="false" xmlNamespaceAware="false">
       <Alias>gmessage.cn</Alias> 
       <Context path="/" docBase="" debug="0" /> 
       <Logger className="org.apache.catalina.logger.FileLogger" directory="logs" prefix="localhost_log." suffix=".txt" timestamp="true" /> 
        </Host>

    之前的版本我今天试了一下,不存在这个问题,看来不是我之前的推测的原因

    但是最新版确实会弹tomcat的404白页面.莫多有空试试把1.8这样部署一下看看吧.

    另外,我发现把1.8版下的web的admin目录改名,也不出错了

  40. 莫多(somebody) Says:

    这个问题解决了。过几天就发布1.8

  41. 新聊斋 Says:

    下来最新版跑不起来啊,抱下面的错误


    The problematic instruction:
    ----------
    ==> include siteConfig.theme + "/index.ftl" [on line 1, column 1 in index.ftl]
    ----------

    Java backtrace for programmers:
    ----------
    freemarker.core.InvalidReferenceException: Expression siteConfig is undefined on line 1, column 11 in index.ftl.
    at freemarker.core.TemplateObject.assertNonNull(TemplateObject.java:124)
    at freemarker.core.TemplateObject.invalidTypeException(TemplateObject.java:134)
    at freemarker.core.Dot._getAsTemplateModel(Dot.java:78)
    at freemarker.core.Expression.getAsTemplateModel(Expression.java:89)
    at freemarker.core.AddConcatExpression._getAsTemplateModel(AddConcatExpression.java:77)
    at freemarker.core.Expression.getAsTemplateModel(Expression.java:89)
    at freemarker.core.Expression.getStringValue(Expression.java:93)
    at freemarker.core.Include.accept(Include.java:110)
    at freemarker.core.Environment.visit(Environment.java:196)
    at freemarker.core.Environment.process(Environment.java:176)
    at freemarker.template.Template.process(Template.java:232)

  42. 莫多(somebody) Says:

    你check最新的branches/myblog-1.8下面的代码么?
    这个要先把initialization改成true.还要更新一下数据库。
    update `MYBLOG_TAG` tag set `count` = (select count(1) from MYBLOG_ENTRY_TAGS where tagId=tag.id)
    update `MYBLOG_CATEGORY` category set `count` = (select count(1) from MYBLOG_ENTRY_CATEGORY where categoryId=category.id)
    谢谢支持哦。

  43. longlemon Says:

    我下了一个1.8版本的,我想下其他的版本看看,是否google上也提供呢?
    还有我下了以后,部署到tomcat里(还没设置数据库),登陆的时候问题出现了,总是验证码有问题,尝试了多次,还是。服务器重启了还不行,想找到验证码的源码没找到,这个是不是一个问题啊。。。。。。

Leave a Reply

Identifying Code