bookstack又名书栈网,基于MinDoc,使用Beego开发的在线文档管理系统,功能类似Gitbook和看云,配套微信小程序是BookChat,配套手机APP是BookChatApp,由于官方平台只有ubuntu下部署,所以就计划写一篇在centos上安装的实战经验,本人实测系统为centos7,理论上支持所有的centos系统。
虽然名曰书栈网,用后给个人的感觉,它不仅仅有图书功能,其强大的文档版本控制和多格式文档导出、导入功能,绝对是一款你值得研究的对象!
在此感谢原创团队的分享精神,并把程序源码开源出来,让我们不需要购买版权就能使用如此牛X的程序;如果你想二开,利用编译方式安装,可做到个性化风格。
这套程序主要使用GO语言开发,不像PHP+mysql那样直接上传根目录就行,安装bookstack是需要搭建相关运行程序的,就本人多次编译安装经验,总结一下安装方式;如果你是首次使用这套系统,这篇文章或许对你会有帮助。
centos上安装中文字符集
如果是中文版centos,可跳过这一步
yum install glibc-common yum install -y langpacks-zh_CN vi /etc/locale.conf # 修改这个文件 LANG=zh_CN.utf8 source /etc/locale.conf
进入宝塔新建此文件夹,没有新建
cd /usr/share/fonts/chinese/ cd /usr/share/fonts/chinese/TrueType; mkfontscale; mkfontdir; fc-cache -fv
下载,安装go环境
wget -c https://golang.google.cn/dl/go1.16.3.linux-amd64.tar.gz
解压并移动到 /usr/local/目录
tar -xvzf go1.16.3.linux-amd64.tar.gz -C /usr/local/
查询目录权限
ls -al
进入修改
vim .bashrc
底部添加
export PATH=$PATH:/usr/local/go/bin
使之生效
source .bashrc
查看版本
go version
添加变量
export GOPROXY=https://goproxy.io,direct
如果能查到go版本号表示安装成功!即可进行下一步:
安装bee
1.不翻墙情况下,如果直接执行下面命令会各种报错,无法下载!
go get -u github.com/beego/bee/v2
2.我们执行下面两句命令,然后执行安装命令就可以顺利安装,溜得飞起。
执行:
go env -w GO111MODULE=on go env -w GOPROXY=https://goproxy.cn,direct
再次安装
go get -u github.com/beego/bee/v2 echo 'export GOPATH="$HOME/go"' >> ~/.bashrc echo 'export PATH="$GOPATH/bin:$PATH"' >> ~/.bashrc exec $SHELL
查看是否安装成功
bee version
编译安装bookstack
下载bookstack,上传到网站根目录,打开目录命令
输入编译命令
bee run go mod download ./BookStack-X install bee run
如果能正常编译并打印出编译进程代码,我们需要稍等片刻,直至编译完成,这时进入网站根目录会出现编译后的文件包;到此,环境搭建完成!为了体现bookstack全部功能,我们接下来就需要安装相应插件。
更新系统源
sudo yum upgrade
安装Chromium(生成pdf格式会用到)
yum install chromium
打印网页
chromium-browser --headless --disable-gpu --dump-dom --no-sandbox https://www.baidu.com
不出错证明安装成功!
这是让root用户可以运行chrome
echo 'export QTWEBENGINE_CHROMIUM_FLAGS="--no-sandbox"' >> ~/.bashrc` source ~/.bashrc
安装calibre
在运行安装程序之前,您必须在系统上安装 xdg-utils、wget、xz-utils 和 python ≥ 2.6。
您可以通过运行卸载 calibre sudo calibre-uninstall。或者,只需删除安装文件夹即可删除 99% 的已安装文件。
您需要 GLIBC 2.18 或更高版本以及 libstdc++.so.6.0.21(来自 gcc 5.4.0)或更高版本才能运行 calibre
如果您收到错误Could not load the Qt platform plugin xcb,则您缺少一些所需的 X11-XCB 库,例如 libxcb-xinerama0,有关详细信息,请参见此处。
您可以像这样更改从默认 (/opt) 安装到的文件夹 calibre:
安装相关依赖
yum install zlib-devel bzip2-devel openssl-devel ncurses-devel sqlite-devel readline-devel tk-devel gcc make xdg-utils wget qt4 qt4-devel qt4-x11 libpcap-devel xz-devel -y
安装calibre
sudo -v && wget -nv -O- https://download.calibre-ebook.com/linux-installer.sh | sudo sh /dev/stdin
如果提示无python
安装组件
1安装EPEL
yum install epel-release
2安装python;
yum install python36 #安装python3.6
3安装pip
如果新系统尚未安装工具pip,可通过以下三步快速安装pip
1. yum -y install epel-release 2. yum -y install python-pip 3. pip --version 查看pip版本
注意:由于pip和pip3属于两个版本,默认为pip如果需要用pip3需要在`.bashrc`变量中加入`alias pip=pip3`并使之生效`source ~/.bashrc`
export LD_LIBRARY_PATH=/usr/loacl/glibc2.19/lib export LD_LIBRARY_PATH=$LD_LIBRARY_PATH
# yum install libstdc++.so.6 -y --- 查看动态库版本有哪些 # strings /usr/lib64/libstdc++.so.6 | grep GLIBC # wget http://ftp.de.debian.org/debian/pool/main/g/gcc-4.8/libstdc++6-4.8-dbg_4.8.4-1_amd64.deb # ar -x libstdc++6-4.8-dbg_4.8.4-1_amd64.deb # tar -xvf data.tar.xz -- 拷贝至/usr/lib64下 # cp ./usr/lib/x86_64-linux-gnu/debug/libstdc++.so.6.0.19 /usr/lib64 -- 授权 # chmod +x /usr/lib64/libstdc++.so.6.0.19 -- 删除低版本库的软连接 # rm /usr/lib64/libstdc++.so.6 # ln -s /usr/lib64/libstdc++.so.6.0.19 /usr/lib64/libstdc++.so.6 添加变量(注意文件版本号要统一) export LD_LIBRARY_PATH=/usr/loacl/glibc2.19/lib export LD_LIBRARY_PATH=$LD_LIBRARY_PATH # cd /usr/local # wget http://mirrors.ustc.edu.cn/gnu/libc/glibc-2.19.tar.gz # tar -xzvf glibc-2.19.tar.gz # cd glibc-2.19 # mkdir build && cd build/ # ../configure --prefix=/usr --disable-profile --enable-add-ons --with-headers=/usr/include --with-binutils=/usr/bin # make -j4 # make install --- 解决中文乱码问题 # make localedata/install-locales --- 检查验证 # ll /lib64/libc* --- 查看系统glibc支持的版本 # strings /lib64/libc.so.6 |grep GLIBC # /lib64/libc.so.6
再次执行
sudo -v && wget -nv -O- https://download.calibre-ebook.com/linux-installer.sh | sudo sh /dev/stdin
查看版本
ebook-convert --version
安装
yum install libGL
echo "Hello BookStack。你好,书栈。" > test.txt ebook-convert test.txt text.pdf
没出错的话,即可转换成功。
安装node wget https://npm.taobao.org/mirrors/node/v16.13.2/node-v16.13.2-linux-x64.tar.gz
依次执行下列指令
xz -d node-v16.13.2-linux-x64.tar.xz tar -zxvf node-v16.13.2-linux-x64.tar.xz tar -xvf node-v16.13.2-linux-x64.tar.gz
添加变量并保存:
export NODE_HOME=/root/node export PATH=$NODE_HOME/bin:$PATH source ~/.bashrc
安装dnf命令
yum install dnf
验证是否成功
node -v npm -v
安装nrm
npm i -g cnpm
请求被拒绝:fetchMetadata: WARN deprecated request@2.88.2: request has been deprecated,先切换到淘宝镜像源:
npm config set registry https://registry.npm.taobao.org
进入根目录
cd /www/wwwroot/BookStack-X
再次安装
npm i -g cnpm
安装puppeteer(安装谷歌浏览器后这个可不安装)
初次安装命令:
npm install puppeteer
如果安装之后,又新建项目时,需要重新为新建项目安装puppeteer:
在新建的项目文件目录的终端,运行:
npm -v npm i puppeteer cnpm i puppeteer cd /root/
安装git
sudo dnf install git
或
yum -y install git
配置数据库
把app.conf.example命名为app.conf,并根据提示,修改配置。这里主要修改MySQL数据库的配置以及生成下载文档的配置。其他项能不改就不改。
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-END include 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; }
最后我们检测变量环境添加是否正确
export GOROOT=/usr/local/go export PATH=$PATH:$GOROOT/bin export GOPATH=$HOME/go export PATH=$GOPATH/bin:$PATH export QTWEBENGINE_CHROMIUM_FLAGS="--no-sandbox" alias pip=pip3 export LD_LIBRARY_PATH=/usr/loacl/glibc2.19/lib export LD_LIBRARY_PATH=$LD_LIBRARY_PATH export NODE_HOME=/root/node export PATH=$NODE_HOME/bin:$PATH
最后执行生效
source .bashrc
至此,运行环境及插件就全部安装完毕,接下来我们需要设置开机自动启动及伪静态
我们先在网站配置文件里配置nginx伪静态,规则如下(根据情况更改参数)
server { listen 80; server_name demo.cn; index index.php index.html index.htm default.php default.htm default.html; root /www/wwwroot/demo.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-END include 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; }
设置开机自启
方案一:通过指令ssh添加
进入
cd /etc/rc.d/rc.local
添加
/root/BookStack.sh
进入下列目录》》新建文件
/root/BookStack.sh
在文档内添加
sleep 10s su - root export QTWEBENGINE_CHROMIUM_FLAGS="--no-sandbox" cd /home/wwwroot/BookStack-X nohup ./BookStack-X >> /home/wwwroot/BookStack-X/bookstack.log 2>&1 & exit
添加权限
ls -l /etc/rc.d/rc.local cat /etc/rc.d/rc.local chmod +x /etc/rc.d/rc.local chmod +x BookStack.sh
方案二:通过宝塔添加自启守护
进入网站根目录添加如图文件,并输入如下内容
进入宝塔软件商店现在系统启动项
添加启动项
填入启动项名字与.sh文件的位置
我建议用宝塔面板来管理自启项,有图形界面,操作起来更直观,最后重启服务器,如果环境搭建没问题,程序便能正常运行。
如果实在嫌麻烦,想直接用现成的,那完全可以联系客服,通过我们的专业工程师搭建;如果你没有服务器,也不计划在公网运行,通过建虚拟机在局域网运行也是不错的选择!
需要技术支持>>联系我