• 欢迎访问佰阅部落,本站为优质开源程序分享站,所有自研项目均开源免费,可在Github查看源码。 QQ群
  • 如果您觉得本站非常有看点,那么赶紧使用Ctrl+D 收藏吧
  • 欢迎积极参与讨论、反馈问题

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

PHP 佰阅部落 2个月前 (09-09) 624次浏览 0个评论
文章目录[隐藏]

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系统为例):

第一步:安装好宝塔环境

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

第二步:安装calibre

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

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

ebook-convert --version

第三步:安装Chrome+supervisor

yum install -y chromium-browser supervisor

2️⃣BookStack程序部署

第一步:宝塔新建网站

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

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

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

修改配置文件conf/app.conf

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

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

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

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

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

# 第三方登录配置
[oauth]
##### Gitee(码云) ####
# 申请地址(需要先登录):https://gitee.com/oauth/applications
# 您的ClientId
giteeClientId=
# 您的ClientSecret
giteeClientSecret=
# 回调地址,把下面的bookstack.cn的域名换成你的即可
giteeCallback=http://www.bookstack.cn/login/gitee
# 下面这两项不要动
giteeAccesstoken=https://gitee.com/oauth/token
giteeUserInfo=https://gitee.com/api/v5/user
######## GitHub ########
# 申请地址(需要先登录你的GitHub):https://github.com/settings/developers
# 您的ClientId
githubClientId=
# 您的ClientSecret
githubClientSecret=
# 回调地址,把下面的bookstack.cn的域名换成你的即可
githubCallback=http://www.bookstack.cn/login/github
# 下面这两项不要动
githubAccesstoken=https://github.com/login/oauth/access_token
githubUserInfo=https://api.github.com/user
#### QQ ####
# 申请地址(需要先登录你的QQ):https://connect.qq.com/manage.html
#ClientId,即 APP ID
qqClientId=
#ClientSecret,即 APP Key
qqClientSecret=
# 回调地址,把下面的bookstack.cn的域名换成你的即可
qqCallback=http://www.bookstack.cn/login/qq
# 下面这三项不要动
qqAccesstoken=https://graph.qq.com/oauth2.0/token
qqOpenId=https://graph.qq.com/oauth2.0/me
qqUserInfo=https://graph.qq.com/user/get_user_info
### TODO 微信和微博登录,主要是我这边忘记了以前注册的个人开发者信息,当前没开发,后续会开发出来 ####

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

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

第四步:设置域名反代

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

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

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

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

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

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

[program:BookStack]
directory = /www/wwwroot/demo.baiyue.one
command =/www/wwwroot/demo.baiyue.one/BookStack
autostart = true
autorestart=true
user = root
redirect_stderr = true
stdout_logfile = /var/log/supervisor/BookStack.log

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

关于docker版

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

 

有任何问题或想法,欢迎积极留言讨论。


佰阅部落 , 版权所有丨如未注明 , 均为原创丨本网站采用BY-NC-SA协议进行授权
转载请注明原文链接:书栈(BookStack):最详细的在线书籍系统搭建教程
赞一下 (0)
佰阅部落
关于作者:
爱折腾,爱学习,我是一个Docker菜鸟,用心分享各种实用搭建教程,让优质web程序脱颖而出,欢迎订阅!

您必须 登录 才能发表评论!