和上一个应用搬家原因一样,
另一个基于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
评论前必须登录!
注册