书栈(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()"

python动态库容易报错,解决办法看这里

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

  1. ebook-convert --version

第三步:安装Chrome+supervisor

  1. yum install -y chromium-browser supervisor

    yum -y install google-chrome-stable  
    //centos7+安装chrome命令

    判断是否安装成功:

    supervisord --version
    

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):最详细的在线书籍系统搭建教程

面板用户,直接在站点的设置里面配置反向代理,但是需要注意的是,需要修改缓存,如把下面两句注释掉:

#add_header X-Cache $upstream_cache_status;
#expires 12h;

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

启动go程序并后台运行


nohup ./bookstack &

自启动也必须在目录下运行,否则图片上传等会出错。

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

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实现,当然小白可以用宝塔实现。

转自伯阅部落

本文来自网络,不代表本站立场,转载请注明出处:万道一,Wonder One » 书栈(BookStack):最详细的在线书籍系统搭建
莫要搞事情哦
你喜欢的人刚好也未喜欢你
张学友刘德华邓紫琪已关注
赞(4) 打赏

赏点小费吧客倌

微信扫一扫打赏