Windows下安装部署BookStack(简版)
更新时间: 2022-08-27
FAQ(必看)
大家常遇到的问题,我这边放在前面!
- 如果您无任何技术基础,不建议安装和部署bookstack,以免浪费您的时间!!!
- 安装部署的时候,强烈建议在
**非root**用户下进行部署!!! - 给程序所在目录下的
cache和store给予读写权限,以免图片等验证码无法正常显示等情况!!! - calibre极易由于下载失败而无法安装成功,根据您用calibre官方提供的脚本安装下载失败的版本,到GitHub(https://github.com/kovidgoyal/calibre/releases )下载该版本放到
/tmp/calibre-installer-cache目录下,再重复执行一次即可。 - BookStack不是一定要依赖阿里云OSS!!!
- 如果不需要全文搜索,服务器最低配置建议2C4G;如果需要全文搜索,请安装elasticsearch,并在管理后台进行配置,此时服务器最低配置建议在4C8G。
安装Chrome(非必须)
直接从网上下载Chrome浏览器安装,并配置path路径,以便通过chrome命令可以启动谷歌浏览器。
这个主要用于在发布文档的时候,渲染未被渲染的markdown文档,以及 安装chrome,是为了兼容以前的问题,并且自动安装强力模式下的网页采集。puppeteer的一些chrome浏览器依赖。
安装puppeteer、pm2
这个主要用于在发布文档的时候,渲染未被渲染的markdown文档、渲染自定义封面、以及强力模式下的网页采集。
需要先安装 node.js。可直接下载直接安装。
npm config set registry https://registry.npm.taobao.orgnpm install -g cnpmcnpm install puppeteer@2.0cnpm install -g pm2
安装calibre
calibre官网:https://www.calibre-ebook.com/
执行下面命令,能看到版本号,表示安装成功。
ebook-convert --version
calibre主要用于将文档导出生成pdf、epub、mobi文档。
本人已经使用Go语言对calibre导出pdf、epub、mobi文档进行了一层封装,欢迎大家给个star ==》https://github.com/TruthHun/converter
测试
随便创建一个txt文件
echo "Hello BookStack。你好,书栈。" > test.txt
转成pdf
ebook-convert test.txt test.pdf
查看测试的转化效果,主要看下转化的过程中有没有报错,以及转化后的文档有没有出现中文乱码。
安装Git
下载地址:https://git-scm.com/
部署程序
下载Windows版的程序
https://github.com/TruthHun/BookStack/releases
在本地解压,修改配置文件
配置文件在conf目录。
配置项可能因版本不同而不同,所以请直接根据配置文件中的配置说明进行配置,以下配置仅供参考!
注意:conf文件夹下的 xxx.conf.example 的文件,需要全部修改为 xxx.conf 的文件。.example后缀的,只是作为示例配置!!!
配置数据库和文档导出项
把app.conf.example命名为app.conf,并根据提示,修改配置。这里主要修改MySQL数据库的配置以及生成下载文档的配置。其他项能不改就不改。
# 程序名称appname = BookStack# 微信小程序 appidappId=""# 微信小程序appSecretappSecret=""# 是否限制API请求,也就是如果不是上述配置的微信小程序的appId请求的接口,则直接拒绝limitReferer=false# API 路由前缀,默认为 bookchat。API访问形式:https://您的域名/bookchat/api/v1/xxx# 比如您把api前缀改为了 hello,则您在 BookChat 或者 BookChatApp 中,需要把 config.js 中的 host 常量配置为 https://您的域名/helloapiPrefix=bookchat# 是否显示小程序阅读码(需要配置了appScecret才会生效)showWechatCode = false# 比如你将static目录下的所有静态资源都放到了专门的服务器上,那么这个域名就行用来访问你的静态资源的域名。否则建议填写web网站的域名# 如果您部署了微信小程序,则该值一定要填写。static_domain=# 监听端口httpport = 8181# 运行模式。开发时,请设置为开发模式"dev",即development;部署时,请设置为产品模式"prod",即product。dev模式下,会打印各种调试信息runmode = dev# 是否开启session,这个必须开启,否则没法玩了。sessionon = true# session名称,这个你自己定。sessionname = bookstackcopyrequestbody = true# 启动gzip压缩,则设置为true,否则设置为false。建议启动EnableGzip=true# 要压缩的静态文件扩展名,其中.xml是sitemap站点地图压缩。建议按照这个来就行了StaticExtensionsToGzip = .css, .js, .xml#站点地图host(主要用于使用CDN的时候,host与实际host不一样,导致生成的sitemap不一样)sitemap_host=www.bookstack.cn# 默认Session生成Key的秘钥beegoserversessionkey=bookstack########Session储存方式###############以文件方式储存sessionprovider=filesessionproviderconfig=store/session# 静态目录。这个是站点地图的静态目录StaticDir = sitemap:sitemap# 站点可直接访问的静态文件【注意,这里千万不能配置.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=13exportPaperSize=a4exportCreator=书栈(BookStack.CN)exportMarginLeft=36exportMarginRight=36exportMarginTop=36exportMarginBottom=36# 是否使用自定义的电子书封面,如果使用,则需要安装并启用puppeteer,否则不生效exportCustomCover=true####################MySQL 数据库配置###########################db_adapter=mysql# 您的数据库hostdb_host=#您的数据库端口db_port=3306#您的数据库用户名db_username=# 您的数据库密码db_password=# utf8或者utf8mb4数据库。如果数据库还没创建,并且账号有创建权限,将自动创建。db_database=bookstack# 谷歌浏览器,用于发布内容的时候渲染未被渲染的markdown。建议安装最新版的Chrome浏览器,并把Chrome浏览器加入系统环境变量。# 使用Chrome的headless去处理。之前考虑使用phantomjs的,但是phantomjs有些小问题,不如Chrome强大。# chrome=chromium-browserchrome=/Applications/Google\ Chrome.app/Contents/MacOS/Google\ Chrome# 如果使用 puppeteer,则忽略chromepuppeteer = false#项目默认封面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=#smtp服务器地址smtp_host=#smtp密码smtp_password=#端口号smtp_port=25#发送邮件的显示名称form_user_name=#接收回件的邮箱。留空则表示使用发送邮件的邮箱作为接收回件邮箱reply_user_name=bookstack@qq.com#邮件有效期30分钟mail_expired=30# 存储类型,后续扩展成本地存储(local)、阿里云OSS存储(oss)、七牛云存储(qiniu)、腾讯云存储(cos)、百度云存储(bos)和又拍云存储(upyun)# 目前可选项:local、ossstore_type=local# 不要修改include "oss.conf"include "oauth.conf"
配置OSS(非必须)
1、登录你的阿里云,进入OSS,创建一个只读Bucket。
2、在本地随便创建一个txt文档,将下面两行粘贴进去:
styleName:cover,styleBody:image/resize,m_fill,w_175,h_230,limit_0/auto-orient,1/quality,q_100styleName:avatar,styleBody:image/resize,m_fill,w_100,h_100,limit_0/auto-orient,1/quality,q_90
3、在OSS的图片处理-导入样式中,将该txt文档导入

4、将oss.conf.example修改成oss.conf,并根据您的阿里云OSS,配置该文件。
# 阿里云OSS配置[oss]# 是否是内网,如果您的阿里云服务器和OSS是同一内网,请设置为true,这样能更快地将文件移到oss上,否则设置为false。# 一般情况下,在开发阶段,设置为falseIsInternal=false# 内网Endpoint,如:oss-cn-hongkong-internal.aliyuncs.comEndpointInternal=# 外网Endpoint,如:oss-cn-hongkong.aliyuncs.comEndpointOuter=# 您的阿里云AccessKeyIdAccessKeyId=# 您的阿里云AccessKeySecretAccessKeySecret=# 只读状态的Bucket,不要私有的,也不要公共读写的Bucket=# oss中绑定的域名,如果您没有绑定域名,则使用阿里云oss的自带域名也行Domain=
配置第三方登录(非必须)
将oauth.conf.example重命名成oauth.conf,并根据提示修改配置。
# 第三方登录配置[oauth]##### Gitee(码云) ##### 申请地址(需要先登录):https://gitee.com/oauth/applications# 您的ClientIdgiteeClientId=# 您的ClientSecretgiteeClientSecret=# 回调地址,把下面的bookstack.cn的域名换成你的即可giteeCallback=http://www.bookstack.cn/login/gitee# 下面这两项不要动giteeAccesstoken=https://gitee.com/oauth/tokengiteeUserInfo=https://gitee.com/api/v5/user######## GitHub ######### 申请地址(需要先登录你的GitHub):https://github.com/settings/developers# 您的ClientIdgithubClientId=# 您的ClientSecretgithubClientSecret=# 回调地址,把下面的bookstack.cn的域名换成你的即可githubCallback=http://www.bookstack.cn/login/github# 下面这两项不要动githubAccesstoken=https://github.com/login/oauth/access_tokengithubUserInfo=https://api.github.com/user#### QQ ##### 申请地址(需要先登录你的QQ):https://connect.qq.com/manage.html#ClientId,即 APP IDqqClientId=#ClientSecret,即 APP KeyqqClientSecret=# 回调地址,把下面的bookstack.cn的域名换成你的即可qqCallback=http://www.bookstack.cn/login/qq# 下面这三项不要动qqAccesstoken=https://graph.qq.com/oauth2.0/tokenqqOpenId=https://graph.qq.com/oauth2.0/meqqUserInfo=https://graph.qq.com/user/get_user_info### TODO 微信和微博登录,主要是我这边忘记了以前注册的个人开发者信息,当前没开发,后续会开发出来 ####
上传和部署
1、将修改和配置好了的程序压缩,上传到站点根目录下,解压。 2、执行数据库安装。程序安装一些站点配置项、SEO项等。命令:
./BookStack install
3、配置反向代理
宝塔面板用户,直接在站点的设置里面配置反向代理,但是需要注意的是,需要修改缓存,如把下面两句注释掉:
add_header X-Cache $upstream_cache_status;expires 12h;
Nginx反向代理配置参考(宝塔的配置):
server{listen 80;server_name demo.bookstack.cn;index index.php index.html index.htm default.php default.htm default.html;root /www/wwwroot/demo.bookstack.cn;location /{proxy_pass http://localhost:8181;proxy_set_header Host $host;proxy_set_header X-Real-IP $remote_addr;proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;proxy_set_header REMOTE-HOST $remote_addr;#缓存相关配置#proxy_cache cache_one;#proxy_cache_key $host$request_uri$is_args$args;#proxy_cache_valid 200 304 301 302 1h;#持久化连接相关配置#proxy_connect_timeout 30s;#proxy_read_timeout 86400s;#proxy_send_timeout 30s;#proxy_http_version 1.1;#proxy_set_header Upgrade $http_upgrade;#proxy_set_header Connection "upgrade";}location ~ .*\.(php|jsp|cgi|asp|aspx|flv|swf|xml)?${proxy_set_header Host $host;proxy_set_header X-Real-IP $remote_addr;proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;proxy_set_header REMOTE-HOST $remote_addr;proxy_pass http://localhost:8181;}#PROXY-ENDinclude enable-php-54.conf;#PHP-INFO-END#REWRITE-START URL重写规则引用,修改后将导致面板设置的伪静态规则失效include /www/server/panel/vhost/rewrite/demo.bookstack.cn.conf;#REWRITE-END#禁止访问的文件或目录location ~ ^/(\.user.ini|\.htaccess|\.git|\.svn|\.project|LICENSE|README.md){return 404;}access_log off;}
加入系统守护进行
打开程序所在目录,执行:
pm2 start BookStack.exe
关于 PM2简单使用教程
默认管理员账号和密码
admin admin
v2.0 正式版开始,默认管理员账号密码调整为:
adminadmin888
总结
安装BookStack,需要先配置环境,安装依赖:Nginx、MySQL、calibre、chorme(chromium-browser)、supervisor,然后修改配置文件,配置MySQL数据库、OSS和第三方登录,然后上传部署和配置反向代理以及加入守护进程。
