来自第Sourcefabric
介绍
BOOKTYPE是用于生产书籍,包括真实的,好看的书就可以在你的手中持有专门的内容管理系统。
您可以生成PDF,EPUB,MOBI,XML和HTML格式的Booktype输出,可用于图书商店或开放网络。 作者可以在Word的格式.DOCX或作为的EPUB,会转换为BOOKTYPE的本地HTML章节格式与编辑导入现有的手稿阿罗哈 。
Booktype也是一个社会环境,作者可以在制作书籍,寻求其他人的帮助或寻找项目作出贡献时聊天和分享笔记。 BOOKTYPE是用Python编写的Django应用程序,并且下的自由软件许可采用GNU Affero GPL ,这意味着它可以自由下载,再使用和定制。
Booktype可以安装在任何合适的GNU / Linux或Apple OS X服务器上,原则上可以在Windows上运行,但本教程重点介绍Debian稳定版本8.2(Jessie)的推荐平台。 在编写和编辑书籍时,作者可以使用任何带有现代网络浏览器的设备,例如Mozilla Firefox或Google Chrome。
在本教程中,我们将安装Booktype,这将使您和您的同事能够从单一来源生成PDF书籍用于打印和屏幕,数字设备的EPUB和您的网站的XHTML。 如果你想更深入地了解Booktype的可能性,这是一个好的开始的地方。 本教程涵盖Booktype 2.0。
先决条件
要遵循本教程,您需要:
- 一个新的Debian 8.2 Droplet(一个512 MB / 1 CPU Droplet将工作,但建议1 GB / 1 CPU Droplet更好的性能)
- 在Droplet上的非root用户Sudo所示, 初始服务器设置与Debian 8
- 注册域名
- 点BOOKTYPE。yourdomainname.com你Droplet( 如何建立一个主机名与DigitalOcean介绍如何设置起来。)
第1步 - 设置依赖关系
在安装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邮件服务器。 最简单的发送邮件服务器设置显示在教程如何安装和配置Postfix的作为在Ubuntu 14.04一个只发送SMTP服务器 。 为Debian 8.2(而不是Ubuntu的14.04),唯一的区别是,在第1步中,你应该输入以下命令:
sudo apt-get install postfix mailutils
而不是:
sudo apt-get install mailutils
否则将安装Debian的默认邮件服务器Exim,以代替Postfix。 Exim配置更复杂,并且不需要从Booktype发送通知。
第2步 - 安装PDF渲染器(可选)
如果要生成打印书籍,则需要一个渲染器将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/
第3步 - 设置数据库
接下来你需要的是一个可用的数据库。 输入以下命令来创建PostgreSQL用户booktype-user
:
sudo -u postgres createuser -SDRP booktype-user
出现提示时,输入您希望在数据库中设置的密码。 您将需要重新输入以进行确认。
注意:在安全的地方写下密码。 你将再次需要它在第5步-创建一个实例BOOKTYPE。
然后创建一个名为数据库booktype-db
,设置booktype-user
为所有者。 编码应该是国际UTF-8字符集,与指示-E
选项。
sudo -u postgres createdb -E utf8 -O booktype-user booktype-db
注意:命令行选项来创建一个PostgreSQL用户是字母O( -O
),而不是数量为零。
注:如果您使用不同的数据库名称或所有者,它写下来。 你需要它后来在第5步-编辑时创建一个实例BOOKTYPE dev.py
。
确认到数据库的连接booktype-db
通过检查与PostgreSQL的配置文件允许nano
编辑器:
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
。
第4步 - 使用Git安装Booktype
虽然.deb
软件包可从Sourcefabric容易服务器 ,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
第5步 - 创建书本实例
单BOOKTYPE服务器可以承载多个实例 ,每个都有自己的作者,团体和书籍的社区。 这使您能够为特定兴趣创建单独的环境,而不是在通用平台上将不相关的作者和图书项目一起丢弃。
创建用于BOOKTYPE实例如目录/var/www/booktype/
:
sudo mkdir /var/www/booktype/
请确保它是由拥有www-data
运行于Web服务器用户:
sudo chown www-data:www-data /var/www/booktype/
缺省情况下,的Debian 8.2不允许用户www-data
输入命令。 您将需要编辑的行www-data
在/etc/passwd
的文件以继续:
sudo nano /etc/passwd
替换/usr/sbin/nologin
与/bin/bash
为www-data
的用户,如下所示:
www-data:x:33:33:www-data:/var/www:/bin/bash
退出纳米Ctrl+X
,出现提示时保存文件。
现在切换到www-data
开始创建BOOKTYPE实例:
sudo su www-data
创建具有第一BOOKTYPE实例dev
配置文件和postgresql
数据库中/var/www/booktype/instance1
目录:
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'
输入在发送通知和报告时使用的电子邮件地址以及外发邮件服务器详细信息。 如果您在安装DropletPostfix的,你可以使用默认值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
是没有的,但如果你的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
的用户。
第6步 - 配置Apache
复制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
你应该改变,至少值ServerName
和SetEnv HTTP_HOST
来配置服务器和域名ServerAdmin
到管理员的电子邮件地址:
<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,您必须解除Require all granted
所有Location
和Directory
节。 要取消对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
您现在应该能够浏览BOOKTYPE例如,在的URL ServerName
的虚拟主机配置中定义,如booktype.example.com。 点击Django的调试工具栏的顶部以隐藏它(使用时,此工具栏将不存在prod
配置文件)。
注意:您可以在浏览器窗口的右上角然后从下拉菜单中选择一种界面语言。
登录使用您(前面创建的超级用户帐号细节BOOKTYPE admin
在我们的例子)。
登录后,的gravatar与超级用户的电子邮件地址相关联的,如果有,将在人民和我的个人资料框来显示。
第7步 - 与主管运行Celery
Celery是BOOKTYPE服务器使用的任务队列。 一旦安装Booktype,您可能需要一个进程监视器来保持Celery工作人员在任何崩溃或重新启动的情况下运行。 您可以安装supervisord
使用以下命令:
sudo apt-get install supervisor
该supervisord
程序在安装后自动启动,并配置为在服务器上的下次重新启动时自动启动。
现在,我们必须创建一个配置文件以使用Booktype和Celery命令:
sudo nano /etc/supervisor/conf.d/booktype-instance1.conf
在第一BOOKTYPE例如/var/www/booktype/instance1
十个工人,文件的内容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
此命令的输出应类似于:
Output of sudo supervisorctlceleryd RUNNING pid 24182, uptime 0:13:19
您还应该看到以下提示:
supervisor>
键入以下命令从出口supervisorctl
:
quit
结论
现在你和你的团队拥有你一起开始写作和出版书籍所需的一切! 请阅读官方BOOKTYPE手册的使用细节。