如何在 Debian 8 上使用 Booktype 出版书籍

此分類上一篇: [Sourcefabric]

介绍

Booktype是一个专门的内容管理系统,用于制作书籍,包括真实的,看起来漂亮的书籍,你可以握在你的手中。

您可以以 PDF、EPUB、MOBI、XML 和 HTML 格式生成 Booktype 输出,可供书店或开放式网络使用。 作者可以将现有手稿导入 Word 的.docx 格式或作为 EPUB,这些手稿将转换为 Booktype 的本地 HTML 章节格式以便使用 Aloha进行编辑。

Booktype 也是一个社交环境,作者可以在制作书籍时聊天和分享笔记,寻求他人帮助,或寻找项目来贡献。

Booktype 可以在任何合适的 GNU/Linux 或 Apple OS X 服务器上安装,原则上也可以在 Windows 上运行,但本教程专注于推荐的 Debian stable 平台,版本 8.2 (Jessie)。

在本教程中,我们将通过安装 Booktype,这将使您和您的同事能够制作用于打印和屏幕的PDF书籍,数字设备的EPUB和您的网站的XHTML - 所有从一个来源。

前提条件

要遵循本教程,您将需要:

一个新的 Debian 8.2 Droplet(一个 512 MB / 1 CPU Droplet 将工作,但一个 1 GB / 1 CPU Droplet 是推荐的更好的性能)

步骤一:建立依赖性

在安装 Booktype 之前,您需要先安装开发包:RabbitMQ 服务器、Redis 服务器、PostgreSQL 数据库管理系统、干净的语法检查器以及 Apache 网络服务器及其 WSGI 模块:

1sudo apt-get install git-core python-dev python-pip libjpeg-dev libpq-dev libxml2-dev libxslt-dev rabbitmq-server redis-server postgresql tidy apache2-mpm-prefork libapache2-mod-wsgi

如果您希望 Booktype 能够向作者发送电子邮件通知,您还需要一个可用的 SMTP 邮件服务器。 最简单的出发邮件服务器设置是在教程中显示的 如何在 Ubuntu 14.04 上安装和配置 Postfix 作为仅发送 SMTP 服务器

1sudo apt-get install postfix mailutils

而不是:

1sudo apt-get install mailutils

否则,Debian 的默认邮件服务器Exim将被安装,而不是Postfix。

步骤 2 — 安装 PDF Renderer (可选)

如果你想制作印刷书籍,你需要一个渲染器来将 Booktype 的 HTML 章节转换成一个单一的 PDF 文件。 建议使用 PHP 应用程序 mPDF 6.0,因为它对预印功能的广泛支持。 在安装 mPDF 之前,你需要安装 PHP 的命令行解释器和 unzip 实用程序。

1sudo apt-get install php5-cli unzip

接下来,下载mPDF,从目录 /var/www/中提取它:

1sudo wget http://mpdf1.com/repos/MPDF60.zip
2sudo unzip MPDF60.zip -d /var/www/

文件相当大,所以下载可能需要一段时间。

最后,将mPDF临时目录的所有者更改为Apache Web 服务器用户www-data:

1cd /var/www/mpdf60/
2sudo chown www-data.www-data graph_cache/ tmp/ ttfontdata/

步骤三:创建数据库

下一步你需要的是一个可用的数据库,然后输入以下命令来创建 PostgreSQL 用户 booktype-user:

1sudo -u postgres createuser -SDRP booktype-user

请在提示时输入您想要在数据库中设置的密码,您将需要重新输入以进行确认。

<$>[注] **注:**在安全的地方写下密码,您将在 Step 5 — Creating a Booktype Instance <$>中再次需要它。

然后创建一个名为booktype-db的数据库,将booktype-user设置为所有者。

1sudo -u postgres createdb -E utf8 -O booktype-user booktype-db

<$>[注] **注:**创建PostgreSQL用户的命令行选项是字母O(-O),而不是数字零。

<$>[注] 注: 如果您使用不同的数据库名称或所有者,请将其写下来。

通过检查nano编辑器的PostgreSQL配置文件来确认与数据库booktype-db的连接是允许的:

1sudo nano /etc/postgresql/9.4/main/pg_hba.conf

文件的尽头附近有一个包含客户端身份验证规则的部分,它应该看起来如下:

1[label /etc/postgresql/9.4/main/pg_hba.conf]
2# TYPE DATABASE USER ADDRESS METHOD
3
4# "local" is for Unix domain socket connections only
5local all all peer
6# IPv4 local connections:
7host all all 127.0.0.1/32 md5
8# IPv6 local connections:
9host all all            ::1/128 md5

上面的示例中的部分表明,通过IPv4和IPv6在这个服务器上允许所有本地连接到PostgreSQL,所以我们可以去。

步骤 4 – 使用 Git 安装 Booktype

虽然从 Sourcefabric apt 服务器提供一个 .deb 包,但 GitHub 包含最新的 Booktype 版本。使用 Git 还可以更容易地在发布之间跟踪错误修复或向 Booktype 项目贡献拉动请求。

1sudo mkdir /usr/local/src/booktype/
2sudo git clone https://github.com/sourcefabric/Booktype.git --branch 2.0 --depth 1 /usr/local/src/booktype/

接下来,安装开发和生产安装的要求,以便您可以使用:

1sudo pip install -r /usr/local/src/booktype/requirements/dev.txt
2sudo pip install -r /usr/local/src/booktype/requirements/prod.txt

步骤 5 – 创建一个 Booktype 实例

一个单一的 Booktype 服务器可以托管多个 instances,每一个都有其自己的作者、组和书籍社区,这使您能够为特定兴趣创建单独的环境,而不是将无关的作者和书籍项目在一个通用平台上聚集在一起。

创建图书类型实例的目录,如 /var/www/booktype/:

1sudo mkdir /var/www/booktype/

确保它属于运行Web服务器的www-data用户:

1sudo chown www-data:www-data /var/www/booktype/

默认情况下,Debian 8.2 不允许用户www-data输入命令,您需要在/etc/passwd文件中编辑www-data的行,以便继续:

1sudo nano /etc/passwd

www-data用户的/usr/sbin/nologin代替/bin/bash如下:

1www-data:x:33:33:www-data:/var/www:/bin/bash

Ctrl+X关闭Nano,在提示时保存文件。

现在切换到www数据,开始创建 Booktype 实例:

1sudo su www-data

创建第一个 Booktype 实例,在 /var/www/booktype/instance1 目录中使用 dev 配置文件和 postgresql 数据库:

1cd /usr/local/src/booktype/scripts/
2./createbooktype -p dev --check-versions --database postgresql /var/www/booktype/instance1

转到刚刚创建的实例目录,并编辑包含该实例基本设置的 base.py 文件:

1cd /var/www/booktype/instance1/
2nano instance1_site/settings/base.py

此檔案有幾個部分需要編輯,以適合您的安裝。 首先,設定系統管理員的名稱和電子郵件地址:

1[label base.py]
2ADMINS = (
3    # ('Your Name', '[email protected]'),
4)

将活跃的配置文件设置为dev用于开发,目前为止:

1[label base.py]
2PROFILE_ACTIVE = 'dev'

输入您的 Booktype 实例的网站名称:

1[label base.py]
2BOOKTYPE_SITE_NAME = 'Your Booktype Site'

输入要在发送通知和报告时使用的电子邮件地址以及发送邮件服务器的详细信息. 如果您已在 Droplet 上安装了 Postfix,则可以使用localhost25端口的默认值为电子邮件服务器:

1[label base.py]
2DEFAULT_FROM_EMAIL = '[email protected]'
3REPORT_EMAIL_USER = '[email protected]'
4
5EMAIL_HOST = 'localhost'
6EMAIL_PORT = 25

如果您选择安装 mPDF,请输入安装目录的位置:

1[label base.py]
2MPDF_DIR = '/var/www/mpdf60/'

如果作者未指定,请输入使用的默认发布者的名称:

1[label base.py]
2DEFAULT_PUBLISHER = "Your Publishing Company"

如果您刚刚安装了 Redis,而不使用它用于任何其他用途,您可以将REDIS STUFF的默认值留在原有的位置. 如果您有多个应用程序使用本地的 Redis 服务器,则需要将REDIS_DB的值更改为其他数字,而不是零。

1[label base.py]
2# REDIS STUFF
3REDIS_HOST = 'localhost'
4REDIS_PORT = 6379
5REDIS_DB = 0
6REDIS_PASSWORD = None

设置实例时区和默认界面语言代码:

1[label base.py]
2TIME_ZONE = 'Europe/Berlin'
3
4LANGUAGE_CODE = 'en-us'

作者将能够从安装的 Booktype 本地化(如法语或西班牙语)中选择自己的界面语言。

保存和退出文件。

接下来,在 /var/www/booktype/instance1/ 目录中,编辑包含 Booktype 实例开发设置的 dev.py 文件:

1nano instance1_site/settings/dev.py

输入您的 Booktype 开发服务器的域名和 URL:

1[label dev.py]
2THIS_BOOKTYPE_SERVER = 'booktype.example.com'
3BOOKTYPE_URL='http://booktype.example.com'

设置数据库连接的名称、用户名和密码. 用户名 booktype-user 和 PostgreSQL 数据库名称 booktype-db 应该与您在 Step 3 — Setting Up The Database 中使用的相同。

它应该类似于下面的例子:

 1[label dev.py]
 2DATABASES = {'default':
 3                   {'ENGINE': 'django.db.backends.postgresql_psycopg2',
 4                    'NAME': 'booktype-db',
 5                    'USER': 'booktype-user',
 6                    'PASSWORD': 'booktype-password',
 7                    'HOST': 'localhost',
 8                    'PORT': ''
 9                   }
10            }

Ctrl+O来保存文件和Ctrl+X来退出nano编辑器。

<$>[注] **注:**当您的 Booktype 实例准备部署时,您将能够切换到使用不同的域名和数据库的 prod 配置文件,同时保持您的开发配置文件可供测试。

加载环境变量:

1. ./booktype.env

初始化数据库:

1./manage.py syncdb

在过程结束时,您将看到以下内容. 回答是以创建超级用户:

1You have installed Django's auth system, and don't have any superusers defined.
2Would you like to create one now? (yes/no): yes

如需,如需输入所需信息:

1Username (leave blank to use 'www-data'): admin
2E-mail address: `[email protected]`
3Password:
4Password (again):
5Superuser created successfully.

从 Booktype 组件应用程序中收集静态文件到单个目录。

1./manage.py collectstatic

服务器会回复:

1You have requested to collect static files at the destination
2location as specified in your settings:
3
4    /var/www/booktype/instance1/static
5
6This will overwrite existing files!
7Are you sure you want to do this?
8
9Type 'yes' to continue, or 'no' to cancel:

在键入并按下ENTER键后,请输入以下命令以获取所有已安装的 Django 应用程序,并更新其权限,然后更新注册和匿名用户的默认角色:

1./manage.py update_permissions
2./manage.py update_default_roles

现在安装完成了. 返回终端中的正常非根 sudo 用户提示,使用命令:

1exit

您不再作为www-data用户输入命令。

步骤 6 – 配置 Apache

将创建实例时生成的 wsgi.apache 文件复制到虚拟主机的 Apache 配置目录:

1sudo cp /var/www/booktype/instance1/conf/wsgi.apache /etc/apache2/sites-available/booktype-instance1.conf

编辑虚拟主机配置文件:

1sudo nano /etc/apache2/sites-available/booktype-instance1.conf

您至少应该将ServerNameSetEnv HTTP_HOST的值更改为为服务器配置的域名和ServerAdmin为管理员电子邮件地址:

1[label /etc/apache2/sites-available/booktype-instance1.conf]
2<VirtualHost *:80>
3
4     # Change the following three lines for your server
5     ServerName booktype.example.com
6     SetEnv HTTP_HOST "booktype.example.com"
7     ServerAdmin [email protected]

由于 Debian 8.2 具有 Apache 2.4 功能,所以您需要在所有位置目录条款中注释要求所有授予字符,以便注释要求所有授予字符,请在每个行开始时删除 # 字符:

 1[label /etc/apache2/sites-available/booktype-instance1.conf]
 2     <Location "/">
 3       #Require all granted
 4       Options FollowSymLinks
 5     </Location>
 6
 7     Alias /static/ "/var/www/booktype/instance1/static/"
 8     <Directory "/var/www/booktype/instance1/static/">
 9       #Require all granted
10       Options -Indexes
11     </Directory>
12
13     Alias /data/ "/var/www/booktype/instance1/data/"
14     <Directory "/var/www/booktype/instance1/data/">
15       #Require all granted
16       Options -Indexes
17     </Directory>

Ctrl+O来保存文件和Ctrl+X来退出nano编辑器。

然后禁用默认的 Apache 配置,并使用以下命令启用 Booktype 虚拟主机:

1sudo a2dissite 000-default.conf
2sudo a2ensite booktype-instance1.conf

重新启动 Apache Web 服务器以启用命令中的更改:

1sudo service apache2 restart

您现在应该能够浏览您的 Booktype 实例,在 VirtualHost 配置中定义的ServerName的 URL 上,例如 booktype.example.com. 点击 Django 调试工具栏的顶部来隐藏它(使用prod配置文件时,此工具栏将不存在)。

The Django debug toolbar can be hidden from view by clicking on it

<$>[注] **注:**您可以从浏览器窗口右上角的下滑菜单中选择接口语言。

使用您先前创建的超级用户帐户详细信息登录 Booktype (在我们的示例中,‘admin’)。

Booktype login dialog

登录后,与超级用户电子邮件地址相关的 gravatar,如果您有,将显示在 PeopleMy Profile 框中。

Booktype homepage

步骤7 - 与监护人一起运行谷歌

Celery 是 Booktype 服务器使用的任务队列。一旦安装 Booktype,您可能需要一个流程监视器,以便在发生任何故障或重新启动的情况下让 Celery 工人运行。

1sudo apt-get install supervisor

supervisord程序在安装后自动启动,并配置为在下一次重新启动服务器时自动启动。

现在,我们必须创建一个配置文件以使用 Booktype 和 Celery 命令:

1sudo nano /etc/supervisor/conf.d/booktype-instance1.conf

对于在 /var/www/booktype/instance1 中的第一个有 10 个工作者的 Booktype 实例,文件 booktype-instance1.conf' 的内容应该类似于:

1[label /etc/supervisor/conf.d/booktype-instance1.conf]
2[program:celeryd]
3command=/var/www/booktype/instance1/manage.py celery worker --concurrency=10 -l info
4autostart=true
5autorestart=true
6startretries=3
7stderr_logfile=/var/www/booktype/instance1/logs/booktype-celery.error.log
8stdout_logfile=/var/www/booktype/instance1/logs/booktype-celery.output.log
9user=www-data

在用Ctrl+O保存booktype-instance1.conf文件并用Ctrl+X退出nano后,使用以下命令启用对supervisord配置的更新:

1sudo supervisorctl reread
2sudo supervisorctl update

也可以使用supervisorctl程序来检查supervisord是否运行celeryd:

1sudo supervisorctl

这个命令的输出应该类似于:

1[secondary_label Output of sudo supervisorctl]
2celeryd RUNNING pid 24182, uptime 0:13:19

您还应该看到以下快速:

1supervisor>

输入以下命令来退出supervisorctl:

1quit

结论

现在你和你的团队有所有你需要开始写和出版书籍的一切! 请阅读 官方图书类型手册的使用细节。

Published At
Categories with 技术
comments powered by Disqus