读书是一个人能够领有的最好的习惯之一。浏览能够减少创造力和想象力。它还能够帮忙您减少记忆力和词汇量。然而一个人得不到他/她想读的书。因而,应用软件开发公司制作的应用程序在线浏览书籍能够帮忙他们,因为他们能够在网上找到各种书籍。几天前,我发现了有声小说网站源码我的项目——同一个库,应用同一个数据库,但能够通过浏览器拜访。
  
  有声小说源码:xsymz.icu
  
  我的想法是不再将书籍存储在设施中中,而是在挪动设施上和通过浏览器应用其电子书阅读器,但依然可能从任何中央拜访我的图书馆,并领有书籍的浏览地位同步性能。当初我的库自身存储在云端中,我将在我的 Android 设施上应用有声小说源码。
  
  NGINX,让咱们加密
  
  NGINX + Let's Encrypt 设置已在明码管理工具中形容:组织的明码管理器自托管版本装置在 AWS EC2帖子中。
  
  口径网络启动
  
  查看云存储下的库目录,咱们的有声小说源码将应用该目录:
  
  

$ ll /data/cloud/app/data/setevoy/files/Books/CALIBRE/ | headtotal 1212drwxr-xr-x  3 www-data www-data   4096 Dec 13 07:53 A. A. Orlovdrwxr-xr-x  7 www-data www-data   4096 Dec 13 07:53 A. Avramienkodrwxr-xr-x  3 www-data www-data   4096 Dec 13 07:55 A. Bielashdrwxr-xr-x  3 www-data www-data   4096 Dec 13 07:55 Adol_f Gitlierdrwxr-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 calibreuid=15000(calibre) gid=15000(calibre) groups=15000(calibre),15000(calibre)

  
  主机上的本地目录归以下所有:
  

$ ls -l /data/cloud/app/data/setevoy/files/Books/total 4drwxr-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 bashFind 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:rorestart: unless-stopped

  
  启动服务:
  
 

 $ docker-compose -f calibre-compose.yml up -d

  
  在Linux:systemdDocker Compose中形容了单元文件的创立,在本例中,我增加了/etc/systemd/system/cacalibre.service文件:
  
 

[Unit]Description=Calibre library serviceRequires=docker.serviceAfter=docker.service[Service]Restart=alwaysWorkingDirectory=/opt/calibre-webExecStart=/usr/local/bin/docker-compose -f calibre-compose.yml upExecStop=/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