欢迎光临龚老师的博客
分享知识,收获快乐

记录DocHub的搬家过程

内容纲要

和上一个应用搬家原因一样,

另一个基于DocHub的程序也部署在旧服务器上,

今天有时间再来恢复一下。

安装环境的过程中,又走了一些弯路。

因此有必要记录一下,以免下次再走一次……

因为我的服务器是 ubuntu 22.04, 因此选择Linux 下安装部署 DocHub 文库系统的教程。

首先打开官方的教程地址:

https://www.bookstack.cn/read/dochub/install-linux.md

1,更新服务器所有的配置:

# update
sudo apt update

2,安装 libreoffice

sudo apt install -y fonts-wqy-zenhei fonts-wqy-microhei libreoffice imagemagick pdf2svg poppler-utils

3,安装 Calibre

安装Calibre的时候是最郁闷的,官方教程里的地址已经失效,我以为需要到 Calibre 的官网去找正确的地址。

安装的时候等了大半个小时,才下载了3%,我这暴脾气无法忍受,又自己重新从官网直接下载了文件,然后问AI怎么手动安装,折腾了又大半个小时,一查版本,结果还是显示没有安装,提示我是否安装,此时我已经有点急躁了,直接使用终端提供的安装命令sudo apt install calibre就安装了。

结果神奇的是,竟然成功了!!
所以,忽略官方的安装命令,直接使用这个命令即可快速安装Calibre。

sudo apt install calibre

使用这个命令来检查是否安装成功:

ebook-convert --version

安装成功后,不要着急,先用宝塔在项目的目录下创建一个example.txt的文件,并在文件中写入一行中文和一行英文(检查转换后的中文内容不会乱码),再使用命令来转换这个文件:

ebook-convert example.txt example.pdf

使用这个命令的时候要注意不能使用root用户,但是使用普通用户的时候会提示权限不足,无法将转换后的文件写入目录,需要给用户临时的写入权限:

sudo chown -R ubuntu:ubuntu /www/wwwroot/wenku**.cn/

然后再执行上述命令。

完成后,在根目录下会出现一个名为example.pdf的文件,下载后打开看看有没有乱码。

如果存在乱码,则朝以下两个方向去解决。

  • 字符编码是否支持,比如 gbk 或者 utf-8 等,

  • 是否缺少相应的中文字体库。可以使用如下的方式进行安装:

    sudo apt install ttf-wqy-zenhei
    sudo]apt install fonts-wqy-microhei

安装 pdf2svg

直接使用如下命令进行一键安装:

sudo apt install pdf2svg

这个很顺利,一下就成功。

在终端执行如下命令:

pdf2svg

如果显示如下结果,则表示安装成功:

Usage: pdf2svg <in file.pdf> <out file.svg> [<page no>]

如果显示的内容不是上面提示的那样,则表示安装的版本不对,请通过搜索引擎找办法进行解决。

使用刚刚转换的example.pdf文件,通过如下命令,将PDF文档转svg:

sudo pdf2svg example.pdf example-no1.svg

安装 ImageMagick

这个也很顺利,一下就成功。

sudo apt install imagemagick

在终端执行如下命令查看版本:

convert --version

如果能查询到版本号,则表示安装成功。 如果查询不到版本号或者提示找不到命令,则排查下 ImageMagick 是否已经安装,并且配置了系统环境变量。

一般情况下,Linux和Mac下使用命令的方式进行一键安装的话,会自动把软件加入到系统环境变量之中。

安装supervisor

作用:将程序加入系统守护进程

安装命令:

apt install supervisor

判断是否安装成功:

supervisord --version

显示版本号,即表示安装成功。

配置守护进程

[program:dochub]
directory = /www/wwwroot/www.dochub.me
command =/www/wwwroot/www.dochub.me/DocHub
autostart = true
autorestart=true
user = root
redirect_stderr = true
stdout_logfile = /var/log/supervisor/dochub.log

上传程序文件

上传备份的文件,或下载 DocHub.V2.1_linux_amd64.zip 文件,即DocHub v2.1 版本,Linux 64位系统程序。

将程序解压到网站目录,如:

/www/wwwroot/dochub

创网站和建数据库

用宝塔创建网站和数据库,进入项目目录修改/conf/app.conf中数据库账号和密码。

导入数据库文件

【导入备份的数据库文件】,似乎不用导入也可以,官方文档说明如下:

初始化数据是写在程序内部的,不需要额外的SQL文件导入数据,每当程序启动,都会先检测是否已经初始化,如果数据已经初始化,则不会再初始化。

我理解的是,只需要备份项目目录即可,这个不确定,有懂的朋友请指教!

启动并访问项目

通过以下命令启动程序:

./DocHub

然后访问如下地址进行安装(其中IP为您的服务器IP):

http://ip:8090
如果打不开,就要重启守护进程。

重启守护进程

supervisorctl reload

重启不成功

安装过程中,出现了重启守护进程不成功的现象。

root@VM-0-13-ubuntu:~# supervisorctl reload
error: <class 'ConnectionRefusedError'>, [Errno 111] Connection refused: file: /usr/lib/python3.10/socket.py line: 833

出现 ConnectionRefusedError 错误通常意味着 supervisorctl 尝试连接到 supervisord 守护进程时被拒绝。这可能是因为 supervisord 没有运行,或者它的配置文件中有错误导致它无法正常启动。
使用 ps 命令来检查 supervisord 是否正在运行。

ps aux | grep supervisord

果然,返回了这样的结果:

root     2457094  0.0  0.1   6612  2128 pts/4    S+   09:09   0:00 grep --color=auto supervisord

从输出中,我们可以看到 grep 命令正在搜索与 supervisord 相关的进程,但是没有找到任何结果(除了 grep 命令本身)。这意味着 supervisord 进程没有在运行。

解决方法

进入 supervisord的配置文件路径查看,发现没有supervisord.conf 这个文件。
要自己创建,并输入代码:

; supervisor config file
[unix_http_server]
file=/var/run/supervisor.sock   ; (the path to the socket file)
chmod=0700                       ; sockef file mode (default 0700)
[supervisord]
logfile=/var/log/supervisor/supervisord.log ; (main log file;default $CWD/supervisord.log)
pidfile=/var/run/supervisord.pid ; (supervisord pidfile;default supervisord.pid)
childlogdir=/var/log/supervisor            ; ('AUTO' child log dir, default $TEMP)
; the below section must remain in the config file for RPC
; (supervisorctl/web interface) to work, additional interfaces may be
; added by defining them in separate rpcinterface: sections
[rpcinterface:supervisor]
supervisor.rpcinterface_factory = supervisor.rpcinterface:make_main_rpcinterface
[supervisorctl]
serverurl=unix:///var/run/supervisor.sock ; use a unix:// URL  for a unix socket
; The [include] section can just contain the "files" setting.  This
; setting can list multiple files (separated by whitespace or
; newlines).  It can also contain wildcards.  The filenames are
; interpreted as relative to this file.  Included files *cannot*
; include files themselves.
[include]
files = /etc/supervisor/conf.d/*.conf

再次使用命令supervisorctl reload,成功重启,项目也能正常运行了。

申请SSL

在配置反向代理前,要申请和部署SSL证书

配置反向代理

http://127.0.0.1:8090

大功告成!

赞(0)
未经允许不得转载:龚老师网络科技 » 记录DocHub的搬家过程
分享到

评论 抢沙发

评论前必须登录!

 

登录

找回密码

注册