Debian 8でBooktypeを使用して書籍を公開する方法

Sourcefabricの記事

前書き

Booktypeは、手元に置いておくことができる本物の見栄えの良い本を含む、本の制作に特化したコンテンツ管理システムです。

ブックストアまたはオープンWebに対応したPDF、EPUB、MOBI、XML、およびHTML形式のBooktype出力を生成できます。 作成者は、Wordの.docx形式またはEPUBとして既存の原稿をインポートできます。EPUBは、BooktypeのネイティブHTML章形式に変換され、http://www.alohaeditor.org [Aloha]で編集できます。

ブックタイプは、著者が本を作成しながらチャットやメモの共有、他の人からの支援を求めたり、貢献するプロジェクトを探すことができる社会環境でもあります。 BooktypeはPythonで記述されたDjangoアプリケーションであり、http://www.gnu.org/licenses/agpl-3.0.en.html [GNU Affero GPL]の下でライセンスされたフリーソフトウェアです。つまり、無料でダウンロードでき、使用およびカスタマイズ。

Booktypeは適切なGNU / LinuxまたはApple OS Xサーバーにインストールでき、原則としてWindowsでも実行できますが、このチュートリアルではDebian安定版バージョン8.2(Jessie)の推奨プラットフォームに焦点を当てています。 著者は、本を書いたり編集したりするときに、Mozilla FirefoxやGoogle Chromeなどの最新のWebブラウザーを備えた任意のデバイスを使用できます。

このチュートリアルでは、Booktypeのインストールを行います。これにより、印刷物とスクリーン用のPDFブック、デジタルデバイス用のEPUB、Webサイト用のXHTMLをすべて単一のソースから作成できます。 Booktypeの可能性をさらに深く知りたい場合は、ここから始めるのがよいでしょう。 このチュートリアルでは、Booktype 2.0について説明します。

前提条件

このチュートリアルを実行するには、次のものが必要です。

  • 新しいDebian 8.2ドロップレット(512 MB / 1 CPUドロップレットは機能しますが、パフォーマンスを向上させるには1 GB / 1 CPUドロップレットをお勧めします)

  • Debian 8での初期サーバー設定に示されている、Dropletの非ルートsudoユーザー

  • 登録済みドメイン名

  • ポイントブックタイプ。 ドロップレット(https://www.digitalocean.com/community/tutorials/how-to-set-up-a-host-name-with-digitalocean[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メールサーバーも利用できる必要があります。 最も簡単な送信メールサーバーのセットアップは、チュートリアルhttps://www.digitalocean.com/community/tutorials/how-to-install-and-configure-postfix-as-a-send-only-smtp-server-onに示されています-ubuntu-14-04 [Ubuntu 14.04でPostfixを送信専用SMTPサーバーとしてインストールおよび設定する方法]。 (Ubuntu 14.04ではなく)Debian 8.2の唯一の違いは、_ステップ1_で次のコマンドを入力する必要があることです。

sudo apt-get install postfix mailutils

のではなく:

sudo apt-get install mailutils

それ以外の場合、DebianのデフォルトメールサーバーEximがPostfixの代わりにインストールされます。 Eximは設定がより複雑であり、Booktypeから通知を送信する必要はありません。

ステップ2-PDFレンダラーのインストール(オプション)

印刷本を作成する場合は、BooktypeのHTML章を単一のPDFファイルに変換するレンダラーが必要になります。 プリプレス機能を幅広くサポートしているため、PHPアプリケーションhttp://www.mpdf1.com [mPDF 6.0]をお勧めします。 mPDFをインストールする前に、次のコマンドを使用して、PHP用のコマンドラインインタープリターとunzipユーティリティをインストールする必要があります。

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

プロンプトが表示されたら、データベースに設定するパスワードを入力します。 確認のために再入力する必要があります。

次に、 `+ booktype-db `という名前のデータベースを作成し、所有者として ` booktype-user `を設定します。 エンコーディングは、 ` -E +`オプションで示されるように、国際的なUTF-8文字セットである必要があります。

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

`+ nano `エディターでPostgreSQL設定ファイルをチェックして、データベース ` booktype-db +`への接続が許可されていることを確認します。

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 +`でnanoを終了します。

ステップ4-Gitを使用したBooktypeのインストール

`+ .deb `パッケージはhttp://apt.sourcefabric.org/[Sourcefabric apt server]から入手できますが、GitHubには利用可能なBooktypeの最新バージョンが含まれています。 また、Gitを使用すると、リリース間のバグ修正の追跡や、Booktypeプロジェクトへのプルリクエストの提供が容易になります。 Booktype 2.0のコピーをgitリポジトリから ` / 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サーバーは、複数の_instances_をホストできます。各instancesには、作成者、グループ、および書籍の独自のコミュニティがあります。 これにより、一般的なプラットフォーム上で無関係な著者と本プロジェクトを一緒に投げ込むのではなく、特定の利益のために別々の環境を作成できます。

`+ / var / www / booktype / +`などの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

次のように、「+ www-data 」ユーザーの「 / usr / sbin / nologin 」を「 / bin / bash +」に置き換えます。

www-data:x:33:33:www-data:/var/www:

`+ Ctrl + X +`でnanoを終了し、プロンプトが表示されたらファイルを保存します。

次に、 `+ www-data`に切り替えてBook Typeインスタンスの作成を開始します。

sudo su www-data

`+ / var / www / booktype / instance1 `ディレクトリに、 ` dev `プロファイルと ` 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

このファイルには、インストールに合わせて編集する必要があるセクションがいくつかあります。 最初に、システム管理者の名前とメールアドレスを設定します。

base.py

ADMINS = (
   # ('', ''),
)

とりあえず、開発のためにアクティブなプロファイルを `+ 'dev' +`に設定します。

base.py

PROFILE_ACTIVE = 'dev'

Booktypeインスタンスのサイト名を入力してください:

base.py

BOOKTYPE_SITE_NAME = ''

通知とレポートを送信するときに使用する電子メールアドレスと、送信メールサーバーの詳細を入力します。 ドロップレットにPostfixをインストールしている場合、デフォルト値の「+ localhost」とポート「25」をメールサーバーに使用できます。

base.py

DEFAULT_FROM_EMAIL = ''
REPORT_EMAIL_USER = ''

EMAIL_HOST =
EMAIL_PORT =

mPDFのインストールを選択した場合、インストールディレクトリの場所を入力します。

base.py

MPDF_DIR = ''

著者によって何も指定されていない場合に使用するデフォルトのパブリッシャーの名前を入力します。

base.py

DEFAULT_PUBLISHER = ""

Redisをインストールしたばかりで、それ以外のものには使用しない場合は、デフォルトの `+ REDIS STUFF `をそのまま使用できます。 ローカルRedisサーバーを使用するアプリケーションが複数ある場合、 ` REDIS_DB `の値をゼロ以外の値に変更する必要があります。 ` REDIS_PASSWORD +`のデフォルトはNoneですが、Redisサーバーでパスワードが必要な場合は、一重引用符または二重引用符で囲む必要があります。

base.py

# REDIS STUFF
REDIS_HOST = 'localhost'
REDIS_PORT = 6379
REDIS_DB =
REDIS_PASSWORD =

インスタンスのタイムゾーンとデフォルトのインターフェース言語コードを設定します。

base.py

TIME_ZONE = ''

LANGUAGE_CODE = ''

著者は、インストールされているBooktypeのローカライズ(フランス語やスペイン語など)から独自のインターフェイス言語を選択できます。

ファイルを保存して終了します。

次に、まだ `+ / var / www / booktype / instance1 / `ディレクトリにいる間に、Booktypeインスタンスの開発設定を含む ` dev.py +`ファイルを編集します。

nano instance1_site/settings/dev.py

Booktype開発サーバーのドメイン名とURLを入力します。

dev.py

THIS_BOOKTYPE_SERVER = ''
BOOKTYPE_URL=''

データベース接続の名前、ユーザー、およびパスワードを設定します。 ユーザー名 `+ booktype-user `およびPostgreSQLデータベース名 ` booktype-db +`は、_ステップ3-データベースのセットアップ_で使用したものと同じでなければなりません。

次の例のようになります。

dev.py

DATABASES = {'default':
                  {'ENGINE': 'django.db.backends.postgresql_psycopg2',
                   'NAME': '',
                   'USER': '',
                   'PASSWORD': '',
                   'HOST': 'localhost',
                   'PORT': ''
                  }
           }

`+ Ctrl + O `を押してファイルを保存し、 ` Ctrl + X `を押して ` nano +`エディターを終了します。

環境変数をロードします。

. ./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):

プロンプトに従って必要な情報を入力します。

Username (leave blank to use 'www-data'):
E-mail address: ``
Password:
Password (again):
Superuser created successfully.

Booktypeコンポーネントアプリケーションから静的ファイルを1つのディレクトリに収集します。

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

これでインストールは完了です。 次のコマンドを使用して、ターミナルで通常の非ルート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 +`を管理者のメールアドレスに変更する必要があります。

/etc/apache2/sites-available/booktype-in​​stance1.conf

<VirtualHost *:80>

    # Change the following three lines for your server
    ServerName
    SetEnv HTTP_HOST ""
    ServerAdmin

Debian 8.2はApache 2.4を搭載しているため、すべての `+ Location `および ` Directory `スタンザに対して、 ` Require all granted `のコメントを外す必要があります。 ` 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

これで、のようなVirtualHost設定で定義された `+ ServerName `のURLでBooktypeインスタンスを閲覧できるはずです。 Djangoデバッグツールバーの上部をクリックして非表示にします( ` prod +`プロファイルを使用している場合、このツールバーは表示されません)。

image:https://assets.digitalocean.com/articles/booktype/booktype-debug-toolbar.png [Djangoデバッグツールバーは、クリックすると非表示にできます]

前に作成したスーパーユーザーアカウントの詳細(この例では + admin +)を使用してBooktypeにサインインします。

image:https://assets.digitalocean.com/articles/booktype/booktype-login.png [ブックタイプログインダイアログ]

サインイン後、スーパーユーザーの電子メールアドレスに関連付けられているグラバターがあれば、_People_ボックスと_My Profile_ボックスに表示されます。

image:https://assets.digitalocean.com/articles/booktype/booktype-homepage.png [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

10人のワーカーを持つ `+ / var / www / booktype / instance1 `の最初のBooktypeインスタンスの場合、ファイル ` booktype-in​​stance1.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

`+ Ctrl + O `で ` booktype-in​​stance1.conf `ファイルを保存し、 ` Ctrl + X `で ` nano `を終了した後、コマンドで ` 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

結論

これで、あなたとあなたのチームは、一緒に本を書き、出版するために必要なすべてを手に入れました! 使用方法の詳細については、http://sourcefabric.booktype.pro/booktype-20-for-authors-and-publishers/ [公式Booktypeマニュアル]をお読みください。