读书是一个人可以拥有的最好的习惯之一。阅读可以增加创造力和想象力。它还可以帮助您增加记忆力和词汇量。但是一个人得不到他/她想读的书。因此,使用软件开发公司制作的应用程序在线阅读书籍可以帮助他们,因为他们可以在网上找到各种书籍。几天前,我发现了有声小说网站源码项目——同一个库,使用同一个数据库,但可以通过浏览器访问。
有声小说源码:xsymz.icu
我的想法是不再将书籍存储在设备中中,而是在移动设备上和通过浏览器使用其电子书阅读器,但仍然能够从任何地方访问我的图书馆,并拥有书籍的阅读位置同步功能。现在我的库本身存储在云端中,我将在我的 Android 设备上使用有声小说源码。
NGINX,让我们加密
NGINX + Let's Encrypt 设置已在密码管理工具中描述:组织的密码管理器自托管版本安装在 AWS EC2帖子中。
口径网络启动
检查云存储下的库目录,我们的有声小说源码将使用该目录:
$ ll /data/cloud/app/data/setevoy/files/Books/CALIBRE/ | head
total 1212
drwxr-xr-x 3 www-data www-data 4096 Dec 13 07:53 A. A. Orlov
drwxr-xr-x 7 www-data www-data 4096 Dec 13 07:53 A. Avramienko
drwxr-xr-x 3 www-data www-data 4096 Dec 13 07:55 A. Bielash
drwxr-xr-x 3 www-data www-data 4096 Dec 13 07:55 Adol_f Gitlier
drwxr-xr-x 3 www-data www-data 4096 Dec 13 07:55 Al_bier Kamiu
...
使用有声小说源码运行一个 Docker 容器,将库的目录安装在里面/books:
$ docker run -ti --name books -p 8083:8083 -v /data/cloud/app/data/setevoy/files/Books/CALIBRE/:/books technosoft2000/calibre-web
检查是否metadata.db存在:
$ docker exec -ti books ls -l /books/metadata.db
-rw-r--r-- 1 xfs xfs 752640 Dec 13 07:51 /books/metadata.db
在浏览器中打开您的 URL,并设置一个目录路径,该/books目录必须包含metadata.dbCalibre 用来存储图书馆所有书籍信息的文件:
使用默认admin:admin123登录:
你现在会看到你的图书馆:
这里的类别菜单只是来自有声小说源码的标签:
和普通的有声小说源码一样——您可以从浏览器查看、添加、编辑和阅读书籍:
“无法创建路径 /books/(权限被拒绝)”错误
如果您现在尝试上传文件,您可能会遇到以下错误:
无法创建路径 /books/Mark Menson/Tonkoe iskusstvo pofigizma_Paradoksal'nyi sposob zhit' schastlivo(权限被拒绝)。
对我来说,这是一个预期的错误,因为云存储和有声小说源码Docker 容器/data/cloud/app/data/setevoy/files/Books/CALIBRE/现在都在使用该目录。
检查有声小说源码容器中的用户:
$ docker exec -ti books ps | grep cali
0:08 /usr/bin/python /calibre-web/app/cps.py
还有他的 UID:
$ docker exec -ti books id calibre
uid=15000(calibre) gid=15000(calibre) groups=15000(calibre),15000(calibre)
主机上的本地目录归以下所有:
$ ls -l /data/cloud/app/data/setevoy/files/Books/
total 4
drwxr-xr-x 117 www-data www-data 4096 Dec 16 09:32 CALIBRE
以及www-data用户的 UID:
$ id www-data
uid=33(www-data) gid=33(www-data) groups=33(www-data)
即有声小说源码使用calibreUID 15000的用户,但主机上的 NGINX 和 云存储容器都使用www-dataUID 33的用户。
要解决这个问题——在主机上创建一个UID 为 15000的新用户calibre :
$ sudo useradd -u 15000 calibre
$ id calibre
uid=15000(calibre) gid=15000(calibre) groups=15000(calibre)
更改目录所有权:
$ sudo chown -R calibre:calibre /data/cloud/app/data/setevoy/files/Books/CALIBRE/
重启口径:
$ docker restart calibre-web
calibre-web
现在检查上传 - 现在必须工作:
下一个云PUT403
但是现在云存储坏了——在桌面客户端上,我在同步期间遇到 403 错误,例如:
172.29.0.2 – setevoy [16/Dec/2019:13:22:24 +0000] “PUT /remote.php/dav/files/setevoy/Books/CALIBRE/Pol'%20Diubua/MySQL%20(68)/cover .jpg HTTP/1.1” 403 759 “-” “Mozilla/5.0 (Linux) mirall/2.6.1git”
要解决此问题,请将上面创建的calibre用户添加到www数据组:
$ usermod -a -G www-data calibre
Check his groups now:
立即查看他的组:
$ id calibre
uid=15000(calibre) gid=15000(calibre) groups=15000(calibre),33(www-data)
递归地更改所有权–向www数据组成员(例如,g)授予www数据和calibre用户的完全权限:
$ find /data/cloud/app/data/setevoy/files/Books/CALIBRE/ -type d -exec chmod g+rwx {} +
并更改所有者:
$ chown -R calibre:www-data /data/cloud/app/data/setevoy/files/Books/CA
这已经完成,同步现在也在工作。
Docker合成
要实现数据持久性,首先让我们查找容器中存储的数据位置,例如应用程序的数据库及其所有设置。
您可以阅读文档,或连接到容器:
$ docker exec -ti calibre-web bash
Find all _*.db_ files:
bash-4.4# find / -name "*.db"
/calibre-web/app/app.db
/calibre-web/app/gdrive.db
...
在主机上为Docker Compose文件和应用程序数据创建目录:
$ mkdir /opt/calibre-web/
$ mkdir -p /data/calibre/app
$ chown -R calibre:calibre /data/calibre/
在/opt/有声小说源码/目录中创建calibre-compose.yml文件:
version: '3'
services:
calibre-web:
user: "root:root"
image: technosoft2000/calibre-web
container_name: calibre-web
ports:
- 8083:8083
volumes:
- /data/cloud/app/data/setevoy/files/Books/CALIBRE/:/books
- /data/calibre/app:/calibre-web/app/
- /var/run/docker.sock:/tmp/docker.sock:ro
restart: unless-stopped
启动服务:
$ docker-compose -f calibre-compose.yml up -d
在Linux:systemdсервисдляDocker Compose中描述了单元文件的创建,在本例中,我添加了/etc/systemd/system/cacalibre.service文件:
[Unit]
Description=Calibre library service
Requires=docker.service
After=docker.service
[Service]
Restart=always
WorkingDirectory=/opt/calibre-web
ExecStart=/usr/local/bin/docker-compose -f calibre-compose.yml up
ExecStop=/usr/local/bin/docker-compose -f calibre-compose.yml down
[Install]
WantedBy=multi-user.target
开箱即用的有声小说源码有两个主题——轻主题,默认为:
将metadata.db与云存储合并
这一问题与云存储作为存储的当前设置有关,因为它在我自己的服务器上运行,有时可能处于脱机状态,这可能会导致桌面上的数据不同步。
问题是,当您使用有声小说源码从浏览器编辑书籍时,主Calibre文件(metadata.db)将在主机的文件系统上更新,但当它像服务器一样运行时,此更改不会触发本地云存储实例将此更改推送到其客户端,因为它不是客户端部分。
然后,如果您的有声小说源码桌面在配置为使用相同的云存储,并且具有类似云存储桌面的桌面客户端,如果您将运行本地在线阅读桌面并对其库进行任何更改,这将影响您的metadata.db文件,这将触发您的云存储客户端将这些更改推送到云存储服务器,这将覆盖服务器上的更改。
因此,为了避免这种情况,需要在使用云存储服务器之前手动同步桌面的在线阅读目录内容。
为此,只需发出以下命令:
$ cloudcmd --user setevoy -p PASSWORD /home/setevoy/cloud/Books/CALIBRE/ https://cloud.example.org.ua/Books/CALIBRE