"简介 [链接] 是一款小而美的开源博客系统,专为程序员设计。 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 回帖   
请输入回帖内容...
  • alanfans  

    1l

  • meikaiyipian  

    2L

  • xjtushilei  

    3l

  • Vanessa  

    截图都没有一个,还指南呀?

    1 回复
  • someone API  

    来来来,指点一下我的博客。超屌的

  • moloee    

    请问下,这个支持从 github 上拉源码自己打包编译 war 包发布吗?另外,拉了源码之后,怎么本地启动 debug 模式呢?有这方面的文档吗?找了一段时间了,没看到相关的


    更新,找到了,https://hacpai.com/settings ,虽然还有问题,移步对应的帖子下。

    1 回复
  • Vanessa    

    Solo 开发指南 开发在这里

  • liweiwei  

    Tomcat(版本要求至少 9) 😂

  • Green

    怎么实现全站 https ? 😶

    1 回复
  • 88250    

    nginx 配置一下,七牛配置一下应该就行了

  • cier  

    我想把博客设置在一个路径下,比如 http://域名/blog

    我在 starter 里改成 root.setContextPath("/blog") 了,
    然后访问域名时通过 nginx 直接转发到 /blog 下
    但静态资源不能访问,然后对 nginx 里面对一些静态资源重新做了配置,还是有些冲突,有什么简单的解决办法吗?
    nginx 如下:

     location ~ .*\.(png|html|htm|ico|jpg|jpeg|bmp|gif|js|css)$ {
       proxy_pass  http://127.0.0.1:8088$request_uri;
     }
    
     location / {
       proxy_pass  http://127.0.0.1:8088/blog$request_uri;
       proxy_set_header  Host $host;
       proxy_set_header  X-Real-IP  $remote_addr;
       proxy_set_header  X-Forwarded-For $proxy_add_x_forwarded_for;
       client_max_body_size 1000m;
     } 
    
    1 回复
  • 88250    

    你用 /solo 试试。另外参考 Latke 配置剖析

    1 回复
  • cier    

    静态页面 nginx 转发没问题,但页面的链接有问题,看了下 ftl 文件,是 serverPath 的问题.
    独立容器启动的
    我是在 starter 类里面改 ContextPath 的:root.setContextPath("/blog"); 然后 latke 配置文件没有设置 contextPath,设置的 servePath 为空,不知道怎么,没有起到作用。

    1 回复
  • 88250    

    不用改代码的,通过配置 latke.props 或者 starter 带参都可以设置 contextPath

    1 回复
  • cier    

    不知道是不是 bug,启动代码里改 root.setContextPath("/") 没有问题,
    local.properties 里改 contextPath 总是出现静态资源无法访问问题 (不用 nginx),我也试了设置 staticPath 或者不设置各种情况,都出现问题。
    对了,我是直接 eclipse 启动 Starter 的 main 函数启动的。

    1 回复
  • 88250    

    应该不是 bug,你再折腾看看

  • cier  

    话说楼主,能导出 sql 和 json,有导入功能吗?如果现在是 H2 数据库,想换成 mysql,sql 的应该不兼容吧?

    1 回复
  • 88250    

    两者的 SQL 不兼容,估计要自己处理一下。

  • iTanken  

    [INFO]-[2017-11-24 08:48:41]-[org.b3log.solo.util.Markdowns:127]: [marked] is not available caused by [Connection refused: connect], uses built-in [flexmark] for markdown processing. Reads FAQ section in user guide (https://hacpai.com/article/1492881378588) for more details.

    这算不算 bug 😆

    2 回复
  • 88250    

    不是 bug,你看下链接地址

    1 回复
  • iTanken    

    哦哦,貌似是看懂了😁

  • Changer0914  

    订阅有问题呀 /blog-articles-rss.do

    1 回复
  • 88250    

    有啥问题?

    1 回复
  • Changer0914    

    你访问一下,这里输出一些代码 http://120.55.54.230/blog-articles-rss.do

    1 回复
  • 88250    

    v2.5.0 将改进,具体请看 https://github.com/b3log/solo/issues/12361

    1 回复
  • Changer0914    

    哦,谢谢,你的博客很棒,打算长期用😄

    1 回复
  • 88250    

    谢谢支持,有问题随时交流。

  • bingofang  

    请问小编,数据库可以切换到自己 mysql 吗?有相应的 sql 文件吗?😂 求解

    2 回复
  • 88250    

    可以使用 MySQL,你看下 local.props 就明白了。

    1 回复
  • WangRun    

    一样的情况求怎么解决

  • WangRun    

    INFO ]-[2018-01-14 00:20:18]-[org.b3log.solo.util.Markdowns:127]: [marked] is not available caused by [拒绝连接 (Connection refused)], uses built-in [flexmark] for markdown processing. Reads FAQ section in user guide (https://hacpai.com/article/1492881378588) for more details.
    求如何解决

    1 回复
  • 88250    

    这个是正常的,细节可以看下日志里面的链接

  • someone API  

    node js/marked/http.js
    /root/luos/app/bk/pkg/apache-tomcat-9.0.2/webapps/solo-2.5.0/js/marked/http.js:35
    return <li class="task-item">${text}</li>;
    ^
    SyntaxError: Unexpected token ILLEGAL
    at Module._compile (module.js:439:25)
    at Object.Module._extensions..js (module.js:474:10)
    at Module.load (module.js:356:32)
    at Function.Module._load (module.js:312:12)
    at Function.Module.runMain (module.js:497:10)
    at startup (node.js:119:16)
    at node.js:902:3

  • yc  

    我想把数据库换成自己的 mysql,于是在后台把 sql 导出,然后在我自己的 mysql 里运行 报错运行不了 这是为什么?

    1 回复
  • 88250    

    H2 导出的 SQL 没法直接导入 MySQL ,不兼容的。可能需要自己手动调整一下,多尝试折腾下应该可以的。

    1 回复
  • yc    

    谢谢大佬 那我再试试看

  • yc  

    还是 mysql 的问题 大佬有好的解决方案吗

    1 回复
  • 88250    

    实在不行的话可以用 Markdown 导出

  • yc  

    嗯啊 。谢谢 我试试

  • yc    

    请问你现在解决了这个问题吗

  • 22 API  

    😰

  • qianhj  

    Solo 这个项目为什么配置好本地的 mysql 其实并没有用来存储相关的数据信息,还是存储在云端呢

    2 回复
  • 88250    

    云端??

  • qianhj  

    这个我能确定已经切换成功了,因为我修改为不正确的登录口令是无法正常登录的。

    1 回复
  • 88250    

    重启了么,如果切换到新库的话需要重新初始化的。

  • qianhj  

    嗯,好的!可能是因为最近内部服务器搬迁的原因,刷新有些延迟,现在正常了。谢谢!!!👍 👍 👍

  • yuanfei666  

    nginx 按照上述方法,搭建失败,配置会出错
    我的是部署在 tomcat 上,端口是 8080,解决方法

    CRPTM580F7RFM2XFNDpng
    修改配置后保存退出,重启 nginx

    V933XQYR3184MCRIDNpng

  • yuanfei666    

    mysql 应该是安装在云主机上,你的项目可以部署到云主机,也可以放在本地

  • kaijun  

    请问如何切换为 markdown 作为默认的编辑器呀?

    1 回复
  • 88250    

    默认就是 Markdown 啊....

请输入回帖内容...