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

Solo 开发指南

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

请关注最新文档 ——《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 构思

    655 引用 • 4983 回帖 • 710 关注
  • 开发指南
    5 引用 • 137 回帖
  • Java

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

    2212 引用 • 7521 回帖 • 967 关注
优质回帖
  • yanxingangsun      

    1. 建议 [Solo 开发指南] 上的中文说明改为用码云下载(中文说明主要面向国内用户,国内用户码云下载更快),如下:
    git clone --recurse-submodules https://gitee.com/b3logos/solo.git
    

    英文说明(如果有的话)通过 github 下载:

    git clone  --recurse-submodules https://github.com/b3log/solo.git
    
    1. 另外“skins(皮肤)”在码云上没有项目分支,所以也是到 github 上下载的,速度也慢,希望能改进一下,在码云上也能下载,谢谢。
    [root@VM_0_11_centos ~]# git clone --recurse-submodules https://gitee.com/b3logos/solo.git
    
    Cloning into 'solo'...
    
    remote: Enumerating objects: 44272, done.
    remote: Counting objects: 100% (44272/44272), done.
    remote: Compressing objects: 100% (13923/13923), done.
    remote: Total 44272 (delta 24766), reused 44214 (delta 24708)
    Receiving objects: 100% (44272/44272), 88.66 MiB | 2.85 MiB/s, done.
    Resolving deltas: 100% (24766/24766), done.
    Submodule 'src/main/webapp/skins' (https://github.com/b3log/solo-skins) registered for path 'src/main/webapp/skins'
    Cloning into 'src/main/webapp/skins'...
    remote: Enumerating objects: 1193, done.
    remote: Counting objects: 100% (1193/1193), done.
    remote: Compressing objects: 100% (732/732), done.
    remote: Total 11743 (delta 845), reused 767 (delta 460), pack-reused 10550
    Receiving objects: 100% (11743/11743), 23.59 MiB | 256.00 KiB/s, done.
    Resolving deltas: 100% (8803/8803), done.
    Submodule path 'src/main/webapp/skins': checked out 'ca0de62bddd9e3bb8732e46b4239001d7f238303'
    [root@VM_0_11_centos ~]# 
    

    以上是本人下载时的命令打印信息。

  • 88250    

    默认的数据库配置是使用 MySQL,需要先手动建库。

63 回帖   
请输入回帖内容...
  • zjhch123  

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

    1 回复
  • BrickCat        

    算 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 回复
  • 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 中单独指定。

请输入回帖内容 ...