Pipe 用户指南

本贴最后更新于 1404 天前,其中的信息可能已经时移世改

Pipe

小而美的博客平台,为未来而构建





English

💡 简介

Pipe 是一款小而美的开源博客平台,专为程序员设计。Pipe 有着非常活跃的社区,可将文章作为帖子推送到社区,来自社区的回帖将作为博客评论进行联动(具体细节请浏览 B3log 构思 - 分布式社区网络)。

这是一种全新的网络社区体验,让热爱记录和分享的你不再感到孤单!

欢迎到 Pipe 官方讨论区了解更多。同时也欢迎关注 B3log 开源社区微信公众号 B3log开源

b3logos.jpg

🗃 案例

✨ 功能

  • 多用户博客平台
  • Markdown 编辑器支持三种编辑模式:所见即所得 / 即时渲染 / 分屏预览
  • 聚合分类 / 标签
  • 自定义导航
  • 多主题 / 多语言
  • Atom / RSS / Sitemap
  • 文章搜索
  • Hexo/Jekyll 导入 / 导出
  • 可配置动静分离
  • 支持 SQLite / MySQL / PostgreSQL

🎨 界面

开始使用

start.png

管理后台

console.png

编辑文章

post.png

主题选择

theme.png

主题 Gina

gina.png

🛠️ 安装

Pipe 仅支持通过 Docker 进行部署,如果你需要从源码构建可参考这里

Docker 部署

获取最新镜像:

docker pull b3log/pipe
  • 使用 MySQL
    先手动建库(库名 pipe ,字符集使用 utf8mb4 ,排序规则 utf8mb4_general_ci ),然后启动容器:

    docker run --detach --name pipe --network=host \
        b3log/pipe --mysql="root:123456@(127.0.0.1:3306)/pipe?charset=utf8mb4&parseTime=True&loc=Local&timeout=1s" --runtime_mode=prod --port=5897 --server=http://localhost:5897
    

    为了简单,使用了主机网络模式来连接主机上的 MySQL。

  • 使用 SQLite

    docker run --detach --name pipe --volume ~/pipe.db:/opt/pipe/pipe.db --publish 5897:5897 \
        b3log/pipe --sqlite="/opt/pipe/pipe.db" --runtime_mode=prod --port=5897 --server=http://localhost:5897
    

启动参数说明:

  • --port:进程监听端口
  • --server:访问时的链接

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

Docker 升级

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

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

NGINX 反代

upstream pipe {
    server localhost:5897;
}

server {
    listen 80;
    server_name pipe.b3log.org; # 配置为你自己的域名

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

另外,可以参考 Pipe 安装补充说明 进行配置。

📜 文档

🏘️ 社区

📄 授权

Pipe 使用 木兰宽松许可证, 第 2 版 开源协议。

🙏 鸣谢

  • jQuery:JavaScript 工具库,用于主题页面
  • Vue.js:渐进式 JavaScript 框架
  • Nuxt.js:Vue.js 框架
  • Vuetify:Vue.js 的 Material 组件框架
  • Vditor: 浏览器端的 Markdown 编辑器
  • Gin:又快又好用的 golang HTTP Web 框架
  • GORM:极好的 golang ORM 库
  • SQLite:使用广泛的嵌入式 SQL 引擎
  • GCache:golang 缓存库
  • Gulu:Go 语言常用工具库,这个轱辘还算圆
  • Lute:一款结构化的 Markdown 引擎,支持 Go 和 JavaScript

特性说明

发布文章

Pipe 的文章编辑器支持 Markdown,并支持复制/粘贴图片、粘贴 HTML 自动转换 Markdown、流程图、数学公式等。

另外,可以为文章启用自动配图,会自动在文章最前面插入所选择的配图。

聚合分类

Pipe 使用“自底向上”的分类方式:

  1. 定义分类,并配置该分类包含的标签
  2. 查询某个分类文章列表时通过分类-> 标签集-> 标签关联的文章进行聚合

也就是说一篇文章在编辑时只需要打标签,访问分类时会根据该分类包含的标签将文章关联出来。这是一个自底向上的信息架构,在使用时更灵活一些,可以随时调整分类而不必重新更新文章。

域名绑定

在 Pipe 平台上的每个博客都可以配置域名,需要博主和服务器运维者分别操作:

  1. 博主在设置 -> 基础配置 -> 博客地址一栏填写域名
  2. 运维者通过配置 NGINX 实现域名到 /blogs/{username} 的反向代理
server {
    listen 80;
    server_name vanessa.b3log.org;

    location / {
        proxy_pass http://pipe/blogs/Vanessa/;
    }
}

导入 / 导出

Pipe 支持导入 Hexo/Jekyll 的 Markdown 文件,将需要导入的 Markdown 文件使用 zip 压缩上传即可。导入时会按标题去重,并自动按原文章的创建时间生成存档。

同样地,Pipe 也支持 Markdown 导出,格式为 Hexo。

链滴

在 Pipe 上发布文章时可选择是否自动推送到链滴上,这样能让更多人看到你创作的内容,更容易引起大家的关注和互动。

运维

数据库

Pipe 使用 SQLite3 数据库引擎,数据文件默认情况下存放在 ~/pipe.db,可以通过修改 pipe.json 的 DataFilePath 指定新的存放路径。

建议定期备份数据文件,避免意外情况导致数据丢失。

版本升级

在管理后台的关于中可以检查版本更新,如果提示有更新请尽快升级,一般来说升级只需要下载新的发布包然后部署重启,实际升级方式以每次版本发布公告为准。

FAQ

如何做友链页面?

Pipe 没有单独的友链管理功能。可以通过发一篇文章,然后在导航管理中新建一个友链导航跳转过去。

结语

  • 如果你在使用 Pipe 的过程中碰到问题或者有需求要提,欢迎跟帖,我们会在第一时间回复 😄
  • 如果你想自己开发 Pipe,请参考 Pipe 开发指南
  • 如果你想自己开发 Pipe 主题,请参考 Pipe 主题开发指南
6 操作
88250 在 2020-05-24 08:54:03 更新了该帖
88250 在 2020-04-13 11:29:41 更新了该帖
88250 在 2020-04-13 11:07:12 更新了该帖
88250 在 2020-04-02 19:34:08 更新了该帖 88250 在 2020-01-25 15:45:53 更新了该帖 88250 在 2019-12-22 18:28:15 更新了该帖

相关帖子

优质回帖
  • itstudying 1 赞同

    请教下 怎么配置一级域名直接到我的博客,而不是跳转到受欢迎的博客那页呢。

  • zonghua 1 1 赞同

    trollface 去掉了所有 /blogs/{username} 前缀,不让 D 大的阴谋得逞。trollface

        rewrite ^/(?!theme|console|admin|api|init) /blogs/zohar$request_uri break;
    
        location /{
            proxy_pass http://pipe/;
            proxy_set_header  Host $host:$server_port;
            proxy_set_header  X-Real-IP  $remote_addr;
            client_max_body_size  10m;
        }
    
  • nzmd 1

    请问下 1.89 版本 fara 主题,添加新的导航,没有配置图标,样式似乎有些问题
    微信截图 20191119115528.png

138 回帖

欢迎来到这里!

我们正在构建一个小众社区,大家在这里相互信任,以平等 • 自由 • 奔放的价值观进行分享交流。最终,希望大家能够找到与自己志同道合的伙伴,共同成长。

注册 关于
请输入回帖内容 ...
  • sober1174

    原来用 ecs 搭建的 solo 更改过 B3log key
    现在打算换 pipe 结果初始化时让我填写 B3log key
    社区的被我删掉现在是空白的
    请问如何找回 B3log key

    1 回复
  • 88250

    B3 Key 是自己设置的,你随便写一个只要让博客和社区的设置一样就行了。

  • itstudying 1 赞同

    请教下 怎么配置一级域名直接到我的博客,而不是跳转到受欢迎的博客那页呢。

    2 回复
  • 88250

    nginx 反代一下

  • zonghua 1 1 赞同

    trollface 去掉了所有 /blogs/{username} 前缀,不让 D 大的阴谋得逞。trollface

        rewrite ^/(?!theme|console|admin|api|init) /blogs/zohar$request_uri break;
    
        location /{
            proxy_pass http://pipe/;
            proxy_set_header  Host $host:$server_port;
            proxy_set_header  X-Real-IP  $remote_addr;
            client_max_body_size  10m;
        }
    
    4 回复
  • linker

    我部署了一套 pipe,欢迎大家来玩。账号和黑客派是打通的。
    http://tujie8.net/blogs/linker

    1 回复
  • linker

    我怎么发现现在 hacpai 里面有些回复的回复, 出现两次, 一次是回复,一次是回复的回复.
    似乎有 BUG?

    imagepng

    1 回复
  • 88250

    方便看上下文

    1 回复
  • linker

    有点重复啊,浪费了阅读注意力。

    1 回复
  • 88250

    默认不是展开的嘛

    1 回复
  • linker

    还是有点浪费注意力

    1 回复
  • 88250

    刚刚好吧
    imagepng

    鼠标停留才显示更多操作

  • 小白想问一下,下载了文件然后改了 json 文件,运行 exe 正常打开博客首页和后台

    编辑了一篇文章后进入首页,但是点击阅读更多进去就提示

    imagepng

    自己电脑不能用吗还是只能放在服务器上运行?

    1 回复
  • 88250

    Pipe 进程被关了吧?

    2 回复
  • 是如果自己电脑运行 pipe 程序,然后就是相当于自己电脑做本地服务器,然后正常一切操作都是可以的吗?

    但是我没关 pipe 啊,我再试一下看看,忙了半天现在才有时间

  • 又运行了一下,连首页进不了了

    imagepng

    但是后台管理页面可以正常操作

    imagepng

    1 回复
  • 88250 1

    博客地址配置里面少了端口。

    1 回复
  • 感谢~之情不知道瞎弄,不小心把端口去掉了

  • Ethan

    我记得以前 pipe 是用 hacpai 账号登录的,现在 hacpai 登录 pipe 的入口在哪里,我 hacpai 之前绑定过 GitHub,但是现在使用 GitHub 登录 pipe 变成了一个新的账号了

    1 回复
  • 88250

    你之前的 Pipe 地址发我一下,我看看数据。

    1 回复
  • Ethan
    1 回复
  • 88250

    退出登录后重新登录试试。

  • Ethan

    现在可以了

  • Ethan

    我两次都是回复你,但是评论后都不是回复你,但是这个是正常的,刚才回复你两次,本来是自带 @ 你的功能的,但是总是显示的是 @pipe 指南,是不是有问题啊

    1 回复
  • 88250

    新编辑器上线完还有点小问题,稍后会修复。

    1 回复
  • Ethan

    老账号可以登录了,自动给我注册的那个新账号没法登录。

    1 回复
  • 88250

    新的那个已经解绑了,让它消失在数据库中吧。

    1 回复
  • Ethan

    👌 👌

  • Ethan 1

    pipe 点击发布文章的时候,直接提示标签不能为空

    1 回复
  • 88250

    目前标签时必填的,下个版本改成选填。

    1 回复
  • Ethan

    我的意思是这个提示不应该立即就显示出来,目前是立即就标红显示标签不能为空的

    1 回复
  • 88250

    哦,明白了,稍后会更新。

    1 回复
  • Ethan 1

    pipe 发布文章的时候,建议输入正文的时候给个提示“请输入正文”,输入摘要的时候给个提示“请输入摘要”

  • zxffffffff
    root@VM-0-10-ubuntu:/home/ubuntu# docker run --detach --name pipe --volume ~/pipe.db:/opt/pipe/pipe.db --publish 5897:5897 \
    >     b3log/pipe --sqlite="/opt/pipe/pipe.db" --runtime_mode=prod --port=5897 --server=http://localhost:5897
    0d3a2aadb27b2c621e6eb64c75d5cbe2b6c7cbe8e1522e3acb7b1295f80d4b82
    
    root@VM-0-10-ubuntu:/home/ubuntu# curl http://localhost:5897
    curl: (7) Failed to connect to localhost port 5897: Connection refused 
    
  • zxffffffff

    docker run 之后,我查看 netstat -antup | grep 5897 发现并有没运行起来

    1 回复
  • 88250

    docker logs 看下日志吧。

  • M2shad0w

    广告设置那边貌似无法取消,如果填了的话!

  • 有个问题.. 使用 Docker 安装 Pipe ,
    mysql 密码中既有感叹号 ! 又有单引号 ' ,
    感叹号被当成了特殊符号
    感叹号如果加反斜杠,解析到 go db.Open 的时候,感叹号前变成了两个反斜杠(其实 go 中不用转义)
    导致 mysql 密码错误,打开失败
    请问这个问题咋解决,只能改一个不含特殊字符的密码吗?

    1 回复
    1 操作
    yueqianzhang 在 2019-11-05 16:02:07 更新了该回帖
  • 88250

    暂时换个不包含特殊字符的密码吧 😄

    1 回复
  • 好快,好的 D 大

  • 还有个问题,
    image.png
    按照这个配置,运行起来之后,直接跳转到了 http://localhost:5897/start
    请问这是啥原因,不太懂后端的东西..

    1 回复
  • 88250

    启动带参数 --server 值用最终访问的域名,不要用 localhost。

    1 回复
  • 好了,谢谢 D 大 🙏

  • panle666

    opens database failed: unable to open database file

  • panle666

    使用 SQLite 在 centos7 中报错:opens database failed: unable to open database file

    1 回复
  • 88250

    可能是配置的路径不对吧

    1 回复
  • panle666

    我是按照那个命令执行的,什么都没改,该如何调整呢

  • nzmd 1 评论

    服务器上部署的 1.89 版本,样式似乎有些问题 本地用 1.88 的版本没有这个问题 见下图
    1.png
    2.png

    1.8.9 加了几首歌。然后左边就被撑开了,可关注 Issue #270 · b3log/pipe
    Vanessa 1 1 赞同
  • nzmd 1 1 评论

    请问下 1.89 版本 fara 主题,添加新的导航,没有配置图标,样式似乎有些问题
    微信截图 20191119115528.png

    多谢,请关注 Issue #271 · b3log/pipe
    Vanessa
请输入回帖内容 ...