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

Solo 开发指南

以下内容已经过时,请关注最新文档 ——《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 构思

    880 引用 • 6722 回帖 • 669 关注
  • 开发指南
    5 引用 • 257 回帖
  • Java

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

    2442 引用 • 7900 回帖 • 867 关注
1 操作
88250 在 2019-11-11 02:19:14 更新了该帖
优质回帖
  • yanxingangsun 2

    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 1

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

74 回帖
请输入回帖内容...
  • 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 中单独指定。

请输入回帖内容 ...