"简介 [链接] 是一款小而美的开源博客系统,专为程序员设计。 Solo 有着非常活跃的[链接],可将文章作为帖子推送到社区,来自社区的回帖将作为博客评论进行联动。 这是一种全新的网络社区体验,让热爱记录和分享的你不再感到孤单! 具体细节请浏览 [链接] 安装 本地试用 [链接]最新的 Solo 包解压,进入解压目录执行 .."

Solo 用户指南

简介

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

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

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

安装

本地试用

下载最新的 Solo 包解压,进入解压目录执行:

如果你有 Java 开发环境,可参考这里通过源码构建运行。

请注意:我们不建议通过 war 发布包或者源码构建部署,因为这样的部署方式在将来有新版本发布时升级会比较麻烦。
这两种方式请仅用于本地试用,线上生产环境建议通过 Docker 部署。

Docker 部署

获取最新镜像:

docker pull b3log/solo

启动参数说明:

完整启动参数的说明可以使用 -h 来查看。

Docker 升级

  1. 拉取最新镜像
  2. 重启容器

可参考这里编写一个重启脚本,并通过 crontab 每日凌晨运行来实现自动更新。

NGINX 反代

upstream backend {
    server localhost:8080; # Solo 监听端口
}

server {
    listen       80;
    server_name  88250.b3log.org; # 博客域名

    access_log off;

    location / {
        proxy_pass http://backend$request_uri;
        proxy_set_header  Host $host:$server_port;
        proxy_set_header  X-Real-IP  $remote_addr;
        client_max_body_size  10m;
    }
}

初始化后

初始化成功后请务必查看自动发布的第一篇文章,里面有一些必要的操作,请务必完成。然后请到管理后台 -> 工具 -> 偏好设定中进行一下博客的细节配置。

信息配置

签名档

最多可以配置 3 个签名档,发布文章的时候选择一个使用,可以使用 HTML 和脚本进行配置。

参数设置

下面是一些比较有特色或重要的参数:

导入 Markdown

请参考 Solo 支持 Hexo/Jekyll 数据导入

备份

安全第一,血泪的教训 😢

其他一些特性

多用户

可以几个用户同时使用一个博客发布文章,主要用在团队博客这个场景。权限方面做了简单隔离,非管理员用户可以看到其他用户的博文 / 评论列表,但是不能进行操作。

RSS/Atom/Sitemap

提供两种订阅供稿:Atom 1.0、RSS 2.0:

不要用浏览器直接打开,请通过阅读器查看。另外,Solo 也能生成全站文章的 sitemap.xml。

前台皮肤切换

通过 URL 带参(比如 http://88250.b3log.org/?skin=Finding)来确定渲染使用的皮肤。

使用场景举例:

  1. 只有在首页(/)会取参数skin=xxx
  2. 如果带有就记录到 Cookie 里面,如果带有skin=default或皮肤不存在则清空 Cookie
  3. 如果要切换成后台默认的皮肤,在首页带参skin=default

站外相关文章

“站外相关文章”指的是其他人使用 Solo 发布的文章,该文章含有与你的文章相同的标签。该功能主要是为了加强各个 Solo 博客之间的互动性,让博客访问者可以更有效地访问到相关的内容。

这是 B3log 构思的一部分实现,请大家积极参与进来 🙏

自动同步 GitHub 仓库

自动同步仓库包含了两个功能:

  1. 每 24 小时定时拉取用户 GitHub 账号下的公有仓库,然后生成一篇文章并在加入到导航中,实际效果请参看这里
  2. 每 24 小时定时导出用户的公开文章到用户的 GitHub 仓库(solo-blog),实际效果请参考这里

FAQ

服务器内存太小?

可以考虑使用内嵌的 H2 数据库代替 MySQL。如果一台服务器上要部署多个 Solo,可以考虑通过 war 包方式将它们部署到同一个 Tomcat/Jetty 中运行。

但建议还是进行内存升级,然后使用 Docker 和 MySQL 部署,这样不仅可以通过更新镜像进行平滑升级,还能使用 MySQL 相关工具更方便地进行数据库运维。

如何引入自定义静态资源,比如 .mp3?

请通过 NGINX 反代静态资源实现。

如何获得更好的 Markdown 渲染效果?

Solo 默认是使用内建的 flexmark 进行 md 渲染,可能对有的场景下的渲染效果不是很好。如果你想要获得更好的 md 渲染效果请参考这里

为什么在线访问计数一直都是 1?

在线访问计数是通过访问者 IP 去重的,每 10 分钟定时刷新一次。如果用了反向代理,请在代理配置部分加入客户端地址标头。比如 NGINX 需要加入如下配置:

proxy_set_header  X-Real-IP  $remote_addr;

Solo 会一直维护下去么?

Solo 的第一个版本发布于 2010 年,永不断更 😼

Solo 从第一版开始就支持平滑升级,从 v3.0.0 开始支持跨版本升级。在程序升级、数据兼容迁移方面我们做了很多工作。另外,Solo 还支持将数据导出成多种格式,所有的这些努力为的就是让大家能够免去后顾之忧,将自己的精力放在记录和分享上。

当然,也欢迎大家一起来学习、折腾 Solo 程序本身,因为开源项目参与者越多,说明这个项目生命力越旺盛 ❤️

结语

如果你在使用 Solo 过程中碰到问题或者有需求要提,欢迎跟帖,我们会在第一时间回复。另外,如果你想对 Solo 进行定制开发,请参考 Solo 从设计到实现

  • Solo

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

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

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

    629 引用 • 4803 回帖 • 719 关注
  • 安装

    你若安好,便是晴天。

    52 引用 • 749 回帖
  • 文档
    51 引用 • 912 回帖 • 1 关注
233 回帖   
请输入回帖内容...
  • 88250    

    看日志

    1 回复
  • mogiihu    

    今天发现默认的渲染主题是 next,把 next 删了所以显示 404,D 大,请问这个可以更改吗。前端小白服务器这边有好多不懂的。

    1 回复
  • 88250    

    看下文档,路面有换肤相关说明。

  • xzy0725  

    D 神,如何生成 mysql 脚本? 😄 ( 修正)

    1 回复
  • 88250    

    虽然错别字有点多,但并不影响阅读。
    建表自动的,没有脚本。

    1 回复
  • xzy0725    

    设置数据库为 Mysql,启动就会自动生成表结构吗?
    找到方法了JdbcRepositories.initAllTables

    1 回复
  • 88250    

    手动建库,会自动建表。

  • sadsadasdas  

    如何让首位缩进啊,总是顶头的

    2 回复
  • 88250    

    Markdown 好像没这个功能..

  • 88250    

    对了,可以试试插入 HTML 代码  (半角)或者  (全角)。

    HTML空格符号 nbsp; ensp; emsp; 介绍以及实现中文对齐的方法 - 风雨后见彩虹 - 博客园

  • mojie126  

    不知道编辑器是不是可以像 sym 那样,一边儿编辑一边儿预览的那种...

  • someone API  

    D 神,你好,我想请问一下 solo 对于常用配置是如何处理的,从数据库读出来所有的配置信息后,配置信息是怎么处理,放 session 还是用 properties 文件的方式存放,我是将配置文件处理为了一个 Javabean,准备放 session,但是感觉不方便!如果加入缓存机制如 redis 的话,感觉上也只是不用重复读取数据,读取出来的数据也不知道怎么放!麻烦你了,谢谢

    1 回复
  • 88250    

    propers 还有数据库都可能有配置,不一定非要统一形式。propers JDK 自带内存缓存,数据库读取的自己管理缓存。另外,不要过早考虑性能优化。

  • wangwei10061 API  

    在 ImportService 类里边,有这么两句:
    final ServletContext servletContext = SoloServletListener.getServletContext();
    final String markdownsPath = servletContext.getRealPath("markdowns");
    在本地运行时,debug 可以看到,markdownsPath 的路径为 src/main/webapps 下,所以应该把 markdowns 文件夹放在 src/main/webapps 下边

  • linker  

    发现七牛的图片存储域名是临时的,30 天过期.
    Solo 能考虑之下下 aliyun OSS 么?

    1 回复
  • 88250    

    麻烦到项目上提个 issue。

    1 回复
  • linker    

    提了。

  • limin  

    imagepng
    发布文章报错 Table 'solo.b3_solo_article' doesn't exist,请问初始化完成应该有多少张表?我初始化完成有 12 张表

    1 回复
  • 88250    

    数据库删了重新初始化,注意观察日志。

    1 回复
  • limin    

    好了,我 mysql 的 max_allowed_packet 有问题

  • luckygrass  

    sitemap.xml 如何生成?

    1 回复
  • 88250    

    直接访问 /sitemap.xml

  • luckygrass  

    sitemap.xml 中有一些连接是过期失效的,开源系统有写推送功能嘛?

    1 回复
  • 88250    

    这个 XML 是根据你当前的数据库即时生成的。

    1 回复
  • luckygrass    

    ,开源系统有写推送功能嘛?

    1 回复
  • 88250    

    什么推送功能?

  • ick104  

    为什么我 maven 打包源码,src/test/skins 目录下的资源没有打进去?执行测试用例的时候报错了,说是没有找到 author-articles.ftl 文件,这个文件是在 skins 目录下的。

    imagepng

    1 回复
  • 88250    

    test 下面的资源本来就不会被打包嘛。

  • fennylv  

    Markdown 渲染效果
    安装 marked:npm install marked --save 这个对目录有要求吗?
    我在 /data 目录下 使用 npm install marked --g 全局安装了 marked
    [root@iZm5e0njylntwlby4wglimZ ROOT]# npm marked -v
    6.4.1 这里显示的版本是这个
    在 solo 的目录下:[root@iZm5e0njylntwlby4wglimZ ROOT]# npm ls
    /usr/tomcat/apache-tomcat-9.0.11/webapps/ROOT
    └── marked@0.5.0
    然后我在 sole 的目录下执行 node js/marked/http.js 提示服务启动,重启了服务器之后
    发表 markdown 的表格语法还是不能正常使用

    1 回复
  • 88250    

    重启服务之后看下 solo 的日志输出,看下是否是在用 marked 引擎。

    1 回复
  • fennylv    

    启动日志里面没有看到任何 marked 相关的关键字,应该是没在用 marked 引擎

    1 回复
  • 88250    

    使用内建的 flexmark 也会打日志的,你留意看下。

  • linker  

    imagepng
    这段代码的事务的回滚的时机似乎是有问题的,应该在 finally{里面 判断是否需要回滚,确保一定会执行到。}

    1 回复
  • 88250    

    目前这么写没出现过问题,木已成舟懒得改了。

    1 回复
  • linker    

    嗯,后面写新代码的时候,注意下,因为异常类型不是Exception而是 Error
    或者是非Exception子类的都会导致事务没有回滚。

    1 回复
  • 88250    

    这个倒是考虑过,Error 情况打算放弃治疗,非 Exception 子类不会出现。

  • fennylv  

    请教楼主,文章右侧的目录展示是可以自己设置吗 还是需要二次开发?

    imagepng

    1 回复
  • 88250    

    1. 插件管理里启用 ToC 插件
    2. 目录多余 3 个才会显示

  • mxf  

    偏好设定中的博客地址怎么不能修改

    1 回复
  • 88250    

    latke.props 文件中配置的。

  • Parasomnia  

    应将启动命令从nohup java -cp WEB-INF/lib/*:WEB-INF/classes org.b3log.solo.Starter >/dev/null 2>&1 &更改为nohup java -Djava.awt.headless=true -cp WEB-INF/lib/*:WEB-INF/classes org.b3log.solo.Starter >/dev/null 2>&1 &以解决 linux 下 awt 的 NoClassDefFoundError 问题

    1 回复
  • 88250    

    麻烦确认一下验证码是否还能用。

    1 回复
  • Parasomnia    

    亲身实践证明更改启动命令后可用

    1 回复
  • linker    

    我都是直接从 git master 分支开始跑:
    mvn jetty:run
    实际效果还不错:
    http://sigandou.com/

  • need  

    你好,请问我想修改页面的有关配置该在哪里找。。。找了半天没有找到配置文件请指教

    1 回复
  • 88250    

    什么配置?

    1 回复
  • need    

    就是我想自定义一些页面效果,比如图标 头像等等,之前我用的 hexo 是可以 diy 到这里不知道该改哪个了

    1 回复
  • 88250    

    哦,这样的话不用改模板,你在公告栏里面写代码就行了。

  • Jackson  

    imagepng
    我的这个证书安装后 tomcat 报这错误?😭

    1 回复
  • 88250    

    证书最好配置在 NGINX 上,不要在容器上配置。

    1 回复
请输入回帖内容...