"请关注最新文档 ——[链接]。 环境准备 JDK:8 或更高的版本 Maven:2 或更高的版本 MySQL:默认使用 MySQL,可选择使用内嵌的 H2 Database 获取源代码 Solo 使用了 [链接]来组织项目,所以在克隆时需要带上递归子模块参数 --recurse-submodules: git clon .."

Solo 开发指南

本贴最后更新于 748 天前,其中的信息可能已经天翻地覆

请关注最新文档 ——《Solo 从设计到实现》

环境准备

获取源代码

Solo 使用了 Git 子模块来组织项目,所以在克隆时需要带上递归子模块参数 --recurse-submodules

git clone --recurse-submodules https://github.com/b3log/solo.git

如果你是手动下载的源码包,那还需要到皮肤仓库上下载皮肤,然后放置到 src/main/webapp/skins 目录下:

├─src
│  ├─main
│  │  └─webapp
│  │      ├─skins
│  │      │  ├─9IPHP
│  │      │  ├─Andrea
│  │      │  ├─Bruce
│  │      │  ├─....

IDE

因为 Solo 是通过 Maven 构建的项目,所以只要支持 Maven 的 IDE 都可以,推荐:

使用 IDE 打开项目即可,第一次构建时会自动下载依赖。pom 里默认激活的 profile 使用了阿里云的 Maven 仓库,理论上依赖下载会比较快。

运行

直接运行 org.b3log.solo 包下的 Starter 即可;也可以通过 mvn jetty:run 运行。


更多开发方面的内容请关注最新文档 ——《Solo 从设计到实现》

  • Solo

    Solo 是一款小而美的开源博客系统,专为程序员设计。

    Solo 有着非常活跃的社区,可将文章作为帖子推送到社区,来自社区的回帖将作为博客评论进行联动。

    这是一种全新的网络社区体验,让热爱记录和分享的你不再感到孤单!
    具体细节请浏览 B3log 构思

    605 引用 • 4677 回帖 • 721 关注
  • 开发指南
    3 引用 • 100 回帖
  • Java

    Java 是一种可以撰写跨平台应用软件的面向对象的程序设计语言,是由 Sun Microsystems 公司于 1995 年 5 月推出的。Java 技术具有卓越的通用性、高效性、平台移植性和安全性。

    2165 引用 • 7415 回帖 • 1020 关注
感谢    关注    收藏    赞同    反对    举报    分享
53 回帖    
请输入回帖内容...
  • zjhch123   1 感谢      

    抢个沙发?准备尝试开发一下插件来着的

    1 回复
       感谢    赞同    反对    举报    折叠    分享       评论    回复
  • BrickCat   1 感谢            

    算 2L 吗

       感谢    赞同    反对    举报    折叠    分享       评论    回复
  • jackfruitran      

    mysql 需要自己建库的表结构,model 太多怕建的不对

    1 回复
       感谢    赞同    反对    举报    折叠    分享       评论    回复
  • 88250            

    不需要自己建表的,初始化的时候会自动建。

       感谢    赞同    反对    举报    折叠    分享       评论    回复
  • qianhj      

    是的啊,我项目什么都正常运行,并且能发布相关文章,但是我的数据库里面一张表,一条数据都没有,所有很奇怪,还麻烦大神指教下

    1 回复
       感谢    赞同    反对    举报    折叠    分享       评论    回复
  • 88250            

    可能还是用的 H2 吧,并没有切换成 MySQL。

       感谢    赞同    反对    举报    折叠    分享       评论    回复
  • leozzy      

    刚加入,开始学习,希望能做出贡献

       感谢    赞同    反对    举报    折叠    分享       评论    回复
  • raven3005      

    我下载了 [v2.7.0] 的版本,首页上的注册链接的是 RSS 订阅,如果修改这个注册的链接,请问在哪个文件里修改
    TIM20180410104744png

    1 回复
       感谢    赞同    反对    举报    折叠    分享       评论    回复
  • 88250            

    麻烦截个图,我不知道你说的是哪里。

       感谢    赞同    反对    举报    折叠    分享       评论    回复
  • aaaa1234      

    😂

       感谢    赞同    反对    举报    折叠    分享       评论    回复
  • xiaokuige8541410      

    为什么用 Eclipse 不能启动

    1 回复
       感谢    赞同    反对    举报    折叠    分享       评论    回复
  • 88250            

    请使用 Maven

       感谢    赞同    反对    举报    折叠    分享       评论    回复
  • xiaokuige8541410      

    部署成功了,请问一下这是一个多用户博客系统吗

       感谢    赞同    反对    举报    折叠    分享       评论    回复
  • xiaokuige8541410      

    这个系统拥有超级管理员吗

    1 回复
       感谢    赞同    反对    举报    折叠    分享       评论    回复
  • 88250            

    这是个团队博客系统,所有人共用同一个后台和前台皮肤;如果你要支持多用户的博客平台,可以使用 [Pipe]

       感谢    赞同    反对    举报    折叠    分享       评论    回复
  • baeqiuzhu      

    请教一下,如何变更 markdown 默认编辑器为 kindeditor

       感谢    赞同    反对    举报    折叠    分享       评论    回复
  • baeqiuzhu      

    请教一下,如何变更 markdown 默认编辑器为 kindeditor

    1 回复
       感谢    赞同    反对    举报    折叠    分享       评论    回复
  • 88250            

    现在的版本只支持 Markdown 编辑器了。

       感谢    赞同    反对    举报    折叠    分享       评论    回复
  • Jett      

    请教一下,我想在article表中加一个字段怎么做呢 我直接打开 h2 的数据库没有找到表 而且出现了莫名奇妙的问题

    1 回复
       感谢    赞同    反对    举报    折叠    分享       评论    回复
  • 88250            

    在 repository.json 中改一下,然后手动加表字段。

    1 回复
       感谢    赞同    反对    举报    折叠    分享       评论    回复
  • Jett            

    所以需要去 h2 数据库中修改表的字段 我看系统可以有创建表的 不能更新表结构的吗

    1 回复
       感谢    赞同    反对    举报    折叠    分享       评论    回复
  • 88250            

    你如果不要历史数据的话直接把 h2 的数据库文件删了就行,初始化时会根据 repository.json 建表。

    1 回复
       感谢    赞同    反对    举报    折叠    分享       评论    回复
  • Jett            

    我刚刚是这么做的 但是它报了一个错误 org.b3log.latke.repository.RepositoryException: A json object to persist to repository[name=b3_solo_article] does not contain a key[matchImageUrl] 是否有缓存因素的影响呢

    1 回复
       感谢    赞同    反对    举报    折叠    分享       评论    回复
  • 88250            

    加了字段的话只要有 add/update 都会校验是否包含了完整字段,你看下抛出异常的地方是不是没有带你新加的字段。

       感谢    赞同    反对    举报    折叠    分享       评论    回复
  • geeekMz      

    h2 是内存数据库么 我先服务器崩了之后 h2 的数据库中的内容还能找回来不

    1 回复
       感谢    赞同    反对    举报    折叠    分享       评论    回复
  • 88250            

    数据库文件默认在 ~/solo_h2/db

       感谢    赞同    反对    举报    折叠    分享       评论    回复
  • luckygrass      

    org.b3log.latke.service.ServiceException: Initailize Solo error: A json object to persist to repository[name=vseu__option] does not contain a key[optionValue]
    mysql 数据库初始化报了这个错误,这是什么问题?

    1 回复
       感谢    赞同    反对    举报    折叠    分享       评论    回复
  • 88250            

    请详细说明你改过什么配置,不然我重现不了,定位不到问题,谢谢。

    1 回复
       感谢    赞同    反对    举报    折叠    分享       评论    回复
  • luckygrass            

    刚刚重新拷了一次源码,只是下载了依赖,什么都没有改动。 Initailize Solo error: A json object to persist to repository[name=b3_solo_option] does not contain a key[optionValue] 环境 ubuntu+jdk8+idea+maven3.5(还没用到 mysql) 谢谢大佬 [INFO]-[2018-09-02 01:17:46]-[org.b3log.solo.service.InitService:204]: YOUR DATA will be stored in directory [jdbc:h2:/home/lucky/solo_h2/db], please pay more attention to it~ [ERROR]-[2018-09-02 01:17:46]-[org.b3log.latke.Latkes:863]: Read skin configuration error[msg=null] [WARN]-[2018-09-02 01:17:46]-[org.b3log.solo.service.InitService:240]: Retrying to init Solo[retries=2] [ERROR]-[2018-09-02 01:17:47]-[org.b3log.latke.Latkes:863]: Read skin configuration error[msg=null] [WARN]-[2018-09-02 01:17:47]-[org.b3log.solo.service.InitService:240]: Retrying to init Solo[retries=1] [ERROR]-[2018-09-02 01:17:47]-[org.b3log.latke.Latkes:863]: Read skin configuration error[msg=null] [WARN]-[2018-09-02 01:17:47]-[org.b3log.solo.service.InitService:240]: Retrying to init Solo[retries=0] [ERROR]-[2018-09-02 01:17:47]-[org.b3log.latke.Latkes:863]: Read skin configuration error[msg=null] [ERROR]-[2018-09-02 01:17:47]-[org.b3log.solo.service.InitService:234]: Initialize Solo error org.b3log.latke.repository.RepositoryException: A json object to persist to repository[name=b3_solo_option] does not contain a key[optionValue] at org.b3log.latke.repository.Repositories.check(Repositories.java:193) at org.b3log.latke.repository.AbstractRepository.add(AbstractRepository.java:107) at org.b3log.solo.repository.impl.OptionRepositoryImpl_$$_jvstadb_21.d0add(OptionRepositoryImpl$$_jvstadb_21.java)at sun.reflect.GeneratedMethodAccessor4.invoke(Unknown Source) at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) at java.lang.reflect.Method.invoke(Method.java:498) at org.b3log.latke.ioc.bean.JavassistMethodHandler.invoke(JavassistMethodHandler.java:106)

    1 回复
       感谢    赞同    反对    举报    折叠    分享       评论    回复
  • 88250            

    要注意克隆皮肤子模块,或者手动下载。

       感谢    赞同    反对    举报    折叠    分享       评论    回复
  • luckygrass      

    请教一下,使用 injigen 主题的时候,点击首页的动态会报一个错误。我没有找到解决办法。、 [ERROR]-[2018-09-03 10:49:11]-[org.b3log.latke.servlet.renderer.freemarker.AbstractFreeMarkerRenderer:138]: FreeMarker renders error FreeMarker template error: An error has occurred when reading existing sub-variable “isReply”; see cause exception! The type of the containing value was: extended_hash+string (org.json.JSONObject wrapped into f.e.b.StringModel)


    FTL stack trace ("~" means nesting-related): - Failed at: #if comment.isReply != “” && comment… [in template “common-comment.ftl” at line 28, column 13] - Reached through: #include “common-comment.ftl” [in template “dynamic.ftl” at line 44, column 17]

    1 回复
       感谢    赞同    反对    举报    折叠    分享       评论    回复
  • 88250            

    你更新下代码应该就可以用了。这个皮肤暂时还没有发布,将在 v2.9.4 中正式发布。

    1 回复
       感谢    赞同    反对    举报    折叠    分享       评论    回复
  • luckygrass            

    哦哦,谢谢,v2.9.4 什么时候发布

    1 回复
       感谢    赞同    反对    举报    折叠    分享       评论    回复
  • 88250            

    大概计划是 10 月 10 号发布。

       感谢    赞同    反对    举报    折叠    分享       评论    回复
  • linker      

    没有拉取 skins 子模块会导致初始化报错。 建议修改文档: git clone --recursive 来 clone solo。 或者在 skins 目录执行:git submodule init && git submodule update

    1 回复
       感谢    赞同    反对    举报    折叠    分享       评论    回复
  • 88250            

    文档里有的嘛。

       感谢    赞同    反对    举报    折叠    分享       评论    回复
  • chromer      

    请问从 github 克隆到本地的solo怎么使用?

    1 回复
       感谢    赞同    反对    举报    折叠    分享       评论    回复
  • 88250            

    上面都写了啊,请看下文档。

       感谢    赞同    反对    举报    折叠    分享       评论    回复
  • BoyAdmin      

    请问作者,为什么本地机打开的博客样式没有问题,但是在客户机上打开的样式却是一堆的报错,这样怎么解决?

    1 回复
       感谢    赞同    反对    举报    折叠    分享       评论    回复
  • 88250            

    看下 F12 网络请求。

    2 回复
       感谢    赞同    反对    举报    折叠    分享       评论    回复
  • BoyAdmin            

    好的,我试试

       感谢    赞同    反对    举报    折叠    分享       评论    回复
  • BoyAdmin            

    在客户机上面请求的地址是 http://localhost:8080 这个地址是不是只要修改一下数据库 user 表里面的地址就可以了?

    1 回复
       感谢    赞同    反对    举报    折叠    分享       评论    回复
  • 88250   1 感谢            

    不是,你看一下文档吧,这些问题文档上都有写。

    1 回复
       感谢    赞同    反对    举报    折叠    分享       评论    回复
  • BoyAdmin            

    能把文档地址给我一下吗?我仔细看看,再请教您

    1 回复
       感谢    赞同    反对    举报    折叠    分享       评论    回复
  • 88250            

    你看下项目 README,另外,问题一般可以通过在黑客派或者 GitHub issues 上搜索得到解决。

    1 回复
       感谢    赞同    反对    举报    折叠    分享       评论    回复
  • BoyAdmin            

    好的,已经根据您的提示,找到解决办法了,我现在试着改一下

       感谢    赞同    反对    举报    折叠    分享       评论    回复
  • cccc      

    您好, 我在本地测试的时候第一次直接放在 tomcat 中是没法启动的, 我启动了 Starter 里的 main 方法初始化之后才可以正常用 tomcat 打开. 但是我把项目打包成 war 之后, 部署在 centos 的云服务器的 tomcat 上之后, 公网 ip+ 端口号 / 项目名却打不开, 是因为没法初始化的缘故么? 还是需要什么别的操作才可以部署的?

    lograr 29 分的是报错信息,31 分的是我把项目拿到之后单纯启动 tomcat 测试了一下

    我还在初学阶段, 麻烦您了

    1 回复
       感谢    赞同    反对    举报    折叠    分享       评论    回复
  • 88250            

     org.xml.sax.SAXParseException; systemId: file:/usr/local/apache-tomcat-9.0.14/webapps/solo/META-INF/context.xml; lineNumber: 3; columnNumber: 1; Premature end of file.
    

    这个文件有点问题,你看下是不是有损坏之类的。

    1 回复
       感谢    赞同    反对    举报    折叠    分享       评论    回复
  • cccc            

    哇, 谢谢, 成功了
    还要一个问题, 换皮肤好像移动端不生效, 还是最初的那种皮肤这是什么原因?

    过了一段时间又好了…没事了

    1 回复
       感谢    赞同    反对    举报    折叠    分享       评论    回复
  • 88250            

    移动端皮肤可以在 solo.props 中单独指定。

       感谢    赞同    反对    举报    折叠    分享       评论    回复
请输入回帖内容...