User-Profile-Image
hankin
  • 5
  • WPS稻壳
  • 腾讯文档
  • 企业邮箱
  • 幕布笔记
  • 阿里语雀
  • 分类
    • 遇见城事
    • 资源分享
    • 素材收集
    • 程序源码
    • 技巧随笔
    • 平面设计
    • 工具采集
  • 页面
    • 专题
  • 友链
    • PP设计导航
    • 中国博客联盟
    • 博客大全
Help?

Please contact us on our email for need any support

Support
  • 平面设计
  • 资源分享
    首页   ›   技巧随笔   ›   正文
技巧随笔

书栈(BookStack):最详细的在线书籍系统搭建教程

2020-07-12 21:21:46
1833  0 3

开源地址:https://github.com/TruthHun/BookStack

0.介绍

BookStack,基于MinDoc,使用Beego开发的在线文档管理系统,功能类似Gitbook和看云。

程序依赖环境:lnmp+calibre+Chrome+supervisor

DEMO演示站:https://www.bookstack.cn/

1.截图

书栈(BookStack):最详细的在线书籍系统搭建教程

书栈(BookStack):最详细的在线书籍系统搭建教程

2.功能

  • 书籍分类
  • 书籍打赏
  • 在线阅读、支持导出markdown、pdf、epub、mobi等格式。
  • 基于bootstrap前端,因此移动端体验优秀
  • 用户页功能:展示分享的书籍、粉丝、关注和手册,增加用户间的互动

3.安装步骤

官方演示文档比较复杂,不利于新手部署,因此本站重新编写安装步骤。

1️⃣环境部署(以centos7系统为例):

第一步:安装好宝塔环境

  1. yum install -y wget && wget -O install.sh http://download.bt.cn/install/install_6.0.sh && sh install.sh

第二步:安装calibre

  1. wget -nv -O- https://download.calibre-ebook.com/linux-installer.py | python -c "import sys; main=lambda:sys.stderr.write('Download failed\n'); exec(sys.stdin.read()); main()"

查看版本号,如果显示则代表安装成功

  1. ebook-convert --version

第三步:安装Chrome+supervisor

  1. yum install -y chromium-browser supervisor

2️⃣BookStack程序部署

第一步:宝塔新建网站

书栈(BookStack):最详细的在线书籍系统搭建教程

第二步:进入网站,克隆源码并修改配置文件

  1. #注意替换demo.baiyue.one为自己域名
  2. cd /www/wwwroot/demo.baiyue.one
  3. git clone https://github.com/TruthHun/BookStack.git tmp && mv tmp/.git . && rm -rf tmp
  4. cp conf/app.conf.example conf/app.conf
  5. cp conf/oss.conf.example conf/oss.conf
  6. cp conf/oauth.conf.example conf/oauth.conf

修改配置文件conf/app.conf

建议不懂的别动,保持默认,主要修改下数据库,完成对接,后期再逐步修改里面的东西。

  1. # 程序名称
  2. appname = BookStack
  3. # 程序版本
  4. version = v1.0.0
  5. # 监听端口
  6. httpport = 8181
  7. # 运行模式。开发时,请设置为开发模式"dev",即development;部署时,请设置为产品模式"prod",即product。dev模式下,会打印各种调试信息
  8. runmode = dev
  9. # 是否开启session,这个必须开启,否则没法玩了。
  10. sessionon = true
  11. # session名称,这个你自己定。
  12. sessionname = bookstack
  13. copyrequestbody = true
  14. # 启动gzip压缩,则设置为true,否则设置为false。建议启动
  15. EnableGzip=true
  16. # 要压缩的静态文件扩展名,其中.xml是sitemap站点地图压缩。建议按照这个来就行了
  17. StaticExtensionsToGzip = .css, .js, .xml
  18. # 默认Session生成Key的秘钥
  19. beegoserversessionkey=bookstack
  20. ########Session储存方式##############
  21. #以文件方式储存
  22. sessionprovider=file
  23. sessionproviderconfig=store/session
  24. # 静态目录。这个是站点地图的静态目录
  25. StaticDir = sitemap:sitemap
  26. #生成下载文档的时间间隔。也就是距离用户第一次点击生成下载文档到第二次点击生成下载文档的时间间隔,避免用户频繁点击生成下载文档而导致大量耗费服务器资源导致服务器宕机
  27. GenerateInterval=300
  28. # 站点可直接访问的静态文件【注意,这里千万不能配置.conf文件扩展名,否则会把.conf文件当做静态文件而被外部访问,导致数据库账号密码等泄露。按照默认的来即可】
  29. StaticExt=.txt,.xml,.ico,.png,.jpg,.jpeg,.gif,.html
  30. #评论时间间隔,每次发表评论,限定间隔秒数,避免被恶意刷评论
  31. CommentInterval=10
  32. # 生成下载文档时导出pdf文档的配置,这里建议把关于bookstack.cn的信息替换成你自己的就行,其他的建议不要动
  33. exportHeader=<p style='color:#8E8E8E;font-size:12px;'>_SECTION_</p>
  34. exportFooter=<p style='color:#8E8E8E;font-size:12px;'>本文档使用 <a href='http://www.bookstack.cn' style='text-decoration:none;color:#1abc9c;font-weight:bold;'>书栈(BookStack.CN)</a> 构建 <span style='float:right'>- _PAGENUM_ -</span></p>
  35. exportFontSize=14
  36. exportPaperSize=a4
  37. exportCreator=书栈(BookStack.CN)
  38. exportMarginLeft=72
  39. exportMarginRight=72
  40. exportMarginTop=72
  41. exportMarginBottom=72
  42. #时区设置
  43. timezone = Asia/Shanghai
  44. ####################MySQL 数据库配置###########################
  45. db_adapter=mysql
  46. # 您的数据库host
  47. db_host=
  48. #您的数据库端口
  49. db_port=3306
  50. #您的数据库用户名
  51. db_username=
  52. # 您的数据库密码
  53. db_password=
  54. #您使用的数据库
  55. db_database=bookstack
  56. # 静态资源域名,没有则留空。比如你将static目录下的所有静态资源都放到了专门的服务器上,那么这个域名就行用来访问你的静态资源的域名。
  57. static_domain=http://static.bookstack.cn
  58. # 谷歌浏览器,用于发布内容的时候渲染未被渲染的markdown。建议安装最新版的Chrome浏览器,并把Chrome浏览器加入系统环境变量。
  59. # 使用Chrome的headless去处理。之前考虑使用phantomjs的,但是phantomjs有些小问题,不如Chrome强大。
  60. chrome=chromium-browser
  61. #项目默认封面
  62. cover=/static/images/book.png
  63. #默认头像
  64. avatar=/static/images/avatar.png
  65. #默认阅读令牌长度
  66. token_size=12
  67. #上传文件的后缀
  68. upload_file_ext=txt|doc|docx|xls|xlsx|ppt|pptx|pdf|7z|rar|jpg|jpeg|png|gif
  69. ####################邮件配置######################
  70. #是否启用邮件
  71. enable_mail=true
  72. #每小时限制指定邮箱邮件发送次数
  73. mail_number=5
  74. #smtp服务用户名
  75. smtp_user_name=admin@bookstack.cn
  76. #smtp服务器地址
  77. smtp_host=smtpdm.aliyun.com
  78. #smtp密码
  79. smtp_password=
  80. #端口号
  81. smtp_port=25
  82. #发送邮件的显示名称
  83. form_user_name=admin@bookstack.cn
  84. #接收回件的邮箱。留空则表示使用发送邮件的邮箱作为接收回件邮箱
  85. reply_user_name=bookstack@qq.com
  86. #邮件有效期30分钟
  87. mail_expired=30
  88. include "oss.conf"
  89. include "oauth.conf"

修改阿里云oss(此项请自行搞定)

修改第三方登陆接口conf/oauth.conf

初次使用,可不动此项,后期可随时修改。

  1. # 第三方登录配置
  2. [oauth]
  3. ##### Gitee(码云) ####
  4. # 申请地址(需要先登录):https://gitee.com/oauth/applications
  5. # 您的ClientId
  6. giteeClientId=
  7. # 您的ClientSecret
  8. giteeClientSecret=
  9. # 回调地址,把下面的bookstack.cn的域名换成你的即可
  10. giteeCallback=http://www.bookstack.cn/login/gitee
  11. # 下面这两项不要动
  12. giteeAccesstoken=https://gitee.com/oauth/token
  13. giteeUserInfo=https://gitee.com/api/v5/user
  14. ######## GitHub ########
  15. # 申请地址(需要先登录你的GitHub):https://github.com/settings/developers
  16. # 您的ClientId
  17. githubClientId=
  18. # 您的ClientSecret
  19. githubClientSecret=
  20. # 回调地址,把下面的bookstack.cn的域名换成你的即可
  21. githubCallback=http://www.bookstack.cn/login/github
  22. # 下面这两项不要动
  23. githubAccesstoken=https://github.com/login/oauth/access_token
  24. githubUserInfo=https://api.github.com/user
  25. #### QQ ####
  26. # 申请地址(需要先登录你的QQ):https://connect.qq.com/manage.html
  27. #ClientId,即 APP ID
  28. qqClientId=
  29. #ClientSecret,即 APP Key
  30. qqClientSecret=
  31. # 回调地址,把下面的bookstack.cn的域名换成你的即可
  32. qqCallback=http://www.bookstack.cn/login/qq
  33. # 下面这三项不要动
  34. qqAccesstoken=https://graph.qq.com/oauth2.0/token
  35. qqOpenId=https://graph.qq.com/oauth2.0/me
  36. qqUserInfo=https://graph.qq.com/user/get_user_info
  37. ### TODO 微信和微博登录,主要是我这边忘记了以前注册的个人开发者信息,当前没开发,后续会开发出来 ####

第三步:使用脚本部署网站

  1. #在网站根目录下运行
  2. ./BookStack install

第四步:设置域名反代

书栈(BookStack):最详细的在线书籍系统搭建教程

默认端口8181可以在配置文件app.conf修改。

之后就可以访问域名进入网站了,后台管理员默认账户密码admin和admin888

3️⃣生产环境(完成守护计划)

宝塔面板进入/etc/supervisor/conf.d/后创建bookstack.conf的守护任务,文件内容如下:

注意替换demo.baiyue.one为自己的域名

  1. [program:BookStack]
  2. directory = /www/wwwroot/demo.baiyue.one
  3. command =/www/wwwroot/demo.baiyue.one/BookStack
  4. autostart = true
  5. autorestart=true
  6. user = root
  7. redirect_stderr = true
  8. stdout_logfile = /var/log/supervisor/BookStack.log

保存完毕后,重启supervisorctl reload守护计划或者直接reboot都行。

关于docker版

从宝塔的整个搭建流程而言,过程非常糟糕,体验极差。而程序主要使用go语言完成运行逻辑,因此docker化还是可以实现的。目前的思路是基于golang完成编译后,将所内容打包的一个nginx镜像下,利用entrypoint.sh可实现本地挂载源码文件,调试维护及修改代码可以用vs remote实现,当然小白可以用宝塔实现。

本文来源于:https://baiyue.one/archives/1265.html

如本文“对您有用”,欢迎随意打赏作者,让我们坚持创作!

3 打赏
似最初
一转身,一恍惚,一刹那,不堪看,风过处尽显流年。
103文章 90评论 17点赞 94567浏览
随机文章
福利丨一篇文章教你制作出高大上的PPT结尾页
2年前
islide,让做PPT像吃饭一样简单 !
2个月前
笔记本风PPT模板,建议收藏
2年前
春风不解意,秋叶送十里
1年前
花见,从初开到满开的喜悦
3个月前
如何使用形状增加PPT的设计感?
2年前
常见标签
CAD PPT PPT主题 PPT合集 PPT字体 PPT模板 PPT设计 PPT进化论 七牛云 主题 书籍 图框 图片素材 在线工具 墨菲定律 封面 小程序 工具 心情 心情随笔 愿时光 手账 效率 效率合集 新年快乐 灵感 相册 简历 素材 网站推荐 职场思维 自我评价 范文 设计 资源分享 迁移 遇见城事 配色 随笔 随笔小诗
博客统计
  • 日志总数:103 篇
  • 评论数目:90 条
  • 建站日期:2018-01-25
  • 运行天数:1087 天
  • 标签总数:40 个
  • 用户总数:7952 个
  • 最后更新:2020-12-31
Copyright © 2021 网站备案号: 黔ICP备17005359号-5
smarty_hankin 主题. Designed by hankin
主页
页面
  • 专题
博主
似最初 管理员
写我所写,关你何事?
103 文章 90 评论 94567 浏览
测试
测试
赞赏作者

请通过微信、支付宝 APP 扫一扫

感谢您对作者的支持!

 支付宝 微信支付