Booktype是一个专门用于制作书籍的内容管理系统,包括您可以掌握的真实,美观的书籍。
您可以生成PDF,EPUB,MOBI,XML和HTML格式的Booktype输出,可用于书店或开放式Web。作者可以使用Word的.docx格式或EPUB导入现有稿件,这些稿件将转换为Booktype的本机HTML章节格式,以便使用Aloha进行编辑。
Booktype也是一个社交环境,作者可以在制作书籍,寻求他人帮助或寻找有助于他们的项目的同时聊天和分享笔记。Booktype是一个用Python编写的Django应用程序,是GNU Affero GPL许可的自由软件,这意味着它可以免费下载,重复使用和自定义。
Booktype可以安装在任何合适的GNU / Linux或Apple OS X服务器上,原则上也可以在Windows上运行,但本教程重点介绍Debian stable 8.2版(Jessie)的推荐平台。在编写和编辑书籍时,作者可以使用任何带有现代Web浏览器的设备,如Mozilla Firefox或Google Chrome。
在本教程中,我们将完成Booktype的安装,这将使您和您的同事能够为您的网站生成用于打印和屏幕的PDF书籍,用于数字设备的EPUB以及用于您网站的XHTML - 所有这些都来自单一来源。如果您想深入了解Booktype的可能性,这是一个很好的起点。本教程涵盖Booktype 2.0。
要学习本教程,您需要:
sudo
命令的非root账号的Debian 8服务器,并且已开启防火墙。没有服务器的同学可以在这里购买,不过我个人更推荐您使用免费的腾讯云开发者实验室进行试验,学会安装后再购买服务器。在安装Booktype之前,首先需要安装开发包:RabbitMQ服务器,Redis服务器,PostgreSQL数据库管理系统,整洁的语法检查程序以及带有WSGI模块的Apache Web服务器:
sudo 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邮件服务器。Debian 8.2(而不是Ubuntu 14.04)的唯一区别是在步骤1中你应该输入命令:
sudo apt-get install postfix mailutils
而不是:
sudo apt-get install mailutils
否则将安装Debian的默认邮件服务器Exim,代替Postfix。Exim配置起来比较复杂,不需要从Booktype发送通知。
如果要生成印刷书籍,则需要渲染器将Booktype的HTML章节转换为单个PDF文件。建议使用PHP应用程序mPDF 6.0,因为它广泛支持印前功能。在安装mPDF之前,需要使用以下命令安装PHP的命令行解释器和解压缩实用程序:
sudo apt-get install php5-cli unzip
接下来,下载mPDF,将其解压缩到/var/www/
目录中:
sudo wget http://mpdf1.com/repos/MPDF60.zip
sudo unzip MPDF60.zip -d /var/www/
该文件非常大,因此下载可能需要一些时间。
最后,将mPDF的临时目录的所有者更改为Apache Web服务器用户www-data
:
cd /var/www/mpdf60/
sudo chown www-data.www-data graph_cache/ tmp/ ttfontdata/
您需要的下一件事是可用的数据库。输入以下命令以创建PostgreSQL用户booktype-user
:
sudo -u postgres createuser -SDRP booktype-user
出现提示时,输入要在数据库中设置的密码。您需要重新输入以进行确认。
注意:在安全的地方记下密码。您将在步骤5 - 创建书型实例中再次使用它。
然后创建一个名为booktype-db
的数据库,设置booktype-user
为所有者。编码应该是国际UTF-8字符集,如-E
选项所示。
sudo -u postgres createdb -E utf8 -O booktype-user booktype-db
注意:创建PostgreSQL用户的命令行选项是字母O(-O
),而不是数字零。
注意:如果使用其他数据库名称或所有者,请将其写下来。稍后您将在步骤5 -编辑dev.py
时创建书型实例时使用它。
通过使用nano
编辑器检查PostgreSQL配置文件,确认允许与数据库booktype-db
的连接:
sudo nano /etc/postgresql/9.4/main/pg_hba.conf
在文件末尾附近是具有客户端身份验证规则的部分。它应该如下所示:
# TYPE DATABASE USER ADDRESS METHOD
# "local" is for Unix domain socket connections only
local all all peer
# IPv4 local connections:
host all all 127.0.0.1/32 md5
# IPv6 local connections:
host all all ::1/128 md5
上面示例中的部分表示此服务器上允许通过IPv4和IPv6与PostgreSQL的所有本地连接,因此我们很高兴。用Ctrl+X
退出nano
。
虽然Sourcefabric apt服务器提供了一个.deb
软件包,但GitHub包含最新版本的Booktype。使用Git还可以更轻松地跟踪版本之间的错误修复或向Booktype项目提供拉取请求。从git存储库下载Booktype 2.0的副本到/usr/local/src/booktype/
目录:
sudo mkdir /usr/local/src/booktype/
sudo git clone https://github.com/sourcefabric/Booktype.git --branch 2.0 --depth 1 /usr/local/src/booktype/
接下来,安装开发和生产安装的要求,以便您可以使用以下任一项:
sudo pip install -r /usr/local/src/booktype/requirements/dev.txt
sudo pip install -r /usr/local/src/booktype/requirements/prod.txt
单个Booktype服务器可以托管多个实例,每个实例都有自己的作者,组和书籍社区。这使您能够为特定兴趣创建单独的环境,而不是将无关的作者和书籍项目放在一个通用平台上。
为Booktype实例创建一个目录,例如/var/www/booktype/
:
sudo mkdir /var/www/booktype/
确保它由运行Web服务器的www-data
用户拥有:
sudo chown www-data:www-data /var/www/booktype/
默认情况下,Debian 8.2不允许用户www-data
输入命令。您将需要编辑/etc/passwd
的文件中的行www-data
以继续:
sudo nano /etc/passwd
用/bin/bash
更换/usr/sbin/nologin
的www-data
用户,如下所示:
www-data:x:33:33:www-data:/var/www:/bin/bash
使用Ctrl+X
退出nano,在提示时保存文件。
现在切换到www-data
开始创建Booktype实例:
sudo su www-data
使用dev
配置文件和/var/www/booktype/instance1
目录中的postgresql
数据库创建第一个Booktype实例:
cd /usr/local/src/booktype/scripts/
./createbooktype -p dev --check-versions --database postgresql /var/www/booktype/instance1
切换到刚刚创建的实例目录,并编辑包含实例基本设置的base.py
文件:
cd /var/www/booktype/instance1/
nano instance1_site/settings/base.py
此文件的几个部分需要进行编辑以适合您的安装。首先,设置系统管理员的名称和电子邮件地址:
ADMINS = (
# ('Your Name', 'sammy@example.com'),
)
暂时将活动配置文件设置为'dev'
来开发:
PROFILE_ACTIVE = 'dev'
输入Booktype实例的站点名称:
BOOKTYPE_SITE_NAME = 'Your Booktype Site'
输入发送通知和报告时使用的电子邮件地址以及发送邮件服务器详细信息。如果您已在Droplet上安装了Postfix,则可以使用电子邮件服务器的默认值localhost
和端口25
:
DEFAULT_FROM_EMAIL = 'robot@example.com'
REPORT_EMAIL_USER = 'sammy@example.com'
EMAIL_HOST = 'localhost'
EMAIL_PORT = 25
如果选择安装mPDF,请输入安装目录的位置:
MPDF_DIR = '/var/www/mpdf60/'
如果作者未指定,则输入要使用的默认发布者的名称:
DEFAULT_PUBLISHER = "Your Publishing Company"
如果您刚刚安装了Redis并且不将其用于其他任何内容,则可以保留默认值REDIS STUFF
。如果您有多个使用本地Redis服务器的应用程序,则需要将值更改REDIS_DB
为零以外的数字。默认REDIS_PASSWORD
值为None,但如果Redis服务器需要密码,则必须用单引号或双引号括起来。
# REDIS STUFF
REDIS_HOST = 'localhost'
REDIS_PORT = 6379
REDIS_DB = 0
REDIS_PASSWORD = None
设置实例时区和默认界面语言代码:
TIME_ZONE = 'Europe/Berlin'
LANGUAGE_CODE = 'en-us'
作者将能够从已安装的Booktype本地化(例如法语或西班牙语)中选择自己的界面语言。
保存并退出该文件。
接下来,在仍在/var/www/booktype/instance1/
目录中的同时,编辑dev.py
包含Booktype实例的开发设置的文件:
nano instance1_site/settings/dev.py
输入Booktype开发服务器的域名和URL:
THIS_BOOKTYPE_SERVER = 'booktype.example.com'
BOOKTYPE_URL='http://booktype.example.com'
设置数据库连接的名称,用户和密码。用户名booktype-user
和PostgreSQL数据库名称booktype-db
应与您在步骤3 - 设置数据库中使用的名称相同。
它应该类似于以下示例:
DATABASES = {'default':
{'ENGINE': 'django.db.backends.postgresql_psycopg2',
'NAME': 'booktype-db',
'USER': 'booktype-user',
'PASSWORD': 'booktype-password',
'HOST': 'localhost',
'PORT': ''
}
}
按Ctrl+O
保存文件并Ctrl+X
退出nano
编辑器。
注意:当您的Booktype实例准备好部署时,您将能够切换到prod
具有不同域名和数据库的配置文件,同时保持您的开发配置文件可用于测试。
加载环境变量:
. ./booktype.env
初始化数据库:
./manage.py syncdb
在该过程结束时,您将看到以下内容。回答是创建超级用户:
You have installed Django's auth system, and don't have any superusers defined.
Would you like to create one now? (yes/no): yes
根据提示输入所需信息:
Username (leave blank to use 'www-data'): admin
E-mail address: `sammy@example.com`
Password:
Password (again):
Superuser created successfully.
将Booktype组件应用程序中的静态文件收集到一个目录中。
./manage.py collectstatic
服务器将响应:
You have requested to collect static files at the destination
location as specified in your settings:
/var/www/booktype/instance1/static
This will overwrite existing files!
Are you sure you want to do this?
Type 'yes' to continue, or 'no' to cancel:
键入yes
并ENTER
按下键后,输入以下命令以获取所有已安装的Django应用程序并更新其权限,然后更新已注册和匿名用户的默认角色:
./manage.py update_permissions
./manage.py update_default_roles
安装现已完成。使用以下命令返回终端中正常的非root sudo用户提示符:
exit
您不再以www-data
用户身份输入命令。
将创建实例期间生成的wsgi.apache
文件复制到虚拟主机的Apache配置目录:
sudo cp /var/www/booktype/instance1/conf/wsgi.apache /etc/apache2/sites-available/booktype-instance1.conf
编辑实例的虚拟主机配置文件:
sudo nano /etc/apache2/sites-available/booktype-instance1.conf
你应该对配置的服务器和域名ServerAdmin
,以管理员的电子邮件地址改变值ServerName
和SetEnv HTTP_HOST
:
<VirtualHost *:80>
# Change the following three lines for your server
ServerName booktype.example.com
SetEnv HTTP_HOST "booktype.example.com"
ServerAdmin sammy@example.com
因为Debian 8.2具有Apache 2.4,所以你需要取消注释所有Location
和Directory
节的Require all granted
。要取消注释Require all granted
行,请删除每行开头的#字符:
<Location "/">
#Require all granted
Options FollowSymLinks
</Location>
Alias /static/ "/var/www/booktype/instance1/static/"
<Directory "/var/www/booktype/instance1/static/">
#Require all granted
Options -Indexes
</Directory>
Alias /data/ "/var/www/booktype/instance1/data/"
<Directory "/var/www/booktype/instance1/data/">
#Require all granted
Options -Indexes
</Directory>
按Ctrl+O
保存文件并Ctrl+X
退出nano
编辑器。
然后禁用默认的Apache配置,并使用以下命令为实例启用Booktype虚拟主机:
sudo a2dissite 000-default.conf
sudo a2ensite booktype-instance1.conf
重新启动Apache Web服务器以使用以下命令启用更改:
sudo service apache2 restart
您现在应该能够浏览您在网址ServerName
在虚拟主机配置如booktype.example.com中定义的BOOKTYPE实例。单击Django调试工具栏的顶部以隐藏它(使用配置prod
文件时,此工具栏不会出现)。
注意:您可以从浏览器窗口右上角的下拉菜单中选择界面语言。
使用您之前创建的超级用户帐户详细信息登录Booktype(在我们的示例中是admin
)。
登录后,与超级用户电子邮件地址关联的gravatar(如果有)将显示在“ 人员”和“ 我的个人资料”框中。
Celery是Booktype服务器使用的任务队列。安装Booktype后,您可能需要一个进程监视器来保持Celery工作程序在崩溃或重新启动时运行。您可以使用以下命令安装supervisord
:
sudo apt-get install supervisor
该supervisord
程序在安装后自动启动,并配置为在服务器下次重新启动时自动启动。
现在,我们必须使用以下命令创建一个配置文件以与Booktype和Celery一起使用:
sudo nano /etc/supervisor/conf.d/booktype-instance1.conf
对于/var/www/booktype/instance1
包含10个worker 的第一个Booktype实例,该文件的内容booktype-instance1.conf
应类似于:
[program:celeryd]
command=/var/www/booktype/instance1/manage.py celery worker --concurrency=10 -l info
autostart=true
autorestart=true
startretries=3
stderr_logfile=/var/www/booktype/instance1/logs/booktype-celery.error.log
stdout_logfile=/var/www/booktype/instance1/logs/booktype-celery.output.log
user=www-data
保存后booktype-instance1.conf
的文件与Ctrl+O
和退出nano
与Ctrl+X
,使更新到supervisord
与命令配置:
sudo supervisorctl reread
sudo supervisorctl update
该supervisorctl
程序还可用于检查supervisord
正在运行celeryd
:
sudo supervisorctl
此命令的输出应类似于:
celeryd RUNNING pid 24182, uptime 0:13:19
您还应该看到以下提示:
supervisor>
键入以下命令以退出supervisorctl
:
quit
现在,您和您的团队拥有开始书写和出版书籍所需的一切!有关使用详情,请阅读官方Booktype手册。
更多Debian教程请前往腾讯云+社区学习更多知识。
参考文献:《How To Publish Books with Booktype on Debian 8》
原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。
如有侵权,请联系 cloudcommunity@tencent.com 删除。
原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。
如有侵权,请联系 cloudcommunity@tencent.com 删除。