如何发布与BOOKTYPE书籍Debian 8

来自第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。

先决条件

要遵循本教程,您需要:

第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

文件末尾附近是一个带有客户端身份验证规则的部分。 它应该如下所示:

/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/bashwww-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

此文件的几个部分需要根据您的安装进行编辑。 首先,设置系统管理员的名称和电子邮件地址:

base.py
ADMINS = (
    # ('Your Name', 'sammy@example.com'),
)

设置活动配置文件以'dev'的发展,暂且:

base.py
PROFILE_ACTIVE = 'dev'

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

base.py
BOOKTYPE_SITE_NAME = 'Your Booktype Site'

输入在发送通知和报告时使用的电子邮件地址以及外发邮件服务器详细信息。 如果您在安装DropletPostfix的,你可以使用默认值localhost和端口25的电子邮件服务器:

base.py
DEFAULT_FROM_EMAIL = 'robot@example.com'
REPORT_EMAIL_USER = 'sammy@example.com'

EMAIL_HOST = 'localhost'
EMAIL_PORT = 25

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

base.py
MPDF_DIR = '/var/www/mpdf60/'

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

base.py
DEFAULT_PUBLISHER = "Your Publishing Company"

如果你只刚刚安装Redis的和不使用它为别的,你可以离开了默认REDIS STUFF ,因为它们。 如果您使用本地服务器的Redis有一个以上的应用程序,你需要的值更改REDIS_DB为非零数字。 默认REDIS_PASSWORD是没有的,但如果你的Redis服务器要求输入密码,就必须用单或双引号括起来。

base.py
# REDIS STUFF
REDIS_HOST = 'localhost'
REDIS_PORT = 6379
REDIS_DB = 0
REDIS_PASSWORD = None

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

base.py
TIME_ZONE = 'Europe/Berlin'

LANGUAGE_CODE = 'en-us'

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

保存并退出文件。

接下来,仍然在/var/www/booktype/instance1/目录,编辑dev.py其中包含了BOOKTYPE例如开发设置文件:

nano instance1_site/settings/dev.py

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

dev.py
THIS_BOOKTYPE_SERVER = 'booktype.example.com'
BOOKTYPE_URL='http://booktype.example.com'

设置数据库连接的名称,用户和密码。 用户名booktype-user和PostgreSQL数据库名booktype-db应该是你在第3步中使用的相同-建立数据库

它应该类似于以下示例:

dev.py
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

你应该改变,至少值ServerNameSetEnv HTTP_HOST来配置服务器和域名ServerAdmin到管理员的电子邮件地址:

/etc/apache2/sites-available/booktype-in​​stance1.conf
<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所有LocationDirectory节。 要取消对Require all granted行,在每一行的开头删除字符:

/etc/apache2/sites-available/booktype-in​​stance1.conf
     <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配置文件)。

通过单击Django调试工具栏可以隐藏它

注意:您可以在浏览器窗口的右上角然后从下拉菜单中选择一种界面语言。

登录使用您(前面创建的超级用户帐号细节BOOKTYPE admin在我们的例子)。

Booktype登录对话框

登录后,的gravatar与超级用户的电子邮件地址相关联的,如果有,将在人民我的个人资料框来显示。

Booktype主页

第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应类似于:

/etc/supervisor/conf.d/booktype-in​​stance1.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和退出nanoCtrl+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手册的使用细节。

赞(52) 打赏
未经允许不得转载:优客志 » 系统运维
分享到:

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

微信扫一扫打赏