Sourcefabricからの記事

序章

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

書店やオープンウェブですぐに使えるPDF、EPUB、MOBI、XML、HTML形式のBooktype出力を作成できます。 著者は、既存の原稿をWordの.docx形式またはEPUBとしてインポートできます。これらは、Alohaで編集するためにBooktypeのネイティブHTMLチャプター形式に変換されます。

Booktypeは、著者が本を作成しながらチャットしたりメモを共有したり、他の人に支援を求めたり、貢献するプロジェクトを探したりできる社会環境でもあります。 BooktypeはPythonで記述されたDjangoアプリケーションであり、 GNU Affero GPL の下でライセンスされているフリーソフトウェアです。つまり、自由にダウンロード、再利用、カスタマイズできます。

Booktypeは、適切なGNU/LinuxまたはAppleOSXサーバーにインストールでき、原則としてWindowsでも実行できますが、このチュートリアルでは、Debian安定バージョン8.2(Jessie)の推奨プラットフォームに焦点を当てています。 書籍の執筆および編集中、作成者はMozillaFirefoxやGoogleChromeなどの最新のWebブラウザを備えた任意のデバイスを使用できます。

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

前提条件

このチュートリアルに従うには、次のものが必要です。

  • 新しいDebian8.2ドロップレット(512 MB / 1 CPUドロップレットは機能しますが、パフォーマンスを向上させるために1 GB / 1 CPUドロップレットをお勧めします)
  • Debian 8を使用した初期サーバーセットアップに示されているように、Droplet上のroot以外のsudoユーザー
  • 登録ドメイン名
  • booktype。yourdomainname.comをドロップレットにポイントします( DigitalOcean でホスト名を設定する方法では、これを設定する方法について説明しています)。

ステップ1—依存関係を設定する

Booktypeをインストールする前に、まず開発パッケージをインストールする必要があります。RabbitMQサーバー、Redisサーバー、PostgreSQLデータベース管理システム、整頓された構文チェッカー、およびWSGIモジュールを備えたApacheWebサーバーです。

  1. 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メールサーバーも利用可能である必要があります。 最も簡単な送信メールサーバーのセットアップは、チュートリアル Ubuntu14.04でPostfixを送信専用SMTPサーバーとしてインストールおよび構成する方法に示されています。 Debian 8.2(Ubuntu 14.04ではなく)の唯一の違いは、ステップ1で次のコマンドを入力する必要があることです。

  1. sudo apt-get install postfix mailutils

それよりも:

  1. sudo apt-get install mailutils

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

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

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

  1. sudo apt-get install php5-cli unzip

次に、mPDFをダウンロードし、ディレクトリに抽出します /var/www/:

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

ファイルが非常に大きいため、ダウンロードに時間がかかる場合があります。

最後に、mPDFの一時ディレクトリの所有者をApacheWebサーバーユーザーに変更します www-data:

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

ステップ3—データベースのセットアップ

次に必要なのは、利用できるデータベースです。 次のコマンドを入力して、PostgreSQLユーザーを作成します booktype-user:

  1. sudo -u postgres createuser -SDRP booktype-user

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

注:パスワードを安全な場所に書き留めてください。 ステップ5—ブックタイプインスタンスの作成で再度必要になります。

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

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

注: PostgreSQLユーザーを作成するためのコマンドラインオプションは文字O(-O)、数字のゼロではありません。

注:別のデータベース名または所有者を使用している場合は、それを書き留めてください。 後でステップ5—編集時にブックタイプインスタンスを作成するときに必要になります dev.py.

データベースへの接続を確認します booktype-db PostgreSQL構成ファイルをチェックすることで許可されます nano 編集者:

  1. 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へのすべてのローカル接続がこのサーバーで許可されていることを示しているので、準備は完了です。 nanoを終了します Ctrl+X.

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

ながら .deb パッケージはSourcefabricapt server から入手できます。GitHubには、入手可能な最新バージョンのBooktypeが含まれています。 Gitを使用すると、リリース間のバグ修正を追跡したり、Booktypeプロジェクトにプルリクエストを提供したりすることも簡単になります。 Booktype2.0のコピーをgitリポジトリから /usr/local/src/booktype/ ディレクトリ:

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

次に、開発インストールと本番インストールの両方の要件をインストールして、次のいずれかを使用できるようにします。

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

ステップ5—ブックタイプインスタンスを作成する

1つのBooktypeサーバーで、複数のインスタンスをホストできます。各インスタンスには、著者、グループ、および書籍の独自のコミュニティがあります。 これにより、関係のない作成者を投げたり、汎用プラットフォームでプロジェクトをまとめたりするのではなく、特定の関心事のために個別の環境を作成できます。

次のようなBooktypeインスタンスのディレクトリを作成します。 /var/www/booktype/:

  1. sudo mkdir /var/www/booktype/

それが所有されていることを確認してください www-data Webサーバーを実行するユーザー:

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

デフォルトでは、Debian8.2はユーザーを許可しません www-data コマンドを入力します。 次の行を編集する必要があります www-data の中に /etc/passwd 続行するためのファイル:

  1. sudo nano /etc/passwd

交換 /usr/sbin/nologin/bin/bash のために www-data 次のようにユーザー:

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

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

今すぐに切り替えます www-data Booktypeインスタンスの作成を開始するには:

  1. sudo su www-data

を使用して最初のBooktypeインスタンスを作成します dev プロファイルと postgresql のデータベース /var/www/booktype/instance1 ディレクトリ:

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

作成したばかりのインスタンスディレクトリに移動し、 base.py インスタンスの基本設定を含むファイル:

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

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

base.py
ADMINS = (
    # ('Your Name', '[email protected]'),
)

アクティブなプロファイルをに設定します 'dev' 開発のために、当分の間:

base.py
PROFILE_ACTIVE = 'dev'

Booktypeインスタンスのサイト名を入力します。

base.py
BOOKTYPE_SITE_NAME = 'Your Booktype Site'

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

base.py
DEFAULT_FROM_EMAIL = '[email protected]'
REPORT_EMAIL_USER = '[email protected]'

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 はNoneですが、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インスタンスの開発設定を含むファイル:

  1. 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 開発プロファイルをテストに使用できるようにしながら、異なるドメイン名とデータベースを使用してプロファイルを作成します。

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

  1. . ./booktype.env

データベースを初期化します。

  1. ./manage.py syncdb

プロセスの最後に、次のように表示されます。 yes と答えて、スーパーユーザーを作成します。

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: `[email protected]`
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アプリケーションを取得し、それらの権限を更新してから、登録済みおよび匿名ユーザーのデフォルトの役割を更新します。

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

これでインストールは完了です。 次のコマンドを使用して、ターミナルで通常の非rootsudoユーザープロンプトに戻ります。

  1. exit

としてコマンドを入力しなくなりました www-data ユーザー。

ステップ6—Apacheの構成

をコピーします wsgi.apache 仮想ホストのApache構成ディレクトリへのインスタンスの作成中に生成されたファイル:

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

インスタンスの仮想ホスト構成ファイルを編集します。

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

少なくとも次の値を変更する必要があります ServerNameSetEnv HTTP_HOST サーバー用に構成されたドメイン名に ServerAdmin 管理者の電子メールアドレスへ:

/etc/apache2/sites-available/booktype-instance1.conf
<VirtualHost *:80>

     # Change the following three lines for your server
     ServerName booktype.example.com
     SetEnv HTTP_HOST "booktype.example.com"
     ServerAdmin [email protected]

Debian8.2はApache2.4を備えているため、コメントを外す必要があります Require all granted すべてのために LocationDirectory スタンザ。 コメントを外すには Require all granted 行の場合、各行の先頭にある文字を削除します。

/etc/apache2/sites-available/booktype-instance1.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仮想ホストを有効にします。

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

次のコマンドで変更を有効にするには、ApacheWebサーバーを再起動します。

  1. sudo service apache2 restart

これで、Booktypeインスタンスを次のURLで参照できるようになります。 ServerName booktype.example.comなどのVirtualHost構成で定義されます。 Djangoデバッグツールバーの上部をクリックして非表示にします(このツールバーは、 prod プロフィール)。

注:ブラウザウィンドウの右上隅にあるドロップダウンメニューからインターフェイス言語を選択できます。

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

サインインすると、スーパーユーザーのメールアドレスに関連付けられているGravatarがPeopleボックスとMyProfileボックスに表示されます。

ステップ7—スーパーバイザーと一緒にCeleryを実行する

Celery は、Booktypeサーバーによって使用されるタスクキューです。 Booktypeをインストールしたら、クラッシュや再起動が発生した場合にCeleryワーカーを実行し続けるためのプロセスモニターが必要になる可能性があります。 インストールできます supervisord コマンドで:

  1. sudo apt-get install supervisor

The supervisord プログラムはインストール後に自動的に起動し、サーバーの次回の再起動時に自動的に起動するように構成されています。

次に、次のコマンドを使用してBooktypeとCeleryで使用する構成ファイルを作成する必要があります。

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

の最初のBooktypeインスタンスの場合 /var/www/booktype/instance1 10人の労働者で、ファイルの内容 booktype-instance1.conf 次のようになります。

/etc/supervisor/conf.d/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 終了します nanoCtrl+X、への更新を有効にします supervisord コマンドを使用した構成:

  1. sudo supervisorctl reread
  2. sudo supervisorctl update

The supervisorctl プログラムを使用して、それを確認することもできます supervisord が走っています celeryd:

  1. sudo supervisorctl

このコマンドの出力は次のようになります。

Output of sudo supervisorctl
celeryd RUNNING pid 24182, uptime 0:13:19

次のプロンプトも表示されます。

supervisor>

次のコマンドを入力して終了します supervisorctl:

  1. quit

結論

これで、あなたとあなたのチームは、一緒に本を書き、出版し始めるために必要なすべてを手に入れました! 使用方法の詳細については、公式ブックタイプマニュアルをお読みください。